diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 447d17d5160111..8d0f6ac9192b2c 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "coverlet.console": { - "version": "3.1.0", + "version": "3.1.2", "commands": [ "coverlet" ] @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "1.0.0-prerelease.22101.2", + "version": "1.0.0-prerelease.22110.1", "commands": [ "xharness" ] diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 99ebe3b43d0cf8..22dc0656dabecc 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -22,7 +22,7 @@ jobs: if (context.eventName !== "issue_comment") throw "Error: This action only works on issue_comment events."; // extract the target branch name from the trigger phrase containing these characters: a-z, A-Z, digits, forward slash, dot, hyphen, underscore - const regex = /\/backport to ([a-zA-Z\d\/\.\-\_]+)/; + const regex = /^\/backport to ([a-zA-Z\d\/\.\-\_]+)/; target_branch = regex.exec(context.payload.comment.body); if (target_branch == null) throw "Error: No backport branch found in the trigger phrase."; diff --git a/Directory.Build.targets b/Directory.Build.targets index f59955242b29f0..541cdfb59f27f9 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -26,6 +26,10 @@ $(ProductVersion)-$(VersionSuffix) + + + + ` - [NOT PORTED OVER YET] Run `dotnet publish --packages pkg -r [win-x64|linux-x64|osx-64] -c [Debug|Release]` to publish your project. `--packages pkg` option restores the package into a local directory that is easy to cleanup once you are done. It avoids polluting the global nuget cache with your locally built dev package. @@ -65,15 +67,12 @@ To run all the tests that got built, run `src\tests\run.cmd runnativeaottests [D To run an individual test (after it was built), navigate to the `artifacts\tests\coreclr\[Windows|Linux|OSX[.x64.[Debug|Release]\$path_to_test` directory. `$path_to_test` matches the subtree of `src\tests`. You should see a `[.cmd|.sh]` file there. This file is a script that will compile and launch the individual test for you. Before invoking the script, set the following environment variables: -* CORE_ROOT=$repo_root\artifacts\tests\coreclr\[Windows|Linux|OSX[.x64.[Debug|Release]\Tests\Core_Root -* RunNativeAot=1 -* __TestDotNetCmd=$repo_root\dotnet[.cmd|.sh] +* CORE_ROOT=$repo_root\artifacts\tests\coreclr\[Windows|Linux|OSX].x64.[Debug|Release]\Tests\Core_Root +* CLRCustomTestLauncher=$repo_root\src\tests\Common\scripts\nativeaottest[.cmd|.sh] `$repo_root` is the root of your clone of the repo. -By default the test suite will delete the build artifacts (Native AOT images and response files) if the test compiled successfully. If you want to keep these files instead of deleting them after test run, set the following environment variables and make sure you'll have enough disk space (tens of MB per test): - -* CLRTestNoCleanup=1 +Sometimes it's handy to be able to rebuild the managed test manually or run the compilation under a debugger. A response file that was used to invoke the ahead of time compiler can be found in `$repo_root\artifacts\tests\coreclr\obj\[Windows|Linux|OSX].x64.[Debug|Release]\Managed`. For more advanced scenarios, look for at [Building Test Subsets](../../testing/coreclr/windows-test-instructions.md#building-test-subsets) and [Generating Core_Root](../../testing/coreclr/windows-test-instructions.md#generating-core_root) diff --git a/docs/workflow/testing/libraries/testing-wasm.md b/docs/workflow/testing/libraries/testing-wasm.md index da752eb2d5974e..e75c1761d77611 100644 --- a/docs/workflow/testing/libraries/testing-wasm.md +++ b/docs/workflow/testing/libraries/testing-wasm.md @@ -98,9 +98,9 @@ The following shows how to run tests for a specific library ### Passing arguments to xharness -- `$(WasmXHarnessArgs)` - xharness command arguments +- `$(WasmXHarnessArgsCli)` - xharness command arguments - Example: `WasmXHarnessArgs="--set-web-server-http-env=DOTNET_TEST_WEBSOCKETHOST"` -> becomes `dotnet xharness wasm test --set-web-server-http-env=DOTNET_TEST_WEBSOCKETHOST` + Example: `WasmXHarnessArgsCli="--set-web-server-http-env=DOTNET_TEST_WEBSOCKETHOST"` -> becomes `dotnet xharness wasm test --set-web-server-http-env=DOTNET_TEST_WEBSOCKETHOST` - `$(WasmXHarnessMonoArgs)` - arguments and variables for mono diff --git a/eng/CodeAnalysis.src.globalconfig b/eng/CodeAnalysis.src.globalconfig index e5ae41903b5a76..df9d7285695cf8 100644 --- a/eng/CodeAnalysis.src.globalconfig +++ b/eng/CodeAnalysis.src.globalconfig @@ -1539,6 +1539,9 @@ dotnet_diagnostic.IDE0160.severity = silent # IDE0161: Convert to file-scoped namespace dotnet_diagnostic.IDE0161.severity = silent +# IDE0190: Null check can be simplified +dotnet_diagnostic.IDE0190.severity = suggestion + # IDE1005: Delegate invocation can be simplified. dotnet_diagnostic.IDE1005.severity = suggestion diff --git a/eng/CodeAnalysis.test.globalconfig b/eng/CodeAnalysis.test.globalconfig index f56a38cfa707c0..6e8b42ea3606c7 100644 --- a/eng/CodeAnalysis.test.globalconfig +++ b/eng/CodeAnalysis.test.globalconfig @@ -1536,6 +1536,9 @@ dotnet_diagnostic.IDE0160.severity = silent # IDE0161: Convert to file-scoped namespace dotnet_diagnostic.IDE0161.severity = silent +# IDE0190: Null check can be simplified +dotnet_diagnostic.IDE0190.severity = silent + # IDE1005: Delegate invocation can be simplified. dotnet_diagnostic.IDE1005.severity = silent diff --git a/eng/Subsets.props b/eng/Subsets.props index de8a2710eb6862..8d288c73ee9615 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -249,7 +249,8 @@ - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 92252a1296afd1..ae6fdbb5972000 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,258 +1,258 @@ - + https://github.com/dotnet/icu - cd095b0fb4c6f8adca9e44ef17346b3e13a73a7c + 0431d9e84dc1dd8b63ec71518e16166952294670 https://github.com/dotnet/msquic a7213b4676c1803bb251771291a525482d42e511 - + https://github.com/dotnet/emsdk - 8f6606fae08ffa42b025dc42ebe2eea91db3a242 + 96aa78d8d62904171e1a6cd5fe8fc4742254133f https://github.com/dotnet/wcf 7f504aabb1988e9a093c1e74d8040bd52feb2f01 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/llvm-project - afc9070f64d110ce2bf029a4a624b9dd1c6dbffd + d707b379670052dbb926739c1f060aa11f442f30 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 https://github.com/microsoft/vstest 140434f7109d357d0158ade9e5164a4861513965 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/llvm-project - 20080e62c2ea6ed059be57b88268dd8cd28604e6 + 5b358880114238a553ea86fe087ccb80b17a0017 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/runtime - bc6d349ecd72eec162f0532e6b6218fdbaa07ddb + 0ae04e5b33afac1c14a6127df1037f83d39a6ec3 - + https://github.com/dotnet/linker - 3f704bb49eb2fb2847ceaecfbabe8d5f3e0c86c9 + 24b988c6b1ca785f15745fb66a1adcb076b4d5e3 - + https://github.com/dotnet/xharness - 4d24e26939bf0770047cd59299235cf6caa86cdb + 1d34249727dd281aad059a9a58880f003bd9f18e - + https://github.com/dotnet/xharness - 4d24e26939bf0770047cd59299235cf6caa86cdb + 1d34249727dd281aad059a9a58880f003bd9f18e - + https://github.com/dotnet/xharness - 4d24e26939bf0770047cd59299235cf6caa86cdb + 1d34249727dd281aad059a9a58880f003bd9f18e - + https://github.com/dotnet/arcade - 4d6406fa2e84c8516a338694be3a4097e6e1f104 + 78eaf78761027d225030be2b28aaf4e8bf392929 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -270,17 +270,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization 47c55c3cf08885d691aa9d581d40310fe448c1ea - + https://github.com/dotnet/hotreload-utils - 3d4988f053ae6b9803e76687b02fee3f8a83156c + c57ee5cc02f5ef566981c6df8ce0465402de81a2 - + https://github.com/dotnet/runtime-assets - 8813c6d9e73b5cb0b4ccf4c0b8c609ad344636a7 + 359026fd1eb6864f9c634bff1af6ea4c5e5e75d1 - + https://github.com/dotnet/roslyn-analyzers - 60eb13c44c366205e5a4dec195404477009c41de + 54b65374e301686f9475dc02045b370dda116db1 https://github.com/dotnet/sdk diff --git a/eng/Versions.props b/eng/Versions.props index aef6a22a358d5b..e43cb18f09acd0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -20,6 +20,7 @@ false false $(AssemblyVersion) + true + 4.2.0-2.22105.4 2.0.0-alpha.1.21525.11 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 2.5.1-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22102.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 - 7.0.0-beta.22080.1 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 2.5.1-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 + 7.0.0-beta.22110.7 6.0.0-preview.1.102 - 7.0.0-preview.2.22080.2 - 7.0.0-preview.2.22080.2 - 7.0.0-preview.2.22080.2 + 7.0.0-preview.2.22103.2 + 7.0.0-preview.2.22103.2 + 7.0.0-preview.2.22103.2 3.1.0 - 7.0.0-preview.2.22080.2 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 - 1.0.0-alpha.1.22073.1 + 7.0.0-preview.2.22103.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 + 1.0.0-alpha.1.22104.2 5.0.0 4.3.0 5.0.0 - 1.2.0-beta.304 + 1.2.0-beta.406 4.5.1 4.3.0 5.0.0 @@ -121,24 +124,24 @@ 5.0.0 5.0.0 4.9.0-rc2.21473.1 - 7.0.0-preview.2.22080.2 - 7.0.0-preview.2.22080.2 + 7.0.0-preview.2.22103.2 + 7.0.0-preview.2.22103.2 4.5.4 4.5.0 - 7.0.0-preview.2.22080.2 + 7.0.0-preview.2.22103.2 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 - 7.0.0-beta.22075.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 + 7.0.0-beta.22107.1 1.0.0-prerelease.22078.3 1.0.0-prerelease.22078.3 @@ -161,40 +164,40 @@ 1.0.1-prerelease-00006 16.9.0-preview-20201201-01 - 1.0.0-prerelease.22101.2 - 1.0.0-prerelease.22101.2 - 1.0.0-prerelease.22101.2 - 1.0.2-alpha.0.22081.2 + 1.0.0-prerelease.22110.1 + 1.0.0-prerelease.22110.1 + 1.0.0-prerelease.22110.1 + 1.0.2-alpha.0.22107.2 2.4.2-pre.22 0.12.0-pre.20 2.4.2 - 3.1.0 + 3.1.2 12.0.3 2.0.4 4.12.0 2.14.3 7.0.100-alpha.1.21528.1 - 1.1.1-beta1.21467.5 + 1.1.1-beta1.22103.1 6.0.0-preview-20220104.1 - 7.0.100-1.22081.3 + 7.0.100-1.22107.1 $(MicrosoftNETILLinkTasksVersion) - 7.0.0-preview.2.22101.1 + 7.0.0-preview.2.22107.1 7.0.0-alpha.1.21529.3 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 - 11.1.0-alpha.1.22081.2 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 + 11.1.0-alpha.1.22107.4 - 7.0.0-alpha.2.22102.3 + 7.0.0-alpha.2.22104.1 $(MicrosoftNETWorkloadEmscriptenManifest70100Version) 1.1.87-gba258badda diff --git a/eng/actions/backport/index.js b/eng/actions/backport/index.js index 49a2c740108813..3cc1a57312ac92 100644 --- a/eng/actions/backport/index.js +++ b/eng/actions/backport/index.js @@ -39,7 +39,7 @@ async function run() { console.log(`Verified ${comment_user} is a repo collaborator.`); } catch (error) { console.log(error); - throw new BackportException(`Error: @${comment_user} is not a repo collaborator, backporting is not allowed.`); + throw new BackportException(`Error: @${comment_user} is not a repo collaborator, backporting is not allowed. If you're a collaborator please make sure your Microsoft team membership visibility is set to Public on https://github.com/orgs/microsoft/people?query=${comment_user}`); } try { await exec.exec(`git ls-remote --exit-code --heads origin ${target_branch}`) } catch { throw new BackportException(`Error: The specified backport target branch ${target_branch} wasn't found in the repo.`); } diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index f97dca77054089..7e4be9a0ccfbf3 100755 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -120,6 +120,15 @@ while :; do __UbuntuRepo="http://ftp.debian.org/debian/" __CodeName=jessie ;; + ppc64le) + __BuildArch=ppc64le + __UbuntuArch=ppc64el + __UbuntuRepo="http://ports.ubuntu.com/ubuntu-ports/" + __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libunwind8-dev//') + __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp-dev//') + __UbuntuPackages=$(echo ${__UbuntuPackages} | sed 's/ libomp5//') + unset __LLDB_Package + ;; s390x) __BuildArch=s390x __UbuntuArch=s390x diff --git a/eng/common/cross/ppc64le/sources.list.bionic b/eng/common/cross/ppc64le/sources.list.bionic new file mode 100644 index 00000000000000..2109557409576d --- /dev/null +++ b/eng/common/cross/ppc64le/sources.list.bionic @@ -0,0 +1,11 @@ +deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe +deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe + +deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe +deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe + +deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted +deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted + +deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse +deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index fba2afda438b66..9fd345bde6d409 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -54,6 +54,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") if(TIZEN) set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") endif() +elseif(TARGET_ARCH_NAME STREQUAL "ppc64le") + set(CMAKE_SYSTEM_PROCESSOR ppc64le) + set(TOOLCHAIN "powerpc64le-linux-gnu") elseif(TARGET_ARCH_NAME STREQUAL "s390x") set(CMAKE_SYSTEM_PROCESSOR s390x) set(TOOLCHAIN "s390x-linux-gnu") @@ -67,7 +70,7 @@ elseif (ILLUMOS) set(CMAKE_SYSTEM_PROCESSOR "x86_64") set(TOOLCHAIN "x86_64-illumos") else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, armv6, arm64, s390x and x86 are supported!") + message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, armv6, arm64, ppc64le, s390x and x86 are supported!") endif() if(DEFINED ENV{TOOLCHAIN}) @@ -201,7 +204,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|armv6|armel|arm64|s390x)$" AND NOT ANDROID) OR ILLUMOS) +if((TARGET_ARCH_NAME MATCHES "^(arm|armv6|armel|arm64|ppc64le|s390x)$" AND NOT ANDROID) OR ILLUMOS) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 new file mode 100644 index 00000000000000..a733a8885824a9 --- /dev/null +++ b/eng/common/generate-sbom-prep.ps1 @@ -0,0 +1,19 @@ +Param( + [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed +) + +Write-Host "Creating dir $ManifestDirPath" +# create directory for sbom manifest to be placed +if (!(Test-Path -path $ManifestDirPath)) +{ + New-Item -ItemType Directory -path $ManifestDirPath + Write-Host "Successfully created directory $ManifestDirPath" +} +else{ + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +} + +Write-Host "Updating artifact name" +$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_' +Write-Host "Artifact name $artifact_name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh new file mode 100644 index 00000000000000..f6c77453142a28 --- /dev/null +++ b/eng/common/generate-sbom-prep.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +manifest_dir=$1 + +if [ ! -d "$manifest_dir" ] ; then + mkdir -p "$manifest_dir" + echo "Sbom directory created." $manifest_dir +else + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +fi + +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +echo "Artifact name before : "$artifact_name +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" +echo "Artifact name after : "$safe_artifact_name +export ARTIFACT_NAME=$safe_artifact_name +echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" + +exit 0 diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index c5c2a9915121b3..e3ba9398016be8 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -31,6 +31,10 @@ parameters: name: '' preSteps: [] runAsPublic: false +# Sbom related params + enableSbom: true + PackageVersion: 7.0.0 + BuildDropPath: '$(Build.SourcesDirectory)/artifacts' jobs: - job: ${{ parameters.name }} @@ -140,6 +144,7 @@ jobs: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(parameters.disableComponentGovernance, 'true')) }}: - task: ComponentGovernanceComponentDetection@0 + continueOnError: true - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: @@ -247,3 +252,10 @@ jobs: ArtifactName: AssetManifests continueOnError: ${{ parameters.continueOnError }} condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - template: /eng/common/templates/steps/generate-sbom.yml + parameters: + PackageVersion: ${{ parameters.packageVersion}} + BuildDropPath: ${{ parameters.buildDropPath }} + diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 70d44735ace4a9..6976330862c20d 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -41,6 +41,11 @@ parameters: # Internal resources (telemetry, microbuild) can only be accessed from non-public projects, # and some (Microbuild) should only be applied to non-PR cases for internal builds. +# Sbom related params + enableSbom: true + PackageVersion: 7.0.0 + BuildDropPath: '$(Build.SourcesDirectory)/artifacts' + jobs: - ${{ each job in parameters.jobs }}: - template: ../job/job.yml diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml new file mode 100644 index 00000000000000..3acba705f177cf --- /dev/null +++ b/eng/common/templates/steps/generate-sbom.yml @@ -0,0 +1,42 @@ +# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. +# PackageName - The name of the package this SBOM represents. +# PackageVersion - The version of the package this SBOM represents. +# ManifestDirPath - The path of the directory where the generated manifest files will be placed + +parameters: + PackageVersion: 7.0.0 + BuildDropPath: '$(Build.SourcesDirectory)/artifacts' + PackageName: '.NET' + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + sbomContinueOnError: true + +steps: +- task: PowerShell@2 + displayName: Prep for SBOM generation in (Non-linux) + condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) + inputs: + filePath: ./eng/common/generate-sbom-prep.ps1 + arguments: ${{parameters.manifestDirPath}} + +- script: | + ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} + displayName: Prep for SBOM generation in (Linux) + condition: eq(variables['Agent.Os'], 'Linux') + continueOnError: ${{ parameters.sbomContinueOnError }} + +- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 + displayName: 'Generate SBOM manifest' + continueOnError: ${{ parameters.sbomContinueOnError }} + inputs: + PackageName: ${{ parameters.packageName }} + BuildDropPath: ${{ parameters.buildDropPath }} + PackageVersion: ${{ parameters.packageVersion }} + ManifestDirPath: ${{ parameters.manifestDirPath }} + +- task: PublishPipelineArtifact@1 + displayName: Publish SBOM manifest + continueOnError: ${{parameters.sbomContinueOnError}} + inputs: + targetPath: '${{parameters.manifestDirPath}}' + artifactName: $(ARTIFACT_NAME) + diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml index d85d6d07d5c7b0..12a8ff94d8e960 100644 --- a/eng/common/templates/steps/source-build.yml +++ b/eng/common/templates/steps/source-build.yml @@ -43,8 +43,8 @@ steps: # In that case, add variables to allow the download of internal runtimes if the specified versions are not found # in the default public locations. internalRuntimeDownloadArgs= - if [ '$(dotnetclimsrc-read-sas-token-base64)' != '$''(dotnetclimsrc-read-sas-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetclimsrc.blob.core.windows.net/dotnet /p:DotNetRuntimeSourceFeedKey=$(dotnetclimsrc-read-sas-token-base64) --runtimesourcefeed https://dotnetclimsrc.blob.core.windows.net/dotnet --runtimesourcefeedkey $(dotnetclimsrc-read-sas-token-base64)' + if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' fi buildConfig=Release diff --git a/eng/liveBuilds.targets b/eng/liveBuilds.targets index c2f64bf1abf8a5..8f91d3e6e42574 100644 --- a/eng/liveBuilds.targets +++ b/eng/liveBuilds.targets @@ -25,6 +25,7 @@ $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'sharedFramework')) $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'crossgen2')) $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'ilc')) + $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', '$(BuildArchitecture)', 'ilc')) $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'aotsdk')) $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'build')) diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index b67594cb60fb2a..4324e23ed1fa2e 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -390,6 +390,10 @@ if (CLR_CMAKE_HOST_UNIX) add_compile_options(-Wno-unused-but-set-variable) + # Turn off floating point expression contraction because it is considered a value changing + # optimization in the IEEE 754 specification and is therefore considered unsafe. + add_compile_options(-ffp-contract=off) + if (CMAKE_C_COMPILER_ID MATCHES "Clang") add_compile_options(-Wno-unknown-warning-option) diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake index 0c28f75706de19..6ff45a86fbb613 100644 --- a/eng/native/functions.cmake +++ b/eng/native/functions.cmake @@ -15,7 +15,7 @@ function(h2inc filename output) get_filename_component(path "${filename}" DIRECTORY) file(RELATIVE_PATH relative_filename "${CLR_REPO_ROOT_DIR}" "${filename}") - file(APPEND "${output}" "// File start: ${relative_filename}\n") + file(WRITE "${output}" "// File start: ${relative_filename}\n") # Use of NEWLINE_CONSUME is needed for lines with trailing backslash file(STRINGS ${filename} contents NEWLINE_CONSUME) diff --git a/eng/packaging.targets b/eng/packaging.targets index 7a29b7d99273d1..e705b4e7110114 100644 --- a/eng/packaging.targets +++ b/eng/packaging.targets @@ -9,7 +9,7 @@ BeforePack must be used. Setting both to ensure that we are always running before other targets. --> AddNETStandardCompatErrorFileForPackaging;IncludeAnalyzersInPackage;$(PackDependsOn) AddNETStandardCompatErrorFileForPackaging;IncludeAnalyzersInPackage;$(BeforePack) - $(TargetsForTfmSpecificContentInPackage);AddRuntimeSpecificFilesToPackage;IncludePrivateProjectReferencesWithPackAttributeInPackage + $(TargetsForTfmSpecificContentInPackage);AddRuntimeSpecificFilesToPackage;IncludeProjectReferencesWithPackAttributeInPackage false true @@ -226,12 +226,12 @@ - - <_projectReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('PrivateAssets', 'all')->WithMetadataValue('Pack', 'true'))" /> + <_projectReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('Pack', 'true'))" /> - + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + +# Run net48 tests on win-x64 +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/libraries/build-job.yml + buildConfig: Release + platforms: + - windows_x64 + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + jobParameters: + framework: net48 + runTests: true + testScope: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(variables['isRollingBuild'], true)) + +#### MONO LEGS + +# +# Build the whole product using Mono and run libraries tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Windows_x64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + testScope: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true + timeoutInMinutes: 120 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + +# +# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size +# Build the whole product using Mono and run libraries tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - iOS_arm64 + - tvOS_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Android_arm + - Android_arm64 + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) + timeoutInMinutes: 180 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + condition: >- + or( + eq(variables['librariesContainsChange'], true), + eq(variables['monoContainsChange'], true), + eq(variables['isRollingBuild'], true)) + +# +# Build the whole product using Mono and run runtime tests +# Build Mono release +# Only when libraries, mono, or the runtime tests changed +# Currently only these architectures are needed for the runtime tests. +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - Linux_arm64 + jobParameters: + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(variables['isRollingBuild'], true)) + +# +# Mono Test builds with CoreCLR runtime tests using live libraries debug build +# Only when Mono is changed +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 + jobParameters: + testGroup: innerloop + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + +# +# Build the whole product using Mono for Android and run runtime tests with Android emulator +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Android_x64 + variables: + - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: pr/dotnet/runtime/$(Build.SourceBranch) + - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: ci/dotnet/runtime/$(Build.SourceBranch) + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_RuntimeTests + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 240 + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + +# +# Build the whole product using Mono for Android and run runtime tests with interpreter +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Android_x64 + variables: + - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: pr/dotnet/runtime/$(Build.SourceBranch) + - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: ci/dotnet/runtime/$(Build.SourceBranch) + - name: timeoutPerTestInMinutes + value: 60 + - name: timeoutPerTestCollectionInMinutes + value: 180 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_RuntimeTests_Interp + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 240 + runtimeVariant: monointerpreter + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(variables['isRollingBuild'], true)) + # NOTE: Per PR test execution is not recommended for runtime tests + ${{ if eq(variables['isRollingBuild'], true) }}: + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + +# +# Mono CoreCLR runtime Test executions using live libraries in jit mode +# Only when Mono is changed +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + liveRuntimeBuildConfig: release + runtimeVariant: minijit + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) + +# +# Mono CoreCLR runtime Test executions using live libraries in interpreter mode +# Only when Mono is changed +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml + buildConfig: release + runtimeFlavor: mono + platforms: + - Linux_arm64 + helixQueueGroup: pr + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + jobParameters: + testGroup: innerloop + liveLibrariesBuildConfig: Release + liveRuntimeBuildConfig: release + runtimeVariant: monointerpreter + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), + eq(variables['isRollingBuild'], true)) diff --git a/eng/pipelines/runtime-extra-platforms-wasm.yml b/eng/pipelines/runtime-extra-platforms-wasm.yml new file mode 100644 index 00000000000000..af51523090fca1 --- /dev/null +++ b/eng/pipelines/runtime-extra-platforms-wasm.yml @@ -0,0 +1,233 @@ +# This contains only wasm-specific jobs +# These are run as part of runtime-extra-platforms by default. +# But can also be triggered manually via `runtime-wasm` name +# /azp run runtime-wasm + +parameters: + isExtraPlatformsBuild: '' + +jobs: + +# +# Build for Browser/wasm and test it on v8, browser, and nodejs +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + - Browser_wasm_win + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + testGroup: innerloop + nameSuffix: LibraryTests + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:BrowserHost=$(_hostedOs) + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + # Always run for rolling builds + # Else run on path changes + condition: >- + or( + eq(variables['isWasmOnlyBuild'], true), + eq(variables['isRollingBuild'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:BrowserHost=$(_hostedOs) + scenarios: + - normal + - WasmTestOnBrowser + - WasmTestOnNodeJs + +# +# Build for Browser/wasm, with EnableAggressiveTrimming=true +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} + testGroup: innerloop + nameSuffix: LibraryTests_EAT + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=false + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + # Always run for rolling builds + # Else run on path changes + condition: >- + or( + eq(variables['isWasmOnlyBuild'], true), + eq(variables['isRollingBuild'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true $(_runSmokeTestsOnlyArg) + scenarios: + - normal + +# +# Build for Browser/wasm with RunAOTCompilation=true +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + - Browser_wasm_win + variables: + # map dependencies variables to local variables + - name: librariesContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] + - name: monoContainsChange + value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] + jobParameters: + isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} + testGroup: innerloop + nameSuffix: LibraryTests_AOT + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true /p:BrowserHost=$(_hostedOs) + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + # Always run for rolling builds + # Else run on path changes + condition: >- + or( + eq(variables['isWasmOnlyBuild'], true), + eq(variables['isRollingBuild'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true)) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_AOT_$(_BuildConfig)_$(_hostedOs) + extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true $(_runSmokeTestsOnlyArg) /p:BrowserHost=$(_hostedOs) + scenarios: + - normal + +## WebAssembly legs, run only when runtime-wasm is triggered + +# +# runtime-wasm: Build the whole product using Mono and run libraries tests, for Wasm.Build.Tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + - Browser_wasm_win + jobParameters: + testGroup: innerloop + nameSuffix: WasmBuildTests + buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:TestWasmBuildTests=true /p:TestAssemblies=false /p:BrowserHost=$(_hostedOs) + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + condition: >- + eq(variables['isWasmOnlyBuild'], true) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig)_$(_hostedOs) + extraHelixArguments: /p:BrowserHost=$(_hostedOs) + scenarios: + - buildwasmapps + +# +# runtime-wasm: Build the whole product using Mono and run libraries tests, for wasm debugger tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + - Browser_wasm_win + jobParameters: + testGroup: innerloop + nameSuffix: Mono_DebuggerTests + buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:TestWasmDebuggerTests=true /p:TestAssemblies=false /p:BrowserHost=$(_hostedOs) + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + condition: >- + eq(variables['isWasmOnlyBuild'], true) + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig)_$(_hostedOs) + extraHelixArguments: /p:BrowserHost=$(_hostedOs) + scenarios: + - wasmdebuggertests + +# +# runtime-wasm: Build the whole product using Mono and run runtime tests +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml + buildConfig: Release + runtimeFlavor: mono + platforms: + - Browser_wasm + variables: + - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: pr/dotnet/runtime/$(Build.SourceBranch) + - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: _HelixSource + value: ci/dotnet/runtime/$(Build.SourceBranch) + - name: timeoutPerTestInMinutes + value: 10 + - name: timeoutPerTestCollectionInMinutes + value: 200 + jobParameters: + testGroup: innerloop + nameSuffix: AllSubsets_Mono_RuntimeTests + buildArgs: -s mono+libs -c $(_BuildConfig) + timeoutInMinutes: 180 + # always run for runtime-wasm builds (triggered manually) + condition: >- + eq(variables['isWasmOnlyBuild'], true) + extraStepsTemplate: /eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: Mono_$(_BuildConfig) + diff --git a/eng/pipelines/runtime-extra-platforms.yml b/eng/pipelines/runtime-extra-platforms.yml index 729a0187ba562b..025d5d27e462ca 100644 --- a/eng/pipelines/runtime-extra-platforms.yml +++ b/eng/pipelines/runtime-extra-platforms.yml @@ -34,482 +34,13 @@ jobs: - ${{ if eq(variables.dependOnEvaluatePaths, true) }}: - template: /eng/pipelines/common/evaluate-default-paths.yml -# -# Build CoreCLR release -# Always as they are needed by Installer and we always build and test the Installer. -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml - buildConfig: release - platforms: - - Linux_x64 - - Linux_arm - - Linux_arm64 - - Linux_musl_x64 - - OSX_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - jobParameters: - testGroup: innerloop - -# -# Build libraries using live CoreLib -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - Linux_x64 - - Linux_arm - - Linux_arm64 - - Linux_musl_x64 - - OSX_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - -# -# Libraries Release Test Execution against a release coreclr runtime -# Only when the PR contains a libraries change -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/run-test-job.yml - buildConfig: Release - platforms: - - Linux_x64 - - Linux_arm - - Linux_arm64 - - Linux_musl_x64 - - OSX_x64 - - windows_x64 - - windows_x86 - - windows_arm64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - isOfficialBuild: false - isExtraPlatforms: ${{ variables.isExtraPlatformsBuild }} - testScope: innerloop - liveRuntimeBuildConfig: release - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - -# Run net48 tests on win-x64 -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/libraries/build-job.yml - buildConfig: Release - platforms: - - windows_x64 - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - jobParameters: - framework: net48 - runTests: true - testScope: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(variables['isRollingBuild'], true)) - -#### MONO LEGS - -# -# Build for Browser/wasm, with EnableAggressiveTrimming=true -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Browser_wasm - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - isExtraPlatforms: ${{ variables.isExtraPlatformsBuild }} - testGroup: innerloop - nameSuffix: LibraryTests_EAT - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=false - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true $(_runSmokeTestsOnlyArg) - scenarios: - - normal - -# -# Build for Browser/wasm with RunAOTCompilation=true -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Browser_wasm - - Browser_wasm_win - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - isExtraPlatforms: ${{ variables.isExtraPlatformsBuild }} - testGroup: innerloop - nameSuffix: LibraryTests_AOT - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true /p:BrowserHost=$(_hostedOs) - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_AOT_$(_BuildConfig)_$(_hostedOs) - extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true $(_runSmokeTestsOnlyArg) /p:BrowserHost=$(_hostedOs) - scenarios: - - normal - -# -# Build the whole product using Mono and run libraries tests -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Windows_x64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - testScope: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true - timeoutInMinutes: 120 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - -# -# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size -# Build the whole product using Mono and run libraries tests -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - iOS_arm64 - - tvOS_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=true $(_runSmokeTestsOnlyArg) /p:BuildTestsOnHelix=true /p:UsePortableRuntimePack=true /p:BuildDarwinFrameworks=true - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:NeedsToBuildAppsOnHelix=true - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Android_arm - - Android_arm64 - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - condition: >- - or( - eq(variables['librariesContainsChange'], true), - eq(variables['monoContainsChange'], true), - eq(variables['isRollingBuild'], true)) - -# -# Build for Browser/wasm and test it on v8, browser, and nodejs -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Browser_wasm - - Browser_wasm_win - variables: - # map dependencies variables to local variables - - name: librariesContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] - - name: monoContainsChange - value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ] - jobParameters: - testGroup: innerloop - nameSuffix: LibraryTests - buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:BrowserHost=$(_hostedOs) - timeoutInMinutes: 180 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/libraries/helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - extraHelixArguments: /p:BrowserHost=$(_hostedOs) - scenarios: - - normal - - WasmTestOnBrowser - - WasmTestOnNodeJs - -# -# Build the whole product using Mono and run runtime tests -# Build Mono release -# Only when libraries, mono, or the runtime tests changed -# Currently only these architectures are needed for the runtime tests. -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/mono/templates/build-job.yml - runtimeFlavor: mono - buildConfig: release - platforms: - - Linux_arm64 - jobParameters: - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(variables['isRollingBuild'], true)) - -# -# Mono Test builds with CoreCLR runtime tests using live libraries debug build -# Only when Mono is changed -- template: /eng/pipelines/common/platform-matrix.yml +# include this unconditionally, because it has per job conditions +- template: /eng/pipelines/runtime-extra-platforms-wasm.yml parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/build-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - CoreClrTestBuildHost # Either OSX_x64 or Linux_x64 - jobParameters: - testGroup: innerloop - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) + isExtraPlatformsBuild: ${{ variables.isExtraPlatformsBuild }} -# -# Build the whole product using Mono for Android and run runtime tests with Android emulator -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Android_x64 - variables: - - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: pr/dotnet/runtime/$(Build.SourceBranch) - - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: ci/dotnet/runtime/$(Build.SourceBranch) - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 240 - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - -# -# Build the whole product using Mono for Android and run runtime tests with interpreter -# -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/global-build-job.yml - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - buildConfig: Release - runtimeFlavor: mono - platforms: - - Android_x64 - variables: - - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: pr/dotnet/runtime/$(Build.SourceBranch) - - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}: - - name: _HelixSource - value: ci/dotnet/runtime/$(Build.SourceBranch) - - name: timeoutPerTestInMinutes - value: 60 - - name: timeoutPerTestCollectionInMinutes - value: 180 - jobParameters: - testGroup: innerloop - nameSuffix: AllSubsets_Mono_RuntimeTests_Interp - buildArgs: -s mono+libs -c $(_BuildConfig) - timeoutInMinutes: 240 - runtimeVariant: monointerpreter - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(variables['isRollingBuild'], true)) - # NOTE: Per PR test execution is not recommended for runtime tests - ${{ if eq(variables['isRollingBuild'], true) }}: - # extra steps, run tests - extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml - extraStepsParameters: - creator: dotnet-bot - testRunNamePrefixSuffix: Mono_$(_BuildConfig) - -# -# Mono CoreCLR runtime Test executions using live libraries in jit mode -# Only when Mono is changed -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: Release - liveRuntimeBuildConfig: release - runtimeVariant: minijit - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) - -# -# Mono CoreCLR runtime Test executions using live libraries in interpreter mode -# Only when Mono is changed -- template: /eng/pipelines/common/platform-matrix.yml - parameters: - jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml - buildConfig: release - runtimeFlavor: mono - platforms: - - Linux_arm64 - helixQueueGroup: pr - helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml - jobParameters: - testGroup: innerloop - liveLibrariesBuildConfig: Release - liveRuntimeBuildConfig: release - runtimeVariant: monointerpreter - condition: >- - or( - eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), - eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), - eq(variables['isRollingBuild'], true)) +# Any jobs that are not specific to any platform +- ${{ if eq(variables.isNotSpecificPlatformOnlyBuild, true) }}: + - template: /eng/pipelines/runtime-extra-platforms-other.yml + parameters: + isExtraPlatformsBuild: ${{ variables.isExtraPlatformsBuild }} diff --git a/eng/pipelines/runtime-wasm.yml b/eng/pipelines/runtime-wasm.yml new file mode 100644 index 00000000000000..da464d4750fc54 --- /dev/null +++ b/eng/pipelines/runtime-wasm.yml @@ -0,0 +1,20 @@ +# This is a wrapper yml for `runtime-extra-platforms-wasm.yml`, which +# has all the wasm jobs. This file is essentially so we can have point +# the pipeline in azdo UI to this, and thus avoid any scheduled triggers + +trigger: none + +variables: + - template: /eng/pipelines/common/variables.yml + +jobs: + +# +# Evaluate paths +# +- ${{ if eq(variables.dependOnEvaluatePaths, true) }}: + - template: /eng/pipelines/common/evaluate-default-paths.yml + +- template: /eng/pipelines/runtime-extra-platforms-wasm.yml + parameters: + isExtraPlatformsBuild: false diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 9d3bbfe477d8e0..c37478db2e39ba 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -211,7 +211,7 @@ jobs: testGroup: innerloop timeoutInMinutes: 120 nameSuffix: NativeAOT - buildArgs: -s clr.jit+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release + buildArgs: -s clr.alljits+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml condition: >- or( @@ -233,7 +233,7 @@ jobs: testGroup: innerloop timeoutInMinutes: 120 nameSuffix: NativeAOT - buildArgs: -s clr.jit+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release + buildArgs: -s clr.alljits+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml condition: >- or( @@ -242,7 +242,7 @@ jobs: eq(variables['isFullMatrix'], true)) # -# CoreCLR NativeAOT checked build and smoke tests +# CoreCLR NativeAOT release build and smoke tests # Only when CoreCLR is changed # - template: /eng/pipelines/common/platform-matrix.yml @@ -257,7 +257,7 @@ jobs: testGroup: innerloop timeoutInMinutes: 120 nameSuffix: NativeAOT - buildArgs: -s clr.jit+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release + buildArgs: -s clr.alljits+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs -rc $(_BuildConfig) -lc Release extraStepsTemplate: /eng/pipelines/coreclr/nativeaot-post-build-steps.yml condition: >- or( @@ -265,6 +265,34 @@ jobs: eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true), eq(variables['isFullMatrix'], true)) +# +# CoreCLR NativeAOT release build and libraries tests +# Only when CoreCLR is changed +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml + buildConfig: Release + platforms: + - windows_arm64 + - Linux_arm64 + jobParameters: + testGroup: innerloop + isSingleFile: true + nameSuffix: NativeAOT + buildArgs: -s clr.alljits+clr.tools+clr.nativeaotlibs+clr.nativeaotruntime+libs+libs.tests -c $(_BuildConfig) /p:TestNativeAot=true /p:ArchiveTests=true + timeoutInMinutes: 120 + # extra steps, run tests + extraStepsTemplate: /eng/pipelines/libraries/helix.yml + extraStepsParameters: + creator: dotnet-bot + testRunNamePrefixSuffix: NativeAOT_$(_BuildConfig) + condition: >- + or( + eq(dependencies.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true), + eq(variables['isFullMatrix'], true)) + # Build and test clr tools - template: /eng/pipelines/common/platform-matrix.yml parameters: diff --git a/eng/references.targets b/eng/references.targets index 7cfb60411ed182..4603fb98566a91 100644 --- a/eng/references.targets +++ b/eng/references.targets @@ -7,31 +7,52 @@ <_FindDependencies>false - - - - - - + false + + <_coreLibProjectReference Include="@(ProjectReference->WithMetadataValue('Identity', '$(CoreLibProject)'))" /> + + + $(UndefineProperties);TargetFramework;Platform + Configuration=$(CoreCLRConfiguration) + Configuration=$(MonoConfiguration) + false + + + + + + + + + None + + + - <_transitiveProjectReferenceWithExclusion Include="@(ProjectReference)"> - %(DefaultReferenceExclusion.Identity) - - + <_transitiveProjectReferenceWithProjectName Include="@(ProjectReference->Metadata('NuGetPackageId'))" + OriginalIdentity="%(Identity)" /> + <_transitiveIncludedProjectReferenceWithProjectName Include="@(_transitiveProjectReferenceWithProjectName)" + Exclude="@(DefaultReferenceExclusion)" /> + <_transitiveExcludedProjectReferenceWithProjectName Include="@(_transitiveProjectReferenceWithProjectName)" + Exclude="@(_transitiveIncludedProjectReferenceWithProjectName)" /> + @@ -55,8 +76,10 @@ - - + diff --git a/eng/resolveContract.targets b/eng/resolveContract.targets index cff60b79eb225f..327273a100e2d4 100644 --- a/eng/resolveContract.targets +++ b/eng/resolveContract.targets @@ -42,12 +42,10 @@ - <_resolvedP2PFiltered Include="@(ProjectReference)"> - $([System.IO.Path]::GetFullPath('%(ProjectReference.Identity)')) - %(ProjectReference.SkipUseReferenceAssembly) - - <_ResolvedProjectReferencePaths Update="@(_resolvedP2PFiltered)" - Condition="'%(_resolvedP2PFiltered.ProjectReferenceItemSpec)' == '%(_resolvedP2PFiltered.MSBuildSourceProjectFile)' and + <_resolvedP2PFiltered Include="@(ProjectReference)" + ProjectReferenceItemSpec="$([System.IO.Path]::GetFullPath('%(ProjectReference.Identity)'))" + SkipUseReferenceAssembly="%(ProjectReference.SkipUseReferenceAssembly)" /> + <_ResolvedProjectReferencePaths Condition="'%(_resolvedP2PFiltered.ProjectReferenceItemSpec)' == '%(_resolvedP2PFiltered.MSBuildSourceProjectFile)' and '%(_resolvedP2PFiltered.SkipUseReferenceAssembly)' == 'true'" ReferenceAssembly="" /> diff --git a/eng/slngen.targets b/eng/slngen.targets index 5f21150497c949..0747113bd3f5fd 100644 --- a/eng/slngen.targets +++ b/eng/slngen.targets @@ -1,5 +1,6 @@ + gen ref tests src diff --git a/eng/targetingpacks.targets b/eng/targetingpacks.targets index 150ddf7401c9ea..33551569c647fe 100644 --- a/eng/targetingpacks.targets +++ b/eng/targetingpacks.targets @@ -142,16 +142,18 @@ AfterTargets="ResolveTargetingPackAssets"> <_targetingPackReferenceExclusion Include="$(TargetName)" /> - <_targetingPackReferenceExclusion Include="@(_ResolvedProjectReferencePaths->'%(Filename)')" /> + <_targetingPackReferenceExclusion Include="@(_ResolvedProjectReferencePaths->Metadata('Filename'))" /> <_targetingPackReferenceExclusion Include="@(DefaultReferenceExclusion)" /> - <_targetingPackReferenceWithExclusion Include="@(Reference)"> - %(_targetingPackReferenceExclusion.Identity) - - + <_targetingPackReferenceWithProjectName Include="@(Reference->WithMetadataValue('ExternallyResolved', 'true')->Metadata('Filename'))" + OriginalIdentity="%(Identity)" /> + <_targetingPackIncludedReferenceWithProjectName Include="@(_targetingPackReferenceWithProjectName)" + Exclude="@(_targetingPackReferenceExclusion)" /> + <_targetingPackExcludedReferenceWithProjectName Include="@(_targetingPackReferenceWithProjectName)" + Exclude="@(_targetingPackIncludedReferenceWithProjectName)" /> + diff --git a/eng/testing/WasmRunnerTemplate.cmd b/eng/testing/WasmRunnerTemplate.cmd index 2ebcbcf8e93a97..a668ce2c6a464c 100644 --- a/eng/testing/WasmRunnerTemplate.cmd +++ b/eng/testing/WasmRunnerTemplate.cmd @@ -54,7 +54,7 @@ if /I [%XHARNESS_COMMAND%] == [test] ( ) if [%XHARNESS_ARGS%] == [] ( - set "XHARNESS_ARGS=%JS_ENGINE% %JS_ENGINE_ARGS% %BROWSER_PATH% %MAIN_JS% %WASM_XHARNESS_MONO_ARGS%" + set "XHARNESS_ARGS=%JS_ENGINE% %JS_ENGINE_ARGS% %BROWSER_PATH% %MAIN_JS%" ) echo EXECUTION_DIR=%EXECUTION_DIR% diff --git a/eng/testing/WasmRunnerTemplate.sh b/eng/testing/WasmRunnerTemplate.sh index d4e352976e8075..ae78d5304e8aed 100644 --- a/eng/testing/WasmRunnerTemplate.sh +++ b/eng/testing/WasmRunnerTemplate.sh @@ -50,7 +50,7 @@ if [[ "$XHARNESS_COMMAND" == "test" ]]; then fi if [[ -z "$XHARNESS_ARGS" ]]; then - XHARNESS_ARGS="$JS_ENGINE $JS_ENGINE_ARGS $MAIN_JS $WASM_XHARNESS_MONO_ARGS" + XHARNESS_ARGS="$JS_ENGINE $JS_ENGINE_ARGS $MAIN_JS" fi echo EXECUTION_DIR=$EXECUTION_DIR diff --git a/eng/testing/performance/android_scenarios.proj b/eng/testing/performance/android_scenarios.proj index fefff6deeefe08..f616c6a693d8cf 100644 --- a/eng/testing/performance/android_scenarios.proj +++ b/eng/testing/performance/android_scenarios.proj @@ -25,39 +25,41 @@ $(WorkItemDirectory) - cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py + cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py --apk-name HelloAndroid.apk $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py $(WorkItemDirectory) - cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py --unzip + cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py --unzip --apk-name HelloAndroid.apk $(Python) test.py sod --scenario-name "%(Identity)" $(Python) post.py - + + $(WorkItemDirectory) - echo on;set XHARNESSPATH=$(XharnessPath);cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py + echo on;set XHARNESSPATH=$(XharnessPath);cd $(ScenarioDirectory)helloandroid;copy %HELIX_CORRELATION_PAYLOAD%\HelloAndroid.apk .;$(Python) pre.py --apk-name HelloAndroid.apk $(Python) test.py devicestartup --device-type android --package-path pub\HelloAndroid.apk --package-name net.dot.HelloAndroid --scenario-name "%(Identity)" $(Python) post.py - + + diff --git a/eng/testing/performance/performance-setup.ps1 b/eng/testing/performance/performance-setup.ps1 index 7f1be6761b5049..9696ffc9da4c75 100644 --- a/eng/testing/performance/performance-setup.ps1 +++ b/eng/testing/performance/performance-setup.ps1 @@ -149,8 +149,9 @@ if ($AndroidMono) { mkdir $WorkItemDirectory } - Copy-Item -path "$SourceDirectory\androidHelloWorld\HelloAndroid.apk" $PayloadDirectory -Verbose - Copy-Item -path "$SourceDirectory\MauiAndroidDefault.apk" $PayloadDirectory -Verbose + Copy-Item -path "$SourceDirectory\androidHelloWorld\HelloAndroid.apk" $PayloadDirectory -Verbose + #### Commented out to mitigate https://github.com/dotnet/performance/issues/2254 on main + #Copy-Item -path "$SourceDirectory\MauiAndroidDefault.apk" $PayloadDirectory -Verbose $SetupArguments = $SetupArguments -replace $Architecture, 'arm64' } diff --git a/eng/testing/tests.singlefile.targets b/eng/testing/tests.singlefile.targets index e6783add3640a3..e5f12a683a9f79 100644 --- a/eng/testing/tests.singlefile.targets +++ b/eng/testing/tests.singlefile.targets @@ -22,11 +22,15 @@ $(CoreCLRILCompilerDir) + $(CoreCLRCrossILCompilerDir) + clang-9 + $(ROOTFS_DIR) $(CoreCLRILCompilerDir)netstandard/ILCompiler.Build.Tasks.dll $(CoreCLRAotSdkDir) $(NetCoreAppCurrentTestHostSharedFrameworkPath) - $(NoWarn);IL3050;IL3052;IL3055;IL1005 + $(NoWarn);IL3050;IL3051;IL3052;IL3055;IL1005 false + true true diff --git a/eng/testing/tests.wasm.targets b/eng/testing/tests.wasm.targets index bed571a3064021..e9e8d34d696790 100644 --- a/eng/testing/tests.wasm.targets +++ b/eng/testing/tests.wasm.targets @@ -46,6 +46,7 @@ <_XHarnessArgs Condition="'$(IsFunctionalTest)' == 'true'" >$(_XHarnessArgs) --expected-exit-code=$(ExpectedExitCode) <_XHarnessArgs Condition="'$(WasmXHarnessArgs)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgs) + <_XHarnessArgs Condition="'$(WasmXHarnessArgsCli)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgsCli) <_AppArgs Condition="'$(IsFunctionalTest)' != 'true' and '$(Scenario)' != 'BuildWasmApps' and '$(WasmMainAssemblyFileName)' == ''">--run WasmTestRunner.dll $(AssemblyName).dll <_AppArgs Condition="'$(IsFunctionalTest)' != 'true' and '$(WasmMainAssemblyFileName)' != ''">--run $(WasmMainAssemblyFileName) @@ -53,6 +54,7 @@ <_AppArgs Condition="'$(WasmTestAppArgs)' != ''">$(_AppArgs) $(WasmTestAppArgs) + $HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_AppArgs) %24WasmTestAppArgs %HARNESS_RUNNER% $(_XHarnessArgs) %XHARNESS_ARGS% %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_AppArgs) %WasmTestAppArgs% diff --git a/global.json b/global.json index cdc6966b29227b..74fffa1e3eb804 100644 --- a/global.json +++ b/global.json @@ -12,11 +12,11 @@ "python3": "3.7.1" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.22080.1", - "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.22080.1", - "Microsoft.DotNet.SharedFramework.Sdk": "7.0.0-beta.22080.1", + "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.22110.7", + "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.22110.7", + "Microsoft.DotNet.SharedFramework.Sdk": "7.0.0-beta.22110.7", "Microsoft.Build.NoTargets": "3.1.0", "Microsoft.Build.Traversal": "3.0.23", - "Microsoft.NET.Sdk.IL": "7.0.0-preview.2.22080.2" + "Microsoft.NET.Sdk.IL": "7.0.0-preview.2.22103.2" } } diff --git a/src/coreclr/.nuget/coreclr-packages.proj b/src/coreclr/.nuget/coreclr-packages.proj index 5d6391b6124e22..80e3f60a9192f6 100644 --- a/src/coreclr/.nuget/coreclr-packages.proj +++ b/src/coreclr/.nuget/coreclr-packages.proj @@ -1,8 +1,8 @@ - - + + diff --git a/src/coreclr/System.Private.CoreLib/src/Microsoft/Win32/OAVariantLib.cs b/src/coreclr/System.Private.CoreLib/src/Microsoft/Win32/OAVariantLib.cs index 3886195966ebd4..958199de5a5d44 100644 --- a/src/coreclr/System.Private.CoreLib/src/Microsoft/Win32/OAVariantLib.cs +++ b/src/coreclr/System.Private.CoreLib/src/Microsoft/Win32/OAVariantLib.cs @@ -72,12 +72,8 @@ internal static class OAVariantLib * Variant and the types that CLR supports explicitly in the * CLR Variant class. */ - internal static Variant ChangeType(Variant source, Type targetClass, short options, CultureInfo culture) + internal static Variant ChangeType(Variant source, Type targetClass!!, short options, CultureInfo culture!!) { - if (targetClass == null) - throw new ArgumentNullException(nameof(targetClass)); - if (culture == null) - throw new ArgumentNullException(nameof(culture)); Variant result = default; ChangeTypeEx(ref result, ref source, culture.LCID, diff --git a/src/coreclr/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs index 90261791d0c8d5..f33849d2a949e5 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Attribute.CoreCLR.cs @@ -450,14 +450,8 @@ public static Attribute[] GetCustomAttributes(MemberInfo element, Type attribute return GetCustomAttributes(element, attributeType, true); } - public static Attribute[] GetCustomAttributes(MemberInfo element, Type attributeType, bool inherit) + public static Attribute[] GetCustomAttributes(MemberInfo element!!, Type attributeType!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -474,11 +468,8 @@ public static Attribute[] GetCustomAttributes(MemberInfo element) return GetCustomAttributes(element, true); } - public static Attribute[] GetCustomAttributes(MemberInfo element, bool inherit) + public static Attribute[] GetCustomAttributes(MemberInfo element!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - return element.MemberType switch { MemberTypes.Property => InternalGetCustomAttributes((PropertyInfo)element, typeof(Attribute), inherit), @@ -492,15 +483,9 @@ public static bool IsDefined(MemberInfo element, Type attributeType) return IsDefined(element, attributeType, true); } - public static bool IsDefined(MemberInfo element, Type attributeType, bool inherit) + public static bool IsDefined(MemberInfo element!!, Type attributeType!!, bool inherit) { // Returns true if a custom attribute subclass of attributeType class/interface with inheritance walk - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -543,14 +528,8 @@ public static Attribute[] GetCustomAttributes(ParameterInfo element, Type attrib return GetCustomAttributes(element, attributeType, true); } - public static Attribute[] GetCustomAttributes(ParameterInfo element, Type attributeType, bool inherit) + public static Attribute[] GetCustomAttributes(ParameterInfo element!!, Type attributeType!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -565,11 +544,8 @@ public static Attribute[] GetCustomAttributes(ParameterInfo element, Type attrib return (element.GetCustomAttributes(attributeType, inherit) as Attribute[])!; } - public static Attribute[] GetCustomAttributes(ParameterInfo element, bool inherit) + public static Attribute[] GetCustomAttributes(ParameterInfo element!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - if (element.Member == null) throw new ArgumentException(SR.Argument_InvalidParameterInfo, nameof(element)); @@ -586,14 +562,9 @@ public static bool IsDefined(ParameterInfo element, Type attributeType) return IsDefined(element, attributeType, true); } - public static bool IsDefined(ParameterInfo element, Type attributeType, bool inherit) + public static bool IsDefined(ParameterInfo element!!, Type attributeType!!, bool inherit) { // Returns true is a custom attribute subclass of attributeType class/interface with inheritance walk - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -653,22 +624,13 @@ public static Attribute[] GetCustomAttributes(Module element) return GetCustomAttributes(element, true); } - public static Attribute[] GetCustomAttributes(Module element, bool inherit) + public static Attribute[] GetCustomAttributes(Module element!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - return (Attribute[])element.GetCustomAttributes(typeof(Attribute), inherit); } - public static Attribute[] GetCustomAttributes(Module element, Type attributeType, bool inherit) + public static Attribute[] GetCustomAttributes(Module element!!, Type attributeType!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -680,14 +642,9 @@ public static bool IsDefined(Module element, Type attributeType) return IsDefined(element, attributeType, false); } - public static bool IsDefined(Module element, Type attributeType, bool inherit) + public static bool IsDefined(Module element!!, Type attributeType!!, bool inherit) { // Returns true is a custom attribute subclass of attributeType class/interface with no inheritance walk - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -723,14 +680,8 @@ public static Attribute[] GetCustomAttributes(Assembly element, Type attributeTy return GetCustomAttributes(element, attributeType, true); } - public static Attribute[] GetCustomAttributes(Assembly element, Type attributeType, bool inherit) + public static Attribute[] GetCustomAttributes(Assembly element!!, Type attributeType!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); @@ -742,11 +693,8 @@ public static Attribute[] GetCustomAttributes(Assembly element) return GetCustomAttributes(element, true); } - public static Attribute[] GetCustomAttributes(Assembly element, bool inherit) + public static Attribute[] GetCustomAttributes(Assembly element!!, bool inherit) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - return (Attribute[])element.GetCustomAttributes(typeof(Attribute), inherit); } @@ -755,14 +703,9 @@ public static bool IsDefined(Assembly element, Type attributeType) return IsDefined(element, attributeType, true); } - public static bool IsDefined(Assembly element, Type attributeType, bool inherit) + public static bool IsDefined(Assembly element!!, Type attributeType!!, bool inherit) { // Returns true is a custom attribute subclass of attributeType class/interface with no inheritance walk - if (element == null) - throw new ArgumentNullException(nameof(element)); - - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); if (!attributeType.IsSubclassOf(typeof(Attribute)) && attributeType != typeof(Attribute)) throw new ArgumentException(SR.Argument_MustHaveAttributeBaseClass); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Collections/EmptyReadOnlyDictionaryInternal.cs b/src/coreclr/System.Private.CoreLib/src/System/Collections/EmptyReadOnlyDictionaryInternal.cs index bb9d40bc38db3c..e63e57a3f4a11e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Collections/EmptyReadOnlyDictionaryInternal.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Collections/EmptyReadOnlyDictionaryInternal.cs @@ -33,11 +33,8 @@ IEnumerator IEnumerable.GetEnumerator() // ICollection members - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); - if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); @@ -58,23 +55,14 @@ public void CopyTo(Array array, int index) // IDictionary members - public object? this[object key] + public object? this[object key!!] { get { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } return null; } set { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - if (!key.GetType().IsSerializable) throw new ArgumentException(SR.Argument_NotSerializable, nameof(key)); @@ -94,13 +82,8 @@ public bool Contains(object key) return false; } - public void Add(object key, object? value) + public void Add(object key!!, object? value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - if (!key.GetType().IsSerializable) throw new ArgumentException(SR.Argument_NotSerializable, nameof(key)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs index 23567e475d99b9..3afbff9eb08000 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Delegate.CoreCLR.cs @@ -34,14 +34,8 @@ public abstract partial class Delegate : ICloneable, ISerializable // This constructor is called from the class generated by the // compiler generated code [RequiresUnreferencedCode("The target method might be removed")] - protected Delegate(object target, string method) + protected Delegate(object target!!, string method!!) { - if (target == null) - throw new ArgumentNullException(nameof(target)); - - if (method == null) - throw new ArgumentNullException(nameof(method)); - // This API existed in v1/v1.1 and only expected to create closed // instance delegates. Constrain the call to BindToMethodName to // such and don't allow relaxed signature matching (which could make @@ -57,17 +51,10 @@ protected Delegate(object target, string method) // This constructor is called from a class to generate a // delegate based upon a static method name and the Type object // for the class defining the method. - protected Delegate([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type target, string method) + protected Delegate([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type target!!, string method!!) { - if (target == null) - throw new ArgumentNullException(nameof(target)); - if (target.ContainsGenericParameters) throw new ArgumentException(SR.Arg_UnboundGenParam, nameof(target)); - - if (method == null) - throw new ArgumentNullException(nameof(method)); - if (!(target is RuntimeType rtTarget)) throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(target)); @@ -220,15 +207,8 @@ protected virtual MethodInfo GetMethodImpl() // V1 API. [RequiresUnreferencedCode("The target method might be removed")] - public static Delegate? CreateDelegate(Type type, object target, string method, bool ignoreCase, bool throwOnBindFailure) + public static Delegate? CreateDelegate(Type type!!, object target!!, string method!!, bool ignoreCase, bool throwOnBindFailure) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - if (target == null) - throw new ArgumentNullException(nameof(target)); - if (method == null) - throw new ArgumentNullException(nameof(method)); - if (!(type is RuntimeType rtType)) throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(type)); if (!rtType.IsDelegate()) @@ -258,17 +238,10 @@ protected virtual MethodInfo GetMethodImpl() } // V1 API. - public static Delegate? CreateDelegate(Type type, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type target, string method, bool ignoreCase, bool throwOnBindFailure) + public static Delegate? CreateDelegate(Type type!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type target!!, string method!!, bool ignoreCase, bool throwOnBindFailure) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - if (target == null) - throw new ArgumentNullException(nameof(target)); if (target.ContainsGenericParameters) throw new ArgumentException(SR.Arg_UnboundGenParam, nameof(target)); - if (method == null) - throw new ArgumentNullException(nameof(method)); - if (!(type is RuntimeType rtType)) throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(type)); if (!(target is RuntimeType rtTarget)) @@ -297,13 +270,9 @@ protected virtual MethodInfo GetMethodImpl() } // V1 API. - public static Delegate? CreateDelegate(Type type, MethodInfo method, bool throwOnBindFailure) + public static Delegate? CreateDelegate(Type type!!, MethodInfo method!!, bool throwOnBindFailure) { // Validate the parameters. - if (type == null) - throw new ArgumentNullException(nameof(type)); - if (method == null) - throw new ArgumentNullException(nameof(method)); if (!(type is RuntimeType rtType)) throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(type)); @@ -374,11 +343,9 @@ protected virtual MethodInfo GetMethodImpl() // // V2 internal API. - internal static Delegate CreateDelegateNoSecurityCheck(Type type, object? target, RuntimeMethodHandle method) + internal static Delegate CreateDelegateNoSecurityCheck(Type type!!, object? target, RuntimeMethodHandle method) { // Validate the parameters. - if (type == null) - throw new ArgumentNullException(nameof(type)); if (method.IsNullHandle()) throw new ArgumentNullException(nameof(method)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipe.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipe.CoreCLR.cs index 21f121b24f02a6..d4938c14002edc 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipe.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Eventing/EventPipe.CoreCLR.cs @@ -40,11 +40,8 @@ private static unsafe partial ulong Enable( [GeneratedDllImport(RuntimeHelpers.QCall, EntryPoint = "EventPipeInternal_DeleteProvider")] internal static partial void DeleteProvider(IntPtr provHandle); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(RuntimeHelpers.QCall, EntryPoint = "EventPipeInternal_EventActivityIdControl")] - internal static extern int EventActivityIdControl(uint controlCode, ref Guid activityId); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(RuntimeHelpers.QCall, EntryPoint = "EventPipeInternal_EventActivityIdControl")] + internal static partial int EventActivityIdControl(uint controlCode, ref Guid activityId); [GeneratedDllImport(RuntimeHelpers.QCall, EntryPoint = "EventPipeInternal_WriteEventData")] internal static unsafe partial void WriteEventData(IntPtr eventHandle, EventProvider.EventData* pEventData, uint dataCount, Guid* activityId, Guid* relatedActivityId); diff --git a/src/coreclr/System.Private.CoreLib/src/System/GC.cs b/src/coreclr/System.Private.CoreLib/src/System/GC.cs index 7597672f683164..3e28ba7d3947d5 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/GC.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/GC.cs @@ -303,10 +303,8 @@ public static void WaitForPendingFinalizers() [MethodImpl(MethodImplOptions.InternalCall)] private static extern void _SuppressFinalize(object o); - public static void SuppressFinalize(object obj) + public static void SuppressFinalize(object obj!!) { - if (obj == null) - throw new ArgumentNullException(nameof(obj)); _SuppressFinalize(obj); } @@ -317,10 +315,8 @@ public static void SuppressFinalize(object obj) [MethodImpl(MethodImplOptions.InternalCall)] private static extern void _ReRegisterForFinalize(object o); - public static void ReRegisterForFinalize(object obj) + public static void ReRegisterForFinalize(object obj!!) { - if (obj == null) - throw new ArgumentNullException(nameof(obj)); _ReRegisterForFinalize(obj); } @@ -609,10 +605,7 @@ internal static void RegisterMemoryLoadChangeNotification(float lowMemoryPercent { throw new ArgumentOutOfRangeException(nameof(lowMemoryPercent)); } - if (notification == null) - { - throw new ArgumentNullException(nameof(notification)); - } + ArgumentNullException.ThrowIfNull(notification); lock (s_notifications) { @@ -625,13 +618,8 @@ internal static void RegisterMemoryLoadChangeNotification(float lowMemoryPercent } } - internal static void UnregisterMemoryLoadChangeNotification(Action notification) + internal static void UnregisterMemoryLoadChangeNotification(Action notification!!) { - if (notification == null) - { - throw new ArgumentNullException(nameof(notification)); - } - lock (s_notifications) { for (int i = 0; i < s_notifications.Count; ++i) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Assembly.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Assembly.CoreCLR.cs index 282d713232b660..651c4aed685f46 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Assembly.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Assembly.CoreCLR.cs @@ -23,11 +23,8 @@ public static Assembly Load(string assemblyString) [Obsolete("Assembly.LoadWithPartialName has been deprecated. Use Assembly.Load() instead.")] [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod - public static Assembly? LoadWithPartialName(string partialName) + public static Assembly? LoadWithPartialName(string partialName!!) { - if (partialName == null) - throw new ArgumentNullException(nameof(partialName)); - if ((partialName.Length == 0) || (partialName[0] == '\0')) throw new ArgumentException(SR.Format_StringZeroLength, nameof(partialName)); @@ -45,11 +42,8 @@ public static Assembly Load(string assemblyString) // Locate an assembly by its name. The name can be strong or // weak. The assembly is loaded into the domain of the caller. [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod - public static Assembly Load(AssemblyName assemblyRef) + public static Assembly Load(AssemblyName assemblyRef!!) { - if (assemblyRef == null) - throw new ArgumentNullException(nameof(assemblyRef)); - StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller; return RuntimeAssembly.InternalLoad(assemblyRef, ref stackMark, AssemblyLoadContext.CurrentContextualReflectionContext); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 3e8bd014fb0aa3..b821a1141fa75a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -1,29 +1,13 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -// For each dynamic assembly there will be two AssemblyBuilder objects: the "internal" -// AssemblyBuilder object and the "external" AssemblyBuilder object. -// 1. The "internal" object is the real assembly object that the VM creates and knows about. However, -// you can perform RefEmit operations on it only if you have its granted permission. From the AppDomain -// and other "internal" objects like the "internal" ModuleBuilders and runtime types, you can only -// get the "internal" objects. This is to prevent low-trust code from getting a hold of the dynamic -// AssemblyBuilder/ModuleBuilder/TypeBuilder/MethodBuilder/etc other people have created by simply -// enumerating the AppDomain and inject code in it. -// 2. The "external" object is merely an wrapper of the "internal" object and all operations on it -// are directed to the internal object. This is the one you get by calling DefineDynamicAssembly -// on AppDomain and the one you can always perform RefEmit operations on. You can get other "external" -// objects from the "external" AssemblyBuilder, ModuleBuilder, TypeBuilder, MethodBuilder, etc. Note -// that VM doesn't know about this object. So every time we call into the VM we need to pass in the -// "internal" object. -// -// "internal" and "external" ModuleBuilders are similar - using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Diagnostics.SymbolStore; using System.Globalization; using System.IO; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Loader; @@ -73,20 +57,26 @@ internal ModuleBuilder GetModuleBuilder(RuntimeModule module) #region Constructor - internal AssemblyBuilder(AssemblyName name, + internal AssemblyBuilder(AssemblyName name!!, AssemblyBuilderAccess access, - ref StackCrawlMark stackMark, + Assembly? callingAssembly, AssemblyLoadContext? assemblyLoadContext, IEnumerable? unsafeAssemblyAttributes) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) { throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); } + if (callingAssembly == null) + { + // Called either from interop or async delegate invocation. Rejecting because we don't + // know how to set the correct context of the new dynamic assembly. + throw new InvalidOperationException(); + } + if (assemblyLoadContext == null) + { + assemblyLoadContext = AssemblyLoadContext.GetLoadContext(callingAssembly); + } // Clone the name in case the caller modifies it underneath us. name = (AssemblyName)name.Clone(); @@ -104,7 +94,6 @@ internal AssemblyBuilder(AssemblyName name, RuntimeAssembly? retAssembly = null; CreateDynamicAssembly(ObjectHandleOnStack.Create(ref name), - new StackCrawlMarkHandle(ref stackMark), (int)access, ObjectHandleOnStack.Create(ref assemblyLoadContext), ObjectHandleOnStack.Create(ref retAssembly)); @@ -150,39 +139,31 @@ private void InitManifestModule() #region DefineDynamicAssembly - /// - /// If an AssemblyName has a public key specified, the assembly is assumed - /// to have a strong name and a hash will be computed when the assembly - /// is saved. - /// - [DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod. + [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) { - StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller; return InternalDefineDynamicAssembly(name, access, - ref stackMark, + Assembly.GetCallingAssembly(), AssemblyLoadContext.CurrentContextualReflectionContext, null); } - [DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod. + [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. public static AssemblyBuilder DefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) { - StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller; return InternalDefineDynamicAssembly(name, access, - ref stackMark, + Assembly.GetCallingAssembly(), AssemblyLoadContext.CurrentContextualReflectionContext, assemblyAttributes); } [GeneratedDllImport(RuntimeHelpers.QCall, EntryPoint = "AppDomain_CreateDynamicAssembly")] private static partial void CreateDynamicAssembly(ObjectHandleOnStack name, - StackCrawlMarkHandle stackMark, int access, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack retAssembly); @@ -192,7 +173,7 @@ private static partial void CreateDynamicAssembly(ObjectHandleOnStack name, internal static AssemblyBuilder InternalDefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, - ref StackCrawlMark stackMark, + Assembly? callingAssembly, AssemblyLoadContext? assemblyLoadContext, IEnumerable? unsafeAssemblyAttributes) { @@ -201,7 +182,7 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( // We can only create dynamic assemblies in the current domain return new AssemblyBuilder(name, access, - ref stackMark, + callingAssembly, assemblyLoadContext, unsafeAssemblyAttributes); } @@ -215,7 +196,6 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( /// modules within an Assembly with the same name. This dynamic module is /// a transient module. /// - [DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod. public ModuleBuilder DefineDynamicModule(string name) { lock (SyncRoot) @@ -387,17 +367,8 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// /// Use this function if client decides to form the custom attribute blob themselves. /// - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - { - throw new ArgumentNullException(nameof(con)); - } - if (binaryAttribute == null) - { - throw new ArgumentNullException(nameof(binaryAttribute)); - } - lock (SyncRoot) { TypeBuilder.DefineCustomAttribute( @@ -411,13 +382,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) /// /// Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder. /// - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } - lock (SyncRoot) { customBuilder.CreateCustomAttribute(_manifestModuleBuilder, AssemblyBuilderData.AssemblyDefToken); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs index 1038d9ba86504a..f910b8a7e7da0d 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs @@ -48,20 +48,8 @@ public CustomAttributeBuilder(ConstructorInfo con, object?[] constructorArgs, Fi // public constructor to form the custom attribute with constructor and constructor // parameters. - public CustomAttributeBuilder(ConstructorInfo con, object?[] constructorArgs, PropertyInfo[] namedProperties, object?[] propertyValues, FieldInfo[] namedFields, object?[] fieldValues) + public CustomAttributeBuilder(ConstructorInfo con!!, object?[] constructorArgs!!, PropertyInfo[] namedProperties!!, object?[] propertyValues!!, FieldInfo[] namedFields!!, object?[] fieldValues!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - if (constructorArgs == null) - throw new ArgumentNullException(nameof(constructorArgs)); - if (namedProperties == null) - throw new ArgumentNullException(nameof(namedProperties)); - if (propertyValues == null) - throw new ArgumentNullException(nameof(propertyValues)); - if (namedFields == null) - throw new ArgumentNullException(nameof(namedFields)); - if (fieldValues == null) - throw new ArgumentNullException(nameof(fieldValues)); #pragma warning disable CA2208 // Instantiate argument exceptions correctly, combination of arguments used if (namedProperties.Length != propertyValues.Length) throw new ArgumentException(SR.Arg_ArrayLengthsDiffer, "namedProperties, propertyValues"); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs index ff832cff7e14a2..d5d36a60b4231f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs @@ -32,11 +32,9 @@ internal void GetCallableMethod(RuntimeModule module, DynamicMethod dm) // *** ILGenerator api *** - public override LocalBuilder DeclareLocal(Type localType, bool pinned) + public override LocalBuilder DeclareLocal(Type localType!!, bool pinned) { LocalBuilder localBuilder; - if (localType == null) - throw new ArgumentNullException(nameof(localType)); RuntimeType? rtType = localType as RuntimeType; @@ -55,11 +53,8 @@ public override LocalBuilder DeclareLocal(Type localType, bool pinned) // Token resolution calls // // - public override void Emit(OpCode opcode, MethodInfo meth) + public override void Emit(OpCode opcode, MethodInfo meth!!) { - if (meth == null) - throw new ArgumentNullException(nameof(meth)); - int stackchange = 0; int token; DynamicMethod? dynMeth = meth as DynamicMethod; @@ -110,11 +105,8 @@ public override void Emit(OpCode opcode, MethodInfo meth) PutInteger4(token); } - public override void Emit(OpCode opcode, ConstructorInfo con) + public override void Emit(OpCode opcode, ConstructorInfo con!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - RuntimeConstructorInfo? rtConstructor = con as RuntimeConstructorInfo; if (rtConstructor == null) throw new ArgumentException(SR.Argument_MustBeRuntimeMethodInfo, nameof(con)); @@ -137,11 +129,8 @@ public override void Emit(OpCode opcode, ConstructorInfo con) PutInteger4(token); } - public override void Emit(OpCode opcode, Type type) + public override void Emit(OpCode opcode, Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - RuntimeType? rtType = type as RuntimeType; if (rtType == null) @@ -153,11 +142,8 @@ public override void Emit(OpCode opcode, Type type) PutInteger4(token); } - public override void Emit(OpCode opcode, FieldInfo field) + public override void Emit(OpCode opcode, FieldInfo field!!) { - if (field == null) - throw new ArgumentNullException(nameof(field)); - RuntimeFieldInfo? runtimeField = field as RuntimeFieldInfo; if (runtimeField == null) throw new ArgumentException(SR.Argument_MustBeRuntimeFieldInfo, nameof(field)); @@ -173,11 +159,8 @@ public override void Emit(OpCode opcode, FieldInfo field) PutInteger4(token); } - public override void Emit(OpCode opcode, string str) + public override void Emit(OpCode opcode, string str!!) { - if (str == null) - throw new ArgumentNullException(nameof(str)); - int tempVal = GetTokenForString(str); EnsureCapacity(7); InternalEmit(opcode); @@ -264,11 +247,8 @@ public override void EmitCalli(OpCode opcode, CallingConvention unmanagedCallCon PutInteger4(token); } - public override void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes) + public override void EmitCall(OpCode opcode, MethodInfo methodInfo!!, Type[]? optionalParameterTypes) { - if (methodInfo == null) - throw new ArgumentNullException(nameof(methodInfo)); - if (!(opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj))) throw new ArgumentException(SR.Argument_NotMethodCallOpcode, nameof(opcode)); @@ -303,11 +283,8 @@ public override void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? opti PutInteger4(tk); } - public override void Emit(OpCode opcode, SignatureHelper signature) + public override void Emit(OpCode opcode, SignatureHelper signature!!) { - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - int stackchange = 0; EnsureCapacity(7); InternalEmit(opcode); @@ -376,8 +353,7 @@ public override void BeginCatchBlock(Type exceptionType) else { // execute this branch if previous clause is Catch or Fault - if (exceptionType == null) - throw new ArgumentNullException(nameof(exceptionType)); + ArgumentNullException.ThrowIfNull(exceptionType); if (rtType == null) throw new ArgumentException(SR.Argument_MustBeRuntimeType); @@ -895,8 +871,8 @@ public unsafe void SetCode(byte* code, int codeSize, int maxStackSize) { if (codeSize < 0) throw new ArgumentOutOfRangeException(nameof(codeSize), SR.ArgumentOutOfRange_GenericPositive); - if (codeSize > 0 && code == null) - throw new ArgumentNullException(nameof(code)); + if (codeSize > 0) + ArgumentNullException.ThrowIfNull(code); m_code = new Span(code, codeSize).ToArray(); m_maxStackSize = maxStackSize; @@ -913,8 +889,8 @@ public unsafe void SetExceptions(byte* exceptions, int exceptionsSize) if (exceptionsSize < 0) throw new ArgumentOutOfRangeException(nameof(exceptionsSize), SR.ArgumentOutOfRange_GenericPositive); - if (exceptionsSize > 0 && exceptions == null) - throw new ArgumentNullException(nameof(exceptions)); + if (exceptionsSize > 0) + ArgumentNullException.ThrowIfNull(exceptions); m_exceptions = new Span(exceptions, exceptionsSize).ToArray(); } @@ -930,8 +906,8 @@ public unsafe void SetLocalSignature(byte* localSignature, int signatureSize) if (signatureSize < 0) throw new ArgumentOutOfRangeException(nameof(signatureSize), SR.ArgumentOutOfRange_GenericPositive); - if (signatureSize > 0 && localSignature == null) - throw new ArgumentNullException(nameof(localSignature)); + if (signatureSize > 0) + ArgumentNullException.ThrowIfNull(localSignature); m_localSignature = new Span(localSignature, signatureSize).ToArray(); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index c98d78da4c84bf..e1819a363d3866 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.CompilerServices; +using System.Runtime.Loader; using System.Text; using System.Threading; @@ -82,11 +83,8 @@ public DynamicMethod(string name, public DynamicMethod(string name, Type? returnType, Type[]? parameterTypes, - Module m) + Module m!!) { - if (m == null) - throw new ArgumentNullException(nameof(m)); - Init(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, @@ -101,12 +99,9 @@ public DynamicMethod(string name, public DynamicMethod(string name, Type? returnType, Type[]? parameterTypes, - Module m, + Module m!!, bool skipVisibility) { - if (m == null) - throw new ArgumentNullException(nameof(m)); - Init(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, @@ -123,12 +118,9 @@ public DynamicMethod(string name, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, - Module m, + Module m!!, bool skipVisibility) { - if (m == null) - throw new ArgumentNullException(nameof(m)); - Init(name, attributes, callingConvention, @@ -143,11 +135,8 @@ public DynamicMethod(string name, public DynamicMethod(string name, Type? returnType, Type[]? parameterTypes, - Type owner) + Type owner!!) { - if (owner == null) - throw new ArgumentNullException(nameof(owner)); - Init(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, @@ -162,12 +151,9 @@ public DynamicMethod(string name, public DynamicMethod(string name, Type? returnType, Type[]? parameterTypes, - Type owner, + Type owner!!, bool skipVisibility) { - if (owner == null) - throw new ArgumentNullException(nameof(owner)); - Init(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, @@ -184,12 +170,9 @@ public DynamicMethod(string name, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, - Type owner, + Type owner!!, bool skipVisibility) { - if (owner == null) - throw new ArgumentNullException(nameof(owner)); - Init(name, attributes, callingConvention, @@ -234,12 +217,11 @@ private static RuntimeModule GetDynamicMethodsModule() return s_anonymouslyHostedDynamicMethodsModule; AssemblyName assemblyName = new AssemblyName("Anonymously Hosted DynamicMethods Assembly"); - StackCrawlMark stackMark = StackCrawlMark.LookForMe; AssemblyBuilder assembly = AssemblyBuilder.InternalDefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.Run, - ref stackMark, + typeof(object).Assembly, null, null); @@ -253,17 +235,17 @@ private static RuntimeModule GetDynamicMethodsModule() [MemberNotNull(nameof(m_parameterTypes))] [MemberNotNull(nameof(m_returnType))] [MemberNotNull(nameof(m_dynMethod))] - private void Init(string name, - MethodAttributes attributes, - CallingConventions callingConvention, - Type? returnType, - Type[]? signature, - Type? owner, - Module? m, - bool skipVisibility, - bool transparentMethod) + private void Init(string name!!, + MethodAttributes attributes, + CallingConventions callingConvention, + Type? returnType, + Type[]? signature, + Type? owner, + Module? m, + bool skipVisibility, + bool transparentMethod) { - DynamicMethod.CheckConsistency(attributes, callingConvention); + CheckConsistency(attributes, callingConvention); // check and store the signature if (signature != null) @@ -329,10 +311,6 @@ private void Init(string name, m_ilGenerator = null; m_fInitLocals = true; m_methodHandle = null; - - if (name == null) - throw new ArgumentNullException(nameof(name)); - m_dynMethod = new RTDynamicMethod(this, name, attributes, callingConvention); } @@ -655,11 +633,8 @@ public override object[] GetCustomAttributes(bool inherit) return new object[] { new MethodImplAttribute((MethodImplOptions)GetMethodImplementationFlags()) }; } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.IsAssignableFrom(typeof(MethodImplAttribute))) return true; else diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index be0ed200842094..c393d8dd1d6857 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -46,13 +46,8 @@ internal int GetEventToken() return m_evToken; } - private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttributes semantics) + private void SetMethodSemantics(MethodBuilder mdBuilder!!, MethodSemanticsAttributes semantics) { - if (mdBuilder == null) - { - throw new ArgumentNullException(nameof(mdBuilder)); - } - m_type.ThrowIfCreated(); ModuleBuilder module = m_module; TypeBuilder.DefineMethodSemantics( @@ -84,12 +79,8 @@ public void AddOtherMethod(MethodBuilder mdBuilder) // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - if (binaryAttribute == null) - throw new ArgumentNullException(nameof(binaryAttribute)); m_type.ThrowIfCreated(); TypeBuilder.DefineCustomAttribute( @@ -100,12 +91,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } m_type.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_module, m_evToken); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index c3e22c5d340719..5c65ff31c00b67 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -154,14 +154,8 @@ public void SetConstant(object? defaultValue) TypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - - if (binaryAttribute == null) - throw new ArgumentNullException(nameof(binaryAttribute)); - ModuleBuilder module = (m_typeBuilder.Module as ModuleBuilder)!; m_typeBuilder.ThrowIfCreated(); @@ -170,11 +164,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) m_fieldTok, module.GetConstructorToken(con), binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - throw new ArgumentNullException(nameof(customBuilder)); - m_typeBuilder.ThrowIfCreated(); ModuleBuilder? module = m_typeBuilder.Module as ModuleBuilder; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index 1b35f5cdbb15f0..65d97cd384e7d3 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -474,11 +474,8 @@ public virtual void Emit(OpCode opcode, int arg) PutInteger4(arg); } - public virtual void Emit(OpCode opcode, MethodInfo meth) + public virtual void Emit(OpCode opcode, MethodInfo meth!!) { - if (meth == null) - throw new ArgumentNullException(nameof(meth)); - if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj)) { EmitCall(opcode, meth, null); @@ -586,11 +583,8 @@ public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv PutInteger4(modBuilder.GetSignatureToken(sig)); } - public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes) + public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo!!, Type[]? optionalParameterTypes) { - if (methodInfo == null) - throw new ArgumentNullException(nameof(methodInfo)); - if (!(opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj))) throw new ArgumentException(SR.Argument_NotMethodCallOpcode, nameof(opcode)); @@ -621,11 +615,8 @@ public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optio PutInteger4(tk); } - public virtual void Emit(OpCode opcode, SignatureHelper signature) + public virtual void Emit(OpCode opcode, SignatureHelper signature!!) { - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - int stackchange = 0; ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; int sig = modBuilder.GetSignatureToken(signature); @@ -655,11 +646,8 @@ public virtual void Emit(OpCode opcode, SignatureHelper signature) PutInteger4(tempVal); } - public virtual void Emit(OpCode opcode, ConstructorInfo con) + public virtual void Emit(OpCode opcode, ConstructorInfo con!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - int stackchange = 0; // Constructors cannot be generic so the value of UseMethodDef doesn't matter. @@ -772,11 +760,8 @@ public virtual void Emit(OpCode opcode, Label label) } } - public virtual void Emit(OpCode opcode, Label[] labels) + public virtual void Emit(OpCode opcode, Label[] labels!!) { - if (labels == null) - throw new ArgumentNullException(nameof(labels)); - // Emitting a switch table int i; @@ -818,14 +803,9 @@ public virtual void Emit(OpCode opcode, string str) PutInteger4(tempVal); } - public virtual void Emit(OpCode opcode, LocalBuilder local) + public virtual void Emit(OpCode opcode, LocalBuilder local!!) { // Puts the opcode onto the IL stream followed by the information for local variable local. - - if (local == null) - { - throw new ArgumentNullException(nameof(local)); - } int tempVal = local.GetLocalIndex(); if (local.GetMethodBuilder() != m_methodBuilder) { @@ -1022,10 +1002,7 @@ public virtual void BeginCatchBlock(Type exceptionType) else { // execute this branch if previous clause is Catch or Fault - if (exceptionType == null) - { - throw new ArgumentNullException(nameof(exceptionType)); - } + ArgumentNullException.ThrowIfNull(exceptionType); Emit(OpCodes.Leave, current.GetEndLabel()); } @@ -1188,18 +1165,13 @@ public virtual void EmitWriteLine(LocalBuilder localBuilder) Emit(OpCodes.Callvirt, mi); } - public virtual void EmitWriteLine(FieldInfo fld) + public virtual void EmitWriteLine(FieldInfo fld!!) { // Emits the IL necessary to call WriteLine with fld. It is // an error to call EmitWriteLine with a fld which is not of // one of the types for which Console.WriteLine implements overloads. (e.g. // we do *not* call ToString on the fields. - if (fld == null) - { - throw new ArgumentNullException(nameof(fld)); - } - Type consoleType = Type.GetType(ConsoleTypeFullName, throwOnError: true)!; MethodInfo prop = consoleType.GetMethod("get_Out")!; Emit(OpCodes.Call, prop); @@ -1252,10 +1224,7 @@ public virtual LocalBuilder DeclareLocal(Type localType, bool pinned) throw new InvalidOperationException(SR.InvalidOperation_TypeHasBeenCreated); } - if (localType == null) - { - throw new ArgumentNullException(nameof(localType)); - } + ArgumentNullException.ThrowIfNull(localType); if (methodBuilder.m_bIsBaked) { diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 9d11aacaf53ea8..8c1c738f0d390b 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -130,14 +130,10 @@ internal MethodBuilder(string name, MethodAttributes attributes, CallingConventi #region Internal Members - internal void CreateMethodBodyHelper(ILGenerator il) + internal void CreateMethodBodyHelper(ILGenerator il!!) { // Sets the IL of the method. An ILGenerator is passed as an argument and the method // queries this instance to get all of the information which it needs. - if (il == null) - { - throw new ArgumentNullException(nameof(il)); - } __ExceptionInfo[] excp; int counter = 0; @@ -517,11 +513,8 @@ public override MethodInfo MakeGenericMethod(params Type[] typeArguments) return MethodBuilderInstantiation.MakeGenericMethod(this, typeArguments); } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names!!) { - if (names == null) - throw new ArgumentNullException(nameof(names)); - if (names.Length == 0) throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); @@ -529,8 +522,7 @@ public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] nam throw new InvalidOperationException(SR.InvalidOperation_GenericParametersAlreadySet); for (int i = 0; i < names.Length; i++) - if (names[i] == null) - throw new ArgumentNullException(nameof(names)); + ArgumentNullException.ThrowIfNull(names[i], nameof(names)); if (m_token != 0) throw new InvalidOperationException(SR.InvalidOperation_MethodBuilderBaked); @@ -734,13 +726,8 @@ internal Module GetModule() return GetModuleBuilder(); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con is null) - throw new ArgumentNullException(nameof(con)); - if (binaryAttribute is null) - throw new ArgumentNullException(nameof(binaryAttribute)); - ThrowIfGeneric(); TypeBuilder.DefineCustomAttribute(m_module, MetadataToken, @@ -751,11 +738,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ParseCA(con); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - throw new ArgumentNullException(nameof(customBuilder)); - ThrowIfGeneric(); customBuilder.CreateCustomAttribute((ModuleBuilder)m_module, MetadataToken); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index f1ffa97874925f..3bf175e13e1f62 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -216,14 +216,9 @@ private int GetTypeRefNested(Type type, Module? refedModule, string? strRefedMod return GetTypeRef(new QCallModule(ref thisModule), typeName, new QCallModule(ref refedRuntimeModule), strRefedModuleFileName, tkResolution); } - internal int InternalGetConstructorToken(ConstructorInfo con, bool usingRef) + internal int InternalGetConstructorToken(ConstructorInfo con!!, bool usingRef) { // Helper to get constructor token. If usingRef is true, we will never use the def token - if (con == null) - { - throw new ArgumentNullException(nameof(con)); - } - int tr; int mr; @@ -1033,13 +1028,8 @@ internal int GetTypeToken(Type type) return GetTypeTokenInternal(type, getGenericDefinition: true); } - private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) + private int GetTypeTokenWorkerNoLock(Type type!!, bool getGenericDefinition) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - AssemblyBuilder.CheckContext(type); // Return a token for the class relative to the Module. Tokens @@ -1131,15 +1121,10 @@ internal int GetMethodToken(MethodInfo method) // 1. GetMethodToken // 2. ldtoken (see ILGenerator) // For all other occasions we should return the method on the generic type instantiated on the formal parameters. - private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinition) + private int GetMethodTokenNoLock(MethodInfo method!!, bool getGenericTypeDefinition) { // Return a MemberRef token if MethodInfo is not defined in this module. Or // return the MethodDef token. - if (method == null) - { - throw new ArgumentNullException(nameof(method)); - } - int tr; int mr; @@ -1370,13 +1355,8 @@ internal int GetFieldToken(FieldInfo field) } } - private int GetFieldTokenNoLock(FieldInfo field) + private int GetFieldTokenNoLock(FieldInfo field!!) { - if (field == null) - { - throw new ArgumentNullException(nameof(field)); - } - int tr; int mr; @@ -1448,41 +1428,26 @@ private int GetFieldTokenNoLock(FieldInfo field) return mr; } - internal int GetStringConstant(string str) + internal int GetStringConstant(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - // Returns a token representing a String constant. If the string // value has already been defined, the existing token will be returned. ModuleBuilder thisModule = this; return GetStringConstant(new QCallModule(ref thisModule), str, str.Length); } - internal int GetSignatureToken(SignatureHelper sigHelper) + internal int GetSignatureToken(SignatureHelper sigHelper!!) { // Define signature token given a signature helper. This will define a metadata // token for the signature described by SignatureHelper. - if (sigHelper == null) - { - throw new ArgumentNullException(nameof(sigHelper)); - } - - // get the signature in byte form + // Get the signature in byte form. byte[] sigBytes = sigHelper.InternalGetSignature(out int sigLength); ModuleBuilder thisModule = this; return TypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), sigBytes, sigLength); } - internal int GetSignatureToken(byte[] sigBytes, int sigLength) + internal int GetSignatureToken(byte[] sigBytes!!, int sigLength) { - if (sigBytes == null) - { - throw new ArgumentNullException(nameof(sigBytes)); - } - byte[] localSigBytes = new byte[sigBytes.Length]; Buffer.BlockCopy(sigBytes, 0, localSigBytes, 0, sigBytes.Length); @@ -1494,17 +1459,8 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) #region Other - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - { - throw new ArgumentNullException(nameof(con)); - } - if (binaryAttribute == null) - { - throw new ArgumentNullException(nameof(binaryAttribute)); - } - TypeBuilder.DefineCustomAttribute( this, 1, // This is hard coding the module token to 1 @@ -1512,13 +1468,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } - customBuilder.CreateCustomAttribute(this, 1); // This is hard coding the module token to 1 } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index 79379c535874c7..6be9a88cfe9210 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -18,17 +18,8 @@ public virtual void SetConstant(object? defaultValue) } // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - { - throw new ArgumentNullException(nameof(con)); - } - if (binaryAttribute == null) - { - throw new ArgumentNullException(nameof(binaryAttribute)); - } - TypeBuilder.DefineCustomAttribute( _methodBuilder.GetModuleBuilder(), _token, @@ -37,12 +28,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } customBuilder.CreateCustomAttribute((ModuleBuilder)(_methodBuilder.GetModule()), _token); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 89accc39caeb98..71dfd932e12605 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -67,13 +67,8 @@ public void SetConstant(object? defaultValue) public override Module Module => m_containingType.Module; - private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttributes semantics) + private void SetMethodSemantics(MethodBuilder mdBuilder!!, MethodSemanticsAttributes semantics) { - if (mdBuilder == null) - { - throw new ArgumentNullException(nameof(mdBuilder)); - } - m_containingType.ThrowIfCreated(); ModuleBuilder module = m_moduleBuilder; TypeBuilder.DefineMethodSemantics( @@ -102,13 +97,8 @@ public void AddOtherMethod(MethodBuilder mdBuilder) // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - if (binaryAttribute == null) - throw new ArgumentNullException(nameof(binaryAttribute)); - m_containingType.ThrowIfCreated(); TypeBuilder.DefineCustomAttribute( m_moduleBuilder, @@ -118,12 +108,8 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } m_containingType.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_moduleBuilder, m_tkProperty); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 9dd3a2fbb63e89..cacb7ac0121c55 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -167,14 +167,8 @@ public static SignatureHelper GetPropertySigHelper(Module? mod, CallingConventio return sigHelp; } - internal static SignatureHelper GetTypeSigToken(Module module, Type type) + internal static SignatureHelper GetTypeSigToken(Module module!!, Type type!!) { - if (module == null) - throw new ArgumentNullException(nameof(module)); - - if (type == null) - throw new ArgumentNullException(nameof(type)); - return new SignatureHelper(module, type); } #endregion @@ -308,8 +302,7 @@ private void AddOneArgTypeHelper(Type clsArgument, Type[]? requiredCustomModifie { Type t = requiredCustomModifiers[i]; - if (t == null) - throw new ArgumentNullException(nameof(requiredCustomModifiers)); + ArgumentNullException.ThrowIfNull(t, nameof(requiredCustomModifiers)); if (t.HasElementType) throw new ArgumentException(SR.Argument_ArraysInvalid, nameof(requiredCustomModifiers)); @@ -746,11 +739,8 @@ public void AddArgument(Type clsArgument) AddArgument(clsArgument, null, null); } - public void AddArgument(Type argument, bool pinned) + public void AddArgument(Type argument!!, bool pinned) { - if (argument == null) - throw new ArgumentNullException(nameof(argument)); - IncrementArgCounts(); AddOneArgTypeHelper(argument, pinned); } @@ -777,8 +767,7 @@ public void AddArgument(Type argument, Type[]? requiredCustomModifiers, Type[]? if (m_sigDone) throw new ArgumentException(SR.Argument_SigIsFinalized); - if (argument == null) - throw new ArgumentNullException(nameof(argument)); + ArgumentNullException.ThrowIfNull(argument); IncrementArgCounts(); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolType.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolType.cs index f714e5ebd59975..735956362086dd 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolType.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolType.cs @@ -224,11 +224,8 @@ internal SymbolType(TypeKind typeKind) #endregion #region Internal Members - internal void SetElementType(Type baseType) + internal void SetElementType(Type baseType!!) { - if (baseType is null) - throw new ArgumentNullException(nameof(baseType)); - m_baseType = baseType; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index ad80acad078350..0f353d383e0afb 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -25,23 +25,14 @@ private sealed class CustAttr private readonly byte[]? m_binaryAttribute; private readonly CustomAttributeBuilder? m_customBuilder; - public CustAttr(ConstructorInfo con, byte[] binaryAttribute) + public CustAttr(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con is null) - throw new ArgumentNullException(nameof(con)); - - if (binaryAttribute is null) - throw new ArgumentNullException(nameof(binaryAttribute)); - m_con = con; m_binaryAttribute = binaryAttribute; } - public CustAttr(CustomAttributeBuilder customBuilder) + public CustAttr(CustomAttributeBuilder customBuilder!!) { - if (customBuilder is null) - throw new ArgumentNullException(nameof(customBuilder)); - m_customBuilder = customBuilder; } @@ -509,11 +500,8 @@ internal TypeBuilder( { for (i = 0; i < interfaces.Length; i++) { - if (interfaces[i] == null) - { - // cannot contain null in the interface list - throw new ArgumentNullException(nameof(interfaces)); - } + // cannot contain null in the interface list + ArgumentNullException.ThrowIfNull(interfaces[i], nameof(interfaces)); } interfaceTokens = new int[interfaces.Length + 1]; for (i = 0; i < interfaces.Length; i++) @@ -1120,8 +1108,7 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) if (!IsCreated()) throw new NotSupportedException(SR.NotSupported_TypeNotYetCreated); - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); + ArgumentNullException.ThrowIfNull(attributeType); if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -1134,8 +1121,7 @@ public override bool IsDefined(Type attributeType, bool inherit) if (!IsCreated()) throw new NotSupportedException(SR.NotSupported_TypeNotYetCreated); - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); + ArgumentNullException.ThrowIfNull(attributeType); if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -1161,17 +1147,13 @@ internal void SetInterfaces(params Type[]? interfaces) } } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names!!) { - if (names == null) - throw new ArgumentNullException(nameof(names)); - if (names.Length == 0) throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); for (int i = 0; i < names.Length; i++) - if (names[i] == null) - throw new ArgumentNullException(nameof(names)); + ArgumentNullException.ThrowIfNull(names[i], nameof(names)); if (m_inst != null) throw new InvalidOperationException(); @@ -1214,14 +1196,8 @@ public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInf } } - private void DefineMethodOverrideNoLock(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + private void DefineMethodOverrideNoLock(MethodInfo methodInfoBody!!, MethodInfo methodInfoDeclaration!!) { - if (methodInfoBody == null) - throw new ArgumentNullException(nameof(methodInfoBody)); - - if (methodInfoDeclaration == null) - throw new ArgumentNullException(nameof(methodInfoDeclaration)); - ThrowIfCreated(); if (!ReferenceEquals(methodInfoBody.DeclaringType, this)) @@ -1700,11 +1676,8 @@ public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttribu } } - private FieldBuilder DefineInitializedDataNoLock(string name, byte[] data, FieldAttributes attributes) + private FieldBuilder DefineInitializedDataNoLock(string name, byte[] data!!, FieldAttributes attributes) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - // This method will define an initialized Data in .sdata. // We will create a fake TypeDef to represent the data with size. This TypeDef // will be the signature for the Field. @@ -2096,13 +2069,8 @@ public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes } } - public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType!!) { - if (interfaceType == null) - { - throw new ArgumentNullException(nameof(interfaceType)); - } - AssemblyBuilder.CheckContext(interfaceType); ThrowIfCreated(); @@ -2125,23 +2093,14 @@ internal int TypeToken } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - throw new ArgumentNullException(nameof(con)); - - if (binaryAttribute == null) - throw new ArgumentNullException(nameof(binaryAttribute)); - DefineCustomAttribute(m_module, m_tdType, ((ModuleBuilder)m_module).GetConstructorToken(con), binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - throw new ArgumentNullException(nameof(customBuilder)); - customBuilder.CreateCustomAttribute((ModuleBuilder)m_module, m_tdType); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs index 3f2cadc852e6af..4e195408633ece 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs @@ -24,13 +24,11 @@ internal static Type MakeGenericType(Type type, Type[] typeArguments) if (!type.IsGenericTypeDefinition) throw new InvalidOperationException(); - if (typeArguments == null) - throw new ArgumentNullException(nameof(typeArguments)); + ArgumentNullException.ThrowIfNull(typeArguments); foreach (Type t in typeArguments) { - if (t == null) - throw new ArgumentNullException(nameof(typeArguments)); + ArgumentNullException.ThrowIfNull(t, nameof(typeArguments)); } return new TypeBuilderInstantiation(type, typeArguments); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/MemberInfo.Internal.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/MemberInfo.Internal.cs index 7d5736ee88de11..fe79a0e8e7c83f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/MemberInfo.Internal.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/MemberInfo.Internal.cs @@ -7,11 +7,8 @@ public abstract partial class MemberInfo { internal virtual bool CacheEquals(object? o) { throw new NotImplementedException(); } - internal bool HasSameMetadataDefinitionAsCore(MemberInfo other) where TOther : MemberInfo + internal bool HasSameMetadataDefinitionAsCore(MemberInfo other!!) where TOther : MemberInfo { - if (other is null) - throw new ArgumentNullException(nameof(other)); - // Ensure that "other" is a runtime-implemented MemberInfo. Do this check before calling any methods on it! if (!(other is TOther)) return false; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs index 332dd6301cde09..fa7385a02dfc66 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/AssemblyExtensions.cs @@ -28,13 +28,8 @@ public static partial class AssemblyExtensions /// The caller is responsible for keeping the assembly object alive while accessing the metadata blob. /// [CLSCompliant(false)] // out byte* blob - public static unsafe bool TryGetRawMetadata(this Assembly assembly, out byte* blob, out int length) + public static unsafe bool TryGetRawMetadata(this Assembly assembly!!, out byte* blob, out int length) { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - blob = null; length = 0; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/MetadataUpdater.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/MetadataUpdater.cs index 87366de57eb010..462df732af729c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/MetadataUpdater.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Metadata/MetadataUpdater.cs @@ -36,7 +36,7 @@ public static void ApplyUpdate(Assembly assembly, ReadOnlySpan metadataDel { if (assembly is not RuntimeAssembly runtimeAssembly) { - if (assembly is null) throw new ArgumentNullException(nameof(assembly)); + ArgumentNullException.ThrowIfNull(assembly); throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs index 7eed453959c668..1b66fb3c8244c1 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs @@ -88,12 +88,22 @@ public override string? CodeBase { get { - var codeBase = GetCodeBase(); + if (IsDynamic) + { + throw new NotSupportedException(SR.NotSupported_DynamicAssembly); + } + + string? codeBase = GetCodeBase(); if (codeBase is null) { - // Not supported if the assembly was loaded from memory + // Not supported if the assembly was loaded from single-file bundle. throw new NotSupportedException(SR.NotSupported_CodeBase); } + if (codeBase.Length == 0) + { + // For backward compatibility, return CoreLib codebase for assemblies loaded from memory. + codeBase = typeof(object).Assembly.CodeBase; + } return codeBase; } } @@ -174,12 +184,10 @@ private static partial void GetType(QCallAssembly assembly, ObjectHandleOnStack assemblyLoadContext); [RequiresUnreferencedCode("Types might be removed")] - public override Type? GetType(string name, bool throwOnError, bool ignoreCase) + public override Type? GetType( + string name!!, // throw on null strings regardless of the value of "throwOnError" + bool throwOnError, bool ignoreCase) { - // throw on null strings regardless of the value of "throwOnError" - if (name == null) - throw new ArgumentNullException(nameof(name)); - RuntimeType? type = null; object? keepAlive = null; AssemblyLoadContext? assemblyLoadContextStack = AssemblyLoadContext.CurrentContextualReflectionContext; @@ -252,8 +260,8 @@ public override bool IsCollectible // Load a resource based on the NameSpace of the type. public override Stream? GetManifestResourceStream(Type type, string name) { - if (type == null && name == null) - throw new ArgumentNullException(nameof(type)); + if (name == null) + ArgumentNullException.ThrowIfNull(type); string? nameSpace = type?.Namespace; @@ -294,22 +302,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -566,11 +568,8 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture) } // Useful for binding to a very specific version of a satellite assembly - public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? version) + public override Assembly GetSatelliteAssembly(CultureInfo culture!!, Version? version) { - if (culture == null) - throw new ArgumentNullException(nameof(culture)); - return InternalGetSatelliteAssembly(culture, version, throwOnFileNotFound: true)!; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.CoreCLR.cs index 7f34d5438c6bea..267b738794a63a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.CoreCLR.cs @@ -115,22 +115,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs index edf7aeb269c26b..9eecc089e72c40 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeCustomAttributeData.cs @@ -679,11 +679,8 @@ private static extern void ParseAttributeArguments( internal static void ParseAttributeArguments(ConstArray attributeBlob, ref CustomAttributeCtorParameter[] customAttributeCtorParameters, ref CustomAttributeNamedParameter[] customAttributeNamedParameters, - RuntimeModule customAttributeModule) + RuntimeModule customAttributeModule!!) { - if (customAttributeModule is null) - throw new ArgumentNullException(nameof(customAttributeModule)); - Debug.Assert(customAttributeCtorParameters is not null); Debug.Assert(customAttributeNamedParameters is not null); @@ -713,11 +710,8 @@ internal readonly struct CustomAttributeNamedParameter private readonly CustomAttributeType m_type; private readonly CustomAttributeEncodedArgument m_encodedArgument; - public CustomAttributeNamedParameter(string argumentName, CustomAttributeEncoding fieldOrProperty, CustomAttributeType type) + public CustomAttributeNamedParameter(string argumentName!!, CustomAttributeEncoding fieldOrProperty, CustomAttributeType type) { - if (argumentName is null) - throw new ArgumentNullException(nameof(argumentName)); - m_argumentName = argumentName; m_fieldOrProperty = fieldOrProperty; m_padding = fieldOrProperty; @@ -1873,12 +1867,6 @@ internal static bool IsDefined(RuntimeFieldInfo field, RuntimeType? caType) } type.GetRuntimeModule().MetadataImport.GetClassLayout(type.MetadataToken, out int pack, out int size); - // Metadata parameter checking should not have allowed 0 for packing size. - // The runtime later converts a packing size of 0 to 8 so do the same here - // because it's more useful from a user perspective. - if (pack == 0) - pack = 8; // DEFAULT_PACKING_SIZE - StructLayoutAttribute attribute = new StructLayoutAttribute(layoutKind); attribute.Pack = pack; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeEventInfo.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeEventInfo.cs index 6abf767636e0dd..b0d5805804208c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeEventInfo.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeEventInfo.cs @@ -76,22 +76,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeFieldInfo.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeFieldInfo.cs index 10605ef5f533c1..d2ddb1f36091c1 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeFieldInfo.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeFieldInfo.cs @@ -61,22 +61,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.CoreCLR.cs index 43984c60a5468d..2b26b90cb7770f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.CoreCLR.cs @@ -205,22 +205,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!, inherit); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType, inherit); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -417,12 +411,9 @@ public override Delegate CreateDelegate(Type delegateType, object? target) DelegateBindingFlags.RelaxedSignature); } - private Delegate CreateDelegateInternal(Type delegateType, object? firstArgument, DelegateBindingFlags bindingFlags) + private Delegate CreateDelegateInternal(Type delegateType!!, object? firstArgument, DelegateBindingFlags bindingFlags) { // Validate the parameters. - if (delegateType == null) - throw new ArgumentNullException(nameof(delegateType)); - RuntimeType? rtType = delegateType as RuntimeType; if (rtType == null) throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(delegateType)); @@ -443,11 +434,8 @@ private Delegate CreateDelegateInternal(Type delegateType, object? firstArgument #region Generics [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public override MethodInfo MakeGenericMethod(params Type[] methodInstantiation) + public override MethodInfo MakeGenericMethod(params Type[] methodInstantiation!!) { - if (methodInstantiation == null) - throw new ArgumentNullException(nameof(methodInstantiation)); - RuntimeType[] methodInstantionRuntimeType = new RuntimeType[methodInstantiation.Length]; if (!IsGenericMethodDefinition) @@ -457,9 +445,7 @@ public override MethodInfo MakeGenericMethod(params Type[] methodInstantiation) for (int i = 0; i < methodInstantiation.Length; i++) { Type methodInstantiationElem = methodInstantiation[i]; - - if (methodInstantiationElem == null) - throw new ArgumentNullException(); + ArgumentNullException.ThrowIfNull(methodInstantiationElem, null); RuntimeType? rtMethodInstantiationElem = methodInstantiationElem as RuntimeType; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeModule.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeModule.cs index e8b52d01d5e0da..4b5760f14c713e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeModule.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeModule.cs @@ -385,22 +385,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -420,12 +414,10 @@ public override void GetObjectData(SerializationInfo info, StreamingContext cont } [RequiresUnreferencedCode("Types might be removed")] - public override Type? GetType(string className, bool throwOnError, bool ignoreCase) + public override Type? GetType( + string className!!, // throw on null strings regardless of the value of "throwOnError" + bool throwOnError, bool ignoreCase) { - // throw on null strings regardless of the value of "throwOnError" - if (className == null) - throw new ArgumentNullException(nameof(className)); - RuntimeType? retType = null; object? keepAlive = null; RuntimeModule thisAsLocal = this; @@ -483,15 +475,9 @@ public override FieldInfo[] GetFields(BindingFlags bindingFlags) } [RequiresUnreferencedCode("Fields might be removed")] - public override FieldInfo? GetField(string name, BindingFlags bindingAttr) + public override FieldInfo? GetField(string name!!, BindingFlags bindingAttr) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (RuntimeType == null) - return null; - - return RuntimeType.GetField(name, bindingAttr); + return RuntimeType?.GetField(name, bindingAttr); } [RequiresUnreferencedCode("Methods might be removed")] diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs index 173caf6855a0aa..33777c745dbfcb 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs @@ -507,11 +507,8 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (MdToken.IsNullToken(m_tkParamDef)) return Array.Empty(); @@ -521,11 +518,8 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (MdToken.IsNullToken(m_tkParamDef)) return false; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimePropertyInfo.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimePropertyInfo.cs index a768a983ba6b8e..1b6c630470c3a1 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimePropertyInfo.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimePropertyInfo.cs @@ -137,22 +137,16 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, (typeof(object) as RuntimeType)!); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.GetCustomAttributes(this, attributeRuntimeType); } - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs index 696b33428efc5e..953fbff5509313 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs @@ -160,11 +160,7 @@ public static object GetUninitializedObject( { if (type is not RuntimeType rt) { - if (type is null) - { - throw new ArgumentNullException(nameof(type), SR.ArgumentNull_Type); - } - + ArgumentNullException.ThrowIfNull(type); throw new SerializationException(SR.Format(SR.Serialization_InvalidType, type)); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/TypeDependencyAttribute.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/TypeDependencyAttribute.cs index 45807f72ab2cc1..b3e7c67442eaf3 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/TypeDependencyAttribute.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/TypeDependencyAttribute.cs @@ -10,9 +10,8 @@ internal sealed class TypeDependencyAttribute : Attribute { private readonly string typeName; - public TypeDependencyAttribute(string typeName) + public TypeDependencyAttribute(string typeName!!) { - if (typeName == null) throw new ArgumentNullException(nameof(typeName)); this.typeName = typeName; } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs index 0be7527408c885..7e5d4a3f2d208e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs @@ -95,11 +95,8 @@ public IntPtr GetOrCreateComInterfaceForObject(object instance, CreateComInterfa /// /// If is null, the global instance (if registered) will be used. /// - private static bool TryGetOrCreateComInterfaceForObjectInternal(ComWrappers impl, object instance, CreateComInterfaceFlags flags, out IntPtr retValue) + private static bool TryGetOrCreateComInterfaceForObjectInternal(ComWrappers impl, object instance!!, CreateComInterfaceFlags flags, out IntPtr retValue) { - if (instance == null) - throw new ArgumentNullException(nameof(instance)); - return TryGetOrCreateComInterfaceForObjectInternal(ObjectHandleOnStack.Create(ref impl), impl.id, ObjectHandleOnStack.Create(ref instance), flags, out retValue); } @@ -206,11 +203,8 @@ public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, Create /// /// If the instance already has an associated external object a will be thrown. /// - public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper, IntPtr inner) + public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper!!, IntPtr inner) { - if (wrapper == null) - throw new ArgumentNullException(nameof(wrapper)); - object? obj; if (!TryGetOrCreateObjectForComInstanceInternal(this, externalComObject, inner, flags, wrapper, out obj)) throw new ArgumentNullException(nameof(externalComObject)); @@ -239,8 +233,7 @@ private static bool TryGetOrCreateObjectForComInstanceInternal( object? wrapperMaybe, out object? retValue) { - if (externalComObject == IntPtr.Zero) - throw new ArgumentNullException(nameof(externalComObject)); + ArgumentNullException.ThrowIfNull(externalComObject); // If the inner is supplied the Aggregation flag should be set. if (innerMaybe != IntPtr.Zero && !flags.HasFlag(CreateObjectFlags.Aggregation)) @@ -269,11 +262,8 @@ internal static void CallReleaseObjects(ComWrappers? comWrappersImpl, IEnumerabl /// Scenarios where this global instance may be used are: /// * Object tracking via the and flags. /// - public static void RegisterForTrackerSupport(ComWrappers instance) + public static void RegisterForTrackerSupport(ComWrappers instance!!) { - if (instance == null) - throw new ArgumentNullException(nameof(instance)); - if (null != Interlocked.CompareExchange(ref s_globalInstanceForTrackerSupport, instance, null)) { throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); @@ -301,11 +291,8 @@ public static void RegisterForTrackerSupport(ComWrappers instance) /// * COM activation /// [SupportedOSPlatform("windows")] - public static void RegisterForMarshalling(ComWrappers instance) + public static void RegisterForMarshalling(ComWrappers instance!!) { - if (instance == null) - throw new ArgumentNullException(nameof(instance)); - if (null != Interlocked.CompareExchange(ref s_globalInstanceForMarshalling, instance, null)) { throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumVariantViewOfEnumerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumVariantViewOfEnumerator.cs index c6a27d62c095f1..6a93d2b5ebd84c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumVariantViewOfEnumerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumVariantViewOfEnumerator.cs @@ -8,13 +8,8 @@ namespace System.Runtime.InteropServices.CustomMarshalers { internal sealed class EnumVariantViewOfEnumerator : ComTypes.IEnumVARIANT, ICustomAdapter { - public EnumVariantViewOfEnumerator(IEnumerator enumerator) + public EnumVariantViewOfEnumerator(IEnumerator enumerator!!) { - if (enumerator is null) - { - throw new ArgumentNullException(nameof(enumerator)); - } - Enumerator = enumerator; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumerableToDispatchMarshaler.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumerableToDispatchMarshaler.cs index adc6338feb544f..eef801c7fe4fb5 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumerableToDispatchMarshaler.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumerableToDispatchMarshaler.cs @@ -32,22 +32,14 @@ public int GetNativeDataSize() return -1; } - public IntPtr MarshalManagedToNative(object ManagedObj) + public IntPtr MarshalManagedToNative(object ManagedObj!!) { - if (ManagedObj == null) - { - throw new ArgumentNullException(nameof(ManagedObj)); - } - return Marshal.GetComInterfaceForObject(ManagedObj); } public object MarshalNativeToManaged(IntPtr pNativeData) { - if (pNativeData == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(pNativeData)); - } + ArgumentNullException.ThrowIfNull(pNativeData); object comObject = Marshal.GetObjectForIUnknown(pNativeData); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumeratorToEnumVariantMarshaler.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumeratorToEnumVariantMarshaler.cs index 997d22d343f090..f360e169c496fd 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumeratorToEnumVariantMarshaler.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/CustomMarshalers/EnumeratorToEnumVariantMarshaler.cs @@ -33,13 +33,8 @@ public int GetNativeDataSize() return -1; } - public IntPtr MarshalManagedToNative(object ManagedObj) + public IntPtr MarshalManagedToNative(object ManagedObj!!) { - if (ManagedObj == null) - { - throw new ArgumentNullException(nameof(ManagedObj)); - } - if (ManagedObj is EnumeratorViewOfEnumVariant view) { return Marshal.GetComInterfaceForObject(view.GetUnderlyingObject()); @@ -52,10 +47,7 @@ public IntPtr MarshalManagedToNative(object ManagedObj) public object MarshalNativeToManaged(IntPtr pNativeData) { - if (pNativeData == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(pNativeData)); - } + ArgumentNullException.ThrowIfNull(pNativeData); object comObject = Marshal.GetObjectForIUnknown(pNativeData); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.CoreCLR.cs index e8a0ae8fd35ae4..9bd809a37fea4b 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.CoreCLR.cs @@ -28,13 +28,8 @@ public static partial class Marshal [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", Justification = "Trimming doesn't affect types eligible for marshalling. Different exception for invalid inputs doesn't matter.")] - public static IntPtr OffsetOf(Type t, string fieldName) + public static IntPtr OffsetOf(Type t!!, string fieldName) { - if (t is null) - { - throw new ArgumentNullException(nameof(t)); - } - FieldInfo? f = t.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (f is null) @@ -235,13 +230,8 @@ private static void PrelinkCore(MethodInfo m) /// Returns the HInstance for this module. Returns -1 if the module doesn't have /// an HInstance. In Memory (Dynamic) Modules won't have an HInstance. /// - public static IntPtr GetHINSTANCE(Module m) + public static IntPtr GetHINSTANCE(Module m!!) { - if (m is null) - { - throw new ArgumentNullException(nameof(m)); - } - if (m is RuntimeModule rtModule) { return GetHINSTANCE(new QCallModule(ref rtModule)); @@ -271,13 +261,8 @@ public static IntPtr GetHINSTANCE(Module m) /// Given a managed object that wraps an ITypeInfo, return its name. /// [SupportedOSPlatform("windows")] - public static string GetTypeInfoName(ITypeInfo typeInfo) + public static string GetTypeInfoName(ITypeInfo typeInfo!!) { - if (typeInfo is null) - { - throw new ArgumentNullException(nameof(typeInfo)); - } - typeInfo.GetDocumentation(-1, out string strTypeLibName, out _, out _, out _); return strTypeLibName; } @@ -298,24 +283,17 @@ public static string GetTypeInfoName(ITypeInfo typeInfo) GetTypeFromCLSID(clsid, server, ObjectHandleOnStack.Create(ref type)); return type; } -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetTypeFromCLSID", CharSet = CharSet.Unicode)] - private static extern void GetTypeFromCLSID(in Guid clsid, string? server, ObjectHandleOnStack retType); -#pragma warning restore DLLIMPORTGENANALYZER015 + + [GeneratedDllImport(RuntimeHelpers.QCall, EntryPoint = "MarshalNative_GetTypeFromCLSID", CharSet = CharSet.Unicode)] + private static partial void GetTypeFromCLSID(in Guid clsid, string? server, ObjectHandleOnStack retType); /// /// Return the IUnknown* for an Object if the current context is the one /// where the RCW was first seen. Will return null otherwise. /// [SupportedOSPlatform("windows")] - public static IntPtr /* IUnknown* */ GetIUnknownForObject(object o) + public static IntPtr /* IUnknown* */ GetIUnknownForObject(object o!!) { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - return GetIUnknownForObjectNative(o); } @@ -326,13 +304,8 @@ public static string GetTypeInfoName(ITypeInfo typeInfo) /// Return the IDispatch* for an Object. /// [SupportedOSPlatform("windows")] - public static IntPtr /* IDispatch */ GetIDispatchForObject(object o) + public static IntPtr /* IDispatch */ GetIDispatchForObject(object o!!) { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - return GetIDispatchForObjectNative(o); } @@ -344,18 +317,8 @@ public static string GetTypeInfoName(ITypeInfo typeInfo) /// Object o should support Type T /// [SupportedOSPlatform("windows")] - public static IntPtr /* IUnknown* */ GetComInterfaceForObject(object o, Type T) + public static IntPtr /* IUnknown* */ GetComInterfaceForObject(object o!!, Type T!!) { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - - if (T is null) - { - throw new ArgumentNullException(nameof(T)); - } - return GetComInterfaceForObjectNative(o, T, true); } @@ -368,18 +331,8 @@ public static string GetTypeInfoName(ITypeInfo typeInfo) /// invoke customized QueryInterface or not. /// [SupportedOSPlatform("windows")] - public static IntPtr /* IUnknown* */ GetComInterfaceForObject(object o, Type T, CustomQueryInterfaceMode mode) + public static IntPtr /* IUnknown* */ GetComInterfaceForObject(object o!!, Type T!!, CustomQueryInterfaceMode mode) { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - - if (T is null) - { - throw new ArgumentNullException(nameof(T)); - } - bool bEnableCustomizedQueryInterface = ((mode == CustomQueryInterfaceMode.Allow) ? true : false); return GetComInterfaceForObjectNative(o, T, bEnableCustomizedQueryInterface); } @@ -393,10 +346,7 @@ public static string GetTypeInfoName(ITypeInfo typeInfo) [SupportedOSPlatform("windows")] public static object GetObjectForIUnknown(IntPtr /* IUnknown* */ pUnk) { - if (pUnk == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(pUnk)); - } + ArgumentNullException.ThrowIfNull(pUnk); return GetObjectForIUnknownNative(pUnk); } @@ -407,10 +357,7 @@ public static object GetObjectForIUnknown(IntPtr /* IUnknown* */ pUnk) [SupportedOSPlatform("windows")] public static object GetUniqueObjectForIUnknown(IntPtr unknown) { - if (unknown == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(unknown)); - } + ArgumentNullException.ThrowIfNull(unknown); return GetUniqueObjectForIUnknownNative(unknown); } @@ -466,13 +413,8 @@ public static IntPtr CreateAggregatedObject(IntPtr pOuter, T o) where T : not /// /// Checks if the object is classic COM component. /// - public static bool IsComObject(object o) + public static bool IsComObject(object o!!) { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - return o is __ComObject; } @@ -516,10 +458,7 @@ public static int FinalReleaseComObject(object o) throw new NotSupportedException(SR.NotSupported_COM); } - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } + ArgumentNullException.ThrowIfNull(o); if (!(o is __ComObject co)) { throw new ArgumentException(SR.Argument_ObjNotComObject, nameof(o)); @@ -540,14 +479,8 @@ public static int FinalReleaseComObject(object o) throw new NotSupportedException(SR.NotSupported_COM); } - if (obj is null) - { - throw new ArgumentNullException(nameof(obj)); - } - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } + ArgumentNullException.ThrowIfNull(obj); + ArgumentNullException.ThrowIfNull(key); if (!(obj is __ComObject co)) { throw new ArgumentException(SR.Argument_ObjNotComObject, nameof(obj)); @@ -571,14 +504,8 @@ public static bool SetComObjectData(object obj, object key, object? data) throw new NotSupportedException(SR.NotSupported_COM); } - if (obj is null) - { - throw new ArgumentNullException(nameof(obj)); - } - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } + ArgumentNullException.ThrowIfNull(obj); + ArgumentNullException.ThrowIfNull(key); if (!(obj is __ComObject co)) { throw new ArgumentException(SR.Argument_ObjNotComObject, nameof(obj)); @@ -601,10 +528,7 @@ public static bool SetComObjectData(object obj, object key, object? data) throw new NotSupportedException(SR.NotSupported_COM); } - if (t is null) - { - throw new ArgumentNullException(nameof(t)); - } + ArgumentNullException.ThrowIfNull(t); if (!t.IsCOMObject) { throw new ArgumentException(SR.Argument_TypeNotComObject, nameof(t)); @@ -772,32 +696,48 @@ public static object BindToMoniker(string monikerName) throw new NotSupportedException(SR.NotSupported_COM); } - CreateBindCtx(0, out IBindCtx bindctx); + ThrowExceptionForHR(CreateBindCtx(0, out IntPtr bindctx)); - MkParseDisplayName(bindctx, monikerName, out _, out IMoniker pmoniker); - BindMoniker(pmoniker, 0, ref IID_IUnknown, out object obj); - - return obj; + try + { + ThrowExceptionForHR(MkParseDisplayName(bindctx, monikerName, out _, out IntPtr pmoniker)); + try + { + ThrowExceptionForHR(BindMoniker(pmoniker, 0, ref IID_IUnknown, out IntPtr ptr)); + try + { + return GetObjectForIUnknown(ptr); + } + finally + { + Release(ptr); + } + } + finally + { + Release(pmoniker); + } + } + finally + { + Release(bindctx); + } } -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // These methods use built-in COM interop, which is not supported by the source generator. - // Revist after https://github.com/mono/linker/issues/1989 is fixed [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2050:UnrecognizedReflectionPattern", Justification = "The calling method is annotated with RequiresUnreferencedCode")] - [DllImport(Interop.Libraries.Ole32, PreserveSig = false)] - private static extern void CreateBindCtx(uint reserved, out IBindCtx ppbc); + [GeneratedDllImport(Interop.Libraries.Ole32)] + private static partial int CreateBindCtx(uint reserved, out IntPtr ppbc); [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2050:UnrecognizedReflectionPattern", Justification = "The calling method is annotated with RequiresUnreferencedCode")] - [DllImport(Interop.Libraries.Ole32, PreserveSig = false)] - private static extern void MkParseDisplayName(IBindCtx pbc, [MarshalAs(UnmanagedType.LPWStr)] string szUserName, out uint pchEaten, out IMoniker ppmk); + [GeneratedDllImport(Interop.Libraries.Ole32)] + private static partial int MkParseDisplayName(IntPtr pbc, [MarshalAs(UnmanagedType.LPWStr)] string szUserName, out uint pchEaten, out IntPtr ppmk); [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2050:UnrecognizedReflectionPattern", Justification = "The calling method is annotated with RequiresUnreferencedCode")] - [DllImport(Interop.Libraries.Ole32, PreserveSig = false)] - private static extern void BindMoniker(IMoniker pmk, uint grfOpt, ref Guid iidResult, [MarshalAs(UnmanagedType.Interface)] out object ppvResult); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Interop.Libraries.Ole32)] + private static partial int BindMoniker(IntPtr pmk, uint grfOpt, ref Guid iidResult, out IntPtr ppvResult); [SupportedOSPlatform("windows")] [MethodImpl(MethodImplOptions.InternalCall)] diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreCLR.cs index f1dafd58a819f9..d66e52912c0699 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreCLR.cs @@ -31,4 +31,4 @@ public static partial class JitInfo [MethodImpl(MethodImplOptions.InternalCall)] private static extern long GetCompilationTimeInTicks(bool currentThread = false); } -} \ No newline at end of file +} diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs index 454d5ef1b8d8e9..189544527f65b5 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs @@ -81,10 +81,8 @@ internal unsafe Assembly InternalLoad(ReadOnlySpan arrAssembly, ReadOnlySp /// internal Assembly LoadFromInMemoryModule(IntPtr moduleHandle) { - if (moduleHandle == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(moduleHandle)); - } + ArgumentNullException.ThrowIfNull(moduleHandle); + lock (_unloadLock) { VerifyIsAlive(); @@ -138,18 +136,12 @@ private static IntPtr ResolveUnmanagedDllUsingEvent(string unmanagedDllName, Ass private static partial IntPtr GetLoadContextForAssembly(QCallAssembly assembly); // Returns the load context in which the specified assembly has been loaded - public static AssemblyLoadContext? GetLoadContext(Assembly assembly) + public static AssemblyLoadContext? GetLoadContext(Assembly assembly!!) { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - - AssemblyLoadContext? loadContextForAssembly = null; - RuntimeAssembly? rtAsm = GetRuntimeAssembly(assembly); // We only support looking up load context for runtime assemblies. + AssemblyLoadContext? loadContextForAssembly = null; if (rtAsm != null) { RuntimeAssembly runtimeAssembly = rtAsm; diff --git a/src/coreclr/System.Private.CoreLib/src/System/RuntimeType.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/RuntimeType.CoreCLR.cs index bf83df6c0f9751..0e966a690f4194 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/RuntimeType.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/RuntimeType.CoreCLR.cs @@ -1719,12 +1719,9 @@ internal FieldInfo GetField(RuntimeFieldHandleInternal field) #region Static Members #region Internal - internal static RuntimeType? GetType(string typeName, bool throwOnError, bool ignoreCase, + internal static RuntimeType? GetType(string typeName!!, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark) { - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); - return RuntimeTypeHandle.GetTypeByName( typeName, throwOnError, ignoreCase, ref stackMark); } @@ -2669,8 +2666,7 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn if (IsGenericParameter) throw new InvalidOperationException(SR.Arg_GenericParameter); - if (ifaceType is null) - throw new ArgumentNullException(nameof(ifaceType)); + ArgumentNullException.ThrowIfNull(ifaceType); RuntimeType? ifaceRtType = ifaceType as RuntimeType; @@ -2812,10 +2808,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] protected override PropertyInfo? GetPropertyImpl( - string name, BindingFlags bindingAttr, Binder? binder, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) + string name!!, BindingFlags bindingAttr, Binder? binder, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) { - if (name == null) throw new ArgumentNullException(nameof(name)); - ListBuilder candidates = GetPropertyCandidates(name, bindingAttr, types, false); if (candidates.Count == 0) @@ -2849,10 +2843,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo? GetEvent(string name, BindingFlags bindingAttr) + public override EventInfo? GetEvent(string name!!, BindingFlags bindingAttr) { - if (name is null) throw new ArgumentNullException(nameof(name)); - FilterHelper(bindingAttr, ref name, out _, out MemberListType listType); RuntimeEventInfo[] cache = Cache.GetEventList(listType, name); @@ -2876,10 +2868,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo? GetField(string name, BindingFlags bindingAttr) + public override FieldInfo? GetField(string name!!, BindingFlags bindingAttr) { - if (name is null) throw new ArgumentNullException(); - FilterHelper(bindingAttr, ref name, out _, out MemberListType listType); RuntimeFieldInfo[] cache = Cache.GetFieldList(listType, name); @@ -2915,10 +2905,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type? GetInterface(string fullname, bool ignoreCase) + public override Type? GetInterface(string fullname!!, bool ignoreCase) { - if (fullname is null) throw new ArgumentNullException(nameof(fullname)); - BindingFlags bindingAttr = BindingFlags.Public | BindingFlags.NonPublic; bindingAttr &= ~BindingFlags.Static; @@ -2950,10 +2938,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type? GetNestedType(string fullname, BindingFlags bindingAttr) + public override Type? GetNestedType(string fullname!!, BindingFlags bindingAttr) { - if (fullname is null) throw new ArgumentNullException(nameof(fullname)); - bindingAttr &= ~BindingFlags.Static; string name, ns; SplitName(fullname, out name!, out ns!); @@ -2979,10 +2965,8 @@ public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(Dyn } [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) + public override MemberInfo[] GetMember(string name!!, MemberTypes type, BindingFlags bindingAttr) { - if (name is null) throw new ArgumentNullException(nameof(name)); - ListBuilder methods = default; ListBuilder constructors = default; ListBuilder properties = default; @@ -3061,10 +3045,8 @@ public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFla return compressMembers; } - public override MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberInfo member) + public override MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberInfo member!!) { - if (member is null) throw new ArgumentNullException(nameof(member)); - RuntimeType? runtimeType = this; while (runtimeType != null) { @@ -3217,10 +3199,8 @@ public override MethodBase? DeclaringMethod #region Hierarchy - public override bool IsSubclassOf(Type type) + public override bool IsSubclassOf(Type type!!) { - if (type is null) - throw new ArgumentNullException(nameof(type)); RuntimeType? rtType = type as RuntimeType; if (rtType == null) return false; @@ -3352,11 +3332,8 @@ public override Type[] GetGenericArguments() } [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public override Type MakeGenericType(Type[] instantiation) + public override Type MakeGenericType(Type[] instantiation!!) { - if (instantiation == null) - throw new ArgumentNullException(nameof(instantiation)); - if (!IsGenericTypeDefinition) throw new InvalidOperationException(SR.Format(SR.Arg_NotGenericTypeDefinition, this)); diff --git a/src/coreclr/System.Private.CoreLib/src/System/String.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/String.CoreCLR.cs index 0ed1b70451bec5..7fd1eef4b1f4e8 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/String.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/String.CoreCLR.cs @@ -24,23 +24,13 @@ public partial class String [MethodImpl(MethodImplOptions.InternalCall)] private extern string? IsInterned(); - public static string Intern(string str) + public static string Intern(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - return str.Intern(); } - public static string? IsInterned(string str) + public static string? IsInterned(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - return str.IsInterned(); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs index d51fca9673e39c..bdb18da812f59a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs @@ -545,10 +545,7 @@ internal static unsafe IntPtr ConvertSafeHandleToNative(SafeHandle? handle, ref throw new InvalidOperationException(SR.Interop_Marshal_SafeHandle_InvalidOperation); } - if (handle is null) - { - throw new ArgumentNullException(nameof(handle)); - } + ArgumentNullException.ThrowIfNull(handle); return StubHelpers.AddToCleanupList(ref cleanupWorkList, handle); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolBoundHandle.cs b/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolBoundHandle.cs index b188c8f8a162a9..3847cb8431f685 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolBoundHandle.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolBoundHandle.cs @@ -71,11 +71,8 @@ private ThreadPoolBoundHandle(SafeHandle handle) /// does not take ownership of , /// it remains the responsibility of the caller to call . /// - public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) + public static ThreadPoolBoundHandle BindHandle(SafeHandle handle!!) { - if (handle == null) - throw new ArgumentNullException(nameof(handle)); - if (handle.IsClosed || handle.IsInvalid) throw new ArgumentException(SR.Argument_InvalidHandle, nameof(handle)); @@ -175,11 +172,8 @@ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) public unsafe NativeOverlapped* UnsafeAllocateNativeOverlapped(IOCompletionCallback callback, object? state, object? pinData) => AllocateNativeOverlapped(callback, state, pinData, flowExecutionContext: false); - private unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback, object? state, object? pinData, bool flowExecutionContext) + private unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback!!, object? state, object? pinData, bool flowExecutionContext) { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - EnsureNotDisposed(); ThreadPoolBoundHandleOverlapped overlapped = new ThreadPoolBoundHandleOverlapped(callback, state, pinData, preAllocated: null, flowExecutionContext); @@ -216,11 +210,8 @@ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) /// /// [CLSCompliant(false)] - public unsafe NativeOverlapped* AllocateNativeOverlapped(PreAllocatedOverlapped preAllocated) + public unsafe NativeOverlapped* AllocateNativeOverlapped(PreAllocatedOverlapped preAllocated!!) { - if (preAllocated == null) - throw new ArgumentNullException(nameof(preAllocated)); - EnsureNotDisposed(); preAllocated.AddRef(); @@ -266,11 +257,8 @@ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) /// This method was called after the was disposed. /// [CLSCompliant(false)] - public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped) + public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped!!) { - if (overlapped == null) - throw new ArgumentNullException(nameof(overlapped)); - // Note: we explicitly allow FreeNativeOverlapped calls after the ThreadPoolBoundHandle has been Disposed. ThreadPoolBoundHandleOverlapped wrapper = GetOverlappedWrapper(overlapped); @@ -301,11 +289,8 @@ public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped) /// is . /// [CLSCompliant(false)] - public static unsafe object? GetNativeOverlappedState(NativeOverlapped* overlapped) + public static unsafe object? GetNativeOverlappedState(NativeOverlapped* overlapped!!) { - if (overlapped == null) - throw new ArgumentNullException(nameof(overlapped)); - ThreadPoolBoundHandleOverlapped wrapper = GetOverlappedWrapper(overlapped); Debug.Assert(wrapper._boundHandle != null); return wrapper._userState; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolPreAllocatedOverlapped.cs b/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolPreAllocatedOverlapped.cs index 560f2e449578f1..90e43c63c28ba6 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolPreAllocatedOverlapped.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Threading/ClrThreadPoolPreAllocatedOverlapped.cs @@ -91,11 +91,8 @@ public PreAllocatedOverlapped(IOCompletionCallback callback, object? state, obje public static PreAllocatedOverlapped UnsafeCreate(IOCompletionCallback callback, object? state, object? pinData) => new PreAllocatedOverlapped(callback, state, pinData, flowExecutionContext: false); - private PreAllocatedOverlapped(IOCompletionCallback callback, object? state, object? pinData, bool flowExecutionContext) + private PreAllocatedOverlapped(IOCompletionCallback callback!!, object? state, object? pinData, bool flowExecutionContext) { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - _overlapped = new ThreadPoolBoundHandleOverlapped(callback, state, pinData, this, flowExecutionContext); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Threading/Monitor.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Threading/Monitor.CoreCLR.cs index 09d3478bded889..c514d5ce896ae1 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Threading/Monitor.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Threading/Monitor.CoreCLR.cs @@ -125,11 +125,8 @@ public static void TryEnter(object obj, int millisecondsTimeout, ref bool lockTa [MethodImpl(MethodImplOptions.InternalCall)] private static extern void ReliableEnterTimeout(object obj, int timeout, ref bool lockTaken); - public static bool IsEntered(object obj) + public static bool IsEntered(object obj!!) { - if (obj == null) - throw new ArgumentNullException(nameof(obj)); - return IsEnteredNative(obj); } @@ -167,13 +164,8 @@ public static bool Wait(object obj, int millisecondsTimeout) [MethodImpl(MethodImplOptions.InternalCall)] private static extern void ObjPulse(object obj); - public static void Pulse(object obj) + public static void Pulse(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - ObjPulse(obj); } /*======================================================================== @@ -182,13 +174,8 @@ public static void Pulse(object obj) [MethodImpl(MethodImplOptions.InternalCall)] private static extern void ObjPulseAll(object obj); - public static void PulseAll(object obj) + public static void PulseAll(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - ObjPulseAll(obj); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Threading/Overlapped.cs b/src/coreclr/System.Private.CoreLib/src/System/Threading/Overlapped.cs index 908dc57b0735ba..916f10b40e541c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Threading/Overlapped.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Threading/Overlapped.cs @@ -243,20 +243,14 @@ public IntPtr EventHandleIntPtr * Unpins the native Overlapped struct ====================================================================*/ [CLSCompliant(false)] - public static unsafe Overlapped Unpack(NativeOverlapped* nativeOverlappedPtr) + public static unsafe Overlapped Unpack(NativeOverlapped* nativeOverlappedPtr!!) { - if (nativeOverlappedPtr == null) - throw new ArgumentNullException(nameof(nativeOverlappedPtr)); - return OverlappedData.GetOverlappedFromNative(nativeOverlappedPtr)._overlapped; } [CLSCompliant(false)] - public static unsafe void Free(NativeOverlapped* nativeOverlappedPtr) + public static unsafe void Free(NativeOverlapped* nativeOverlappedPtr!!) { - if (nativeOverlappedPtr == null) - throw new ArgumentNullException(nameof(nativeOverlappedPtr)); - OverlappedData.GetOverlappedFromNative(nativeOverlappedPtr)._overlapped._overlappedData = null; OverlappedData.FreeNativeOverlapped(nativeOverlappedPtr); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Threading/ThreadPool.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Threading/ThreadPool.CoreCLR.cs index 0937ac465ce6af..de9126d1a346d7 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Threading/ThreadPool.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Threading/ThreadPool.CoreCLR.cs @@ -351,20 +351,13 @@ public static long CompletedWorkItemCount private static extern long GetPendingUnmanagedWorkItemCount(); private static RegisteredWaitHandle RegisterWaitForSingleObject( - WaitHandle? waitObject, - WaitOrTimerCallback? callBack, + WaitHandle waitObject!!, + WaitOrTimerCallback callBack!!, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce, bool flowExecutionContext) { - - if (waitObject == null) - throw new ArgumentNullException(nameof(waitObject)); - - if (callBack == null) - throw new ArgumentNullException(nameof(callBack)); - RegisteredWaitHandle registeredWaitHandle = new RegisteredWaitHandle( waitObject, new _ThreadPoolWaitOrTimerCallback(callBack, state, flowExecutionContext), @@ -552,11 +545,8 @@ public static bool BindHandle(IntPtr osHandle) } [SupportedOSPlatform("windows")] - public static bool BindHandle(SafeHandle osHandle) + public static bool BindHandle(SafeHandle osHandle!!) { - if (osHandle == null) - throw new ArgumentNullException(nameof(osHandle)); - bool ret = false; bool mustReleaseSafeHandle = false; try diff --git a/src/coreclr/System.Private.CoreLib/src/System/TypeNameParser.cs b/src/coreclr/System.Private.CoreLib/src/System/TypeNameParser.cs index 6fc6c75c9bb4b7..f77e755be77c2e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/TypeNameParser.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/TypeNameParser.cs @@ -56,15 +56,13 @@ internal sealed partial class TypeNameParser : IDisposable #region Static Members [RequiresUnreferencedCode("The type might be removed")] internal static Type? GetType( - string typeName, + string typeName!!, Func? assemblyResolver, Func? typeResolver, bool throwOnError, bool ignoreCase, ref StackCrawlMark stackMark) { - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); if (typeName.Length > 0 && typeName[0] == '\0') throw new ArgumentException(SR.Format_StringZeroLength); diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp index c15f926fa756b1..e2809f8bade794 100644 --- a/src/coreclr/gc/gc.cpp +++ b/src/coreclr/gc/gc.cpp @@ -36106,6 +36106,8 @@ gc_heap::mark_through_cards_helper (uint8_t** poo, size_t& n_gen, if (child_object_gen < current_gen) { cg_pointers_found++; + dprintf (4, ("cg pointer %Ix found, %Id so far", + (size_t)*poo, cg_pointers_found )); } #else //USE_REGIONS assert (condemned_gen == -1); @@ -36431,11 +36433,16 @@ void gc_heap::mark_through_cards_for_segments (card_fn fn, BOOL relocating CARD_ { if (foundp && (cg_pointers_found == 0)) { +#ifndef USE_REGIONS + // in the segment case, need to recompute end_card so we don't clear cards + // for the next generation + end_card = card_of (end); +#endif dprintf(3,(" Clearing cards [%Ix, %Ix[ ", (size_t)card_address(card), - (size_t)end)); - clear_cards (card, card_of (end)); - n_card_set -= (card_of (end) - card); - total_cards_cleared += (card_of (end) - card); + (size_t)card_address(end_card))); + clear_cards (card, end_card); + n_card_set -= (end_card - card); + total_cards_cleared += (end_card - card); } n_eph += cg_pointers_found; cg_pointers_found = 0; @@ -43571,7 +43578,11 @@ Object * GCHeap::NextObj (Object * object) #else //MULTIPLE_HEAPS gc_heap* hp = 0; #endif //MULTIPLE_HEAPS +#ifdef USE_REGIONS + unsigned int g = heap_segment_gen_num (hs); +#else unsigned int g = hp->object_gennum ((uint8_t*)object); +#endif if ((g == 0) && hp->settings.demotion) return NULL;//could be racing with another core allocating. int align_const = get_alignment_constant (!large_object_p); diff --git a/src/coreclr/inc/clrconfigvalues.h b/src/coreclr/inc/clrconfigvalues.h index 93459c739f78e8..57107913ce274f 100644 --- a/src/coreclr/inc/clrconfigvalues.h +++ b/src/coreclr/inc/clrconfigvalues.h @@ -302,6 +302,7 @@ RETAIL_CONFIG_STRING_INFO(EXTERNAL_JitName, W("JitName"), "Primary Jit to use") #if defined(ALLOW_SXS_JIT) RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJitName, W("AltJitName"), "Alternative Jit to use, will fall back to primary jit.") RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJit, W("AltJit"), "Enables AltJit and selectively limits it to the specified methods.") +RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJitOs, W("AltJitOS"), "Sets target OS for AltJit or uses native one by default. Only applicable for ARM/AMR64 at the moment.") RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJitExcludeAssemblies, W("AltJitExcludeAssemblies"), "Do not use AltJit on this semicolon-delimited list of assemblies.") #endif // defined(ALLOW_SXS_JIT) diff --git a/src/coreclr/inc/corinfo.h b/src/coreclr/inc/corinfo.h index 46099e21382b54..4b52f6071eeab0 100644 --- a/src/coreclr/inc/corinfo.h +++ b/src/coreclr/inc/corinfo.h @@ -614,6 +614,9 @@ enum CorInfoHelpFunc CORINFO_HELP_CLASSPROFILE64, // Update 64-bit class profile for a call site CORINFO_HELP_PARTIAL_COMPILATION_PATCHPOINT, // Notify runtime that code has reached a part of the method that wasn't originally jitted. + CORINFO_HELP_VALIDATE_INDIRECT_CALL, // CFG: Validate function pointer + CORINFO_HELP_DISPATCH_INDIRECT_CALL, // CFG: Validate and dispatch to pointer + CORINFO_HELP_COUNT, }; diff --git a/src/coreclr/inc/corjitflags.h b/src/coreclr/inc/corjitflags.h index c749e876d2e0fa..bf4f990c7aa198 100644 --- a/src/coreclr/inc/corjitflags.h +++ b/src/coreclr/inc/corjitflags.h @@ -32,7 +32,7 @@ class CORJIT_FLAGS CORJIT_FLAG_DEBUG_EnC = 3, // We are in Edit-n-Continue mode CORJIT_FLAG_DEBUG_INFO = 4, // generate line and local-var info CORJIT_FLAG_MIN_OPT = 5, // disable all jit optimizations (not necesarily debuggable code) - CORJIT_FLAG_UNUSED1 = 6, + CORJIT_FLAG_ENABLE_CFG = 6, // generate control-flow guard checks CORJIT_FLAG_MCJIT_BACKGROUND = 7, // Calling from multicore JIT background thread, do not call JitComplete #if defined(TARGET_X86) diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h index 66de16f77a0ca5..c8760ad9999d89 100644 --- a/src/coreclr/inc/jiteeversionguid.h +++ b/src/coreclr/inc/jiteeversionguid.h @@ -43,12 +43,12 @@ typedef const GUID *LPCGUID; #define GUID_DEFINED #endif // !GUID_DEFINED -constexpr GUID JITEEVersionIdentifier = { /* ccb0c159-04b3-47f6-993e-79114c9cbef8 */ - 0xccb0c159, - 0x04b3, - 0x47f6, - {0x99, 0x3e, 0x79, 0x11, 0x4c, 0x9c, 0xbe, 0xf8} - }; +constexpr GUID JITEEVersionIdentifier = { /* e6a73797-0cbe-4cf8-b4ad-724a25466211 */ + 0xe6a73797, + 0x0cbe, + 0x4cf8, + {0xb4, 0xad, 0x72, 0x4a, 0x25, 0x46, 0x62, 0x11} +}; ////////////////////////////////////////////////////////////////////////////////////////////////////////// // diff --git a/src/coreclr/inc/jithelpers.h b/src/coreclr/inc/jithelpers.h index b9a1e3941da389..82b43a7ab01f56 100644 --- a/src/coreclr/inc/jithelpers.h +++ b/src/coreclr/inc/jithelpers.h @@ -351,6 +351,14 @@ JITHELPER(CORINFO_HELP_CLASSPROFILE64, JIT_ClassProfile64, CORINFO_HELP_SIG_REG_ONLY) JITHELPER(CORINFO_HELP_PARTIAL_COMPILATION_PATCHPOINT, JIT_PartialCompilationPatchpoint, CORINFO_HELP_SIG_REG_ONLY) +#if defined(TARGET_AMD64) || defined(TARGET_ARM64) + JITHELPER(CORINFO_HELP_VALIDATE_INDIRECT_CALL, JIT_ValidateIndirectCall, CORINFO_HELP_SIG_REG_ONLY) + JITHELPER(CORINFO_HELP_DISPATCH_INDIRECT_CALL, JIT_DispatchIndirectCall, CORINFO_HELP_SIG_REG_ONLY) +#else + JITHELPER(CORINFO_HELP_VALIDATE_INDIRECT_CALL, NULL, CORINFO_HELP_SIG_REG_ONLY) + JITHELPER(CORINFO_HELP_DISPATCH_INDIRECT_CALL, NULL, CORINFO_HELP_SIG_REG_ONLY) +#endif + #undef JITHELPER #undef DYNAMICJITHELPER #undef JITHELPER diff --git a/src/coreclr/inc/patchpointinfo.h b/src/coreclr/inc/patchpointinfo.h index effcdeddceb051..fb560c1c26d08b 100644 --- a/src/coreclr/inc/patchpointinfo.h +++ b/src/coreclr/inc/patchpointinfo.h @@ -12,10 +12,11 @@ // -------------------------------------------------------------------------------- // Describes information needed to make an OSR transition -// - location of Il-visible locals and other important state on the +// - location of IL-visible locals and other important state on the // original (Tier0) method frame, with respect to top of frame // (hence these offsets will be negative as stack grows down) // - total size of the original frame +// - callee save registers saved on the original (Tier0) frame // // Currently the patchpoint info is independent of the IL offset of the patchpoint. // @@ -36,6 +37,7 @@ struct PatchpointInfo // Initialize void Initialize(unsigned localCount, int totalFrameSize) { + m_calleeSaveRegisters = 0; m_totalFrameSize = totalFrameSize; m_numberOfLocals = localCount; m_genericContextArgOffset = -1; @@ -47,6 +49,7 @@ struct PatchpointInfo // Copy void Copy(const PatchpointInfo* original) { + m_calleeSaveRegisters = original->m_calleeSaveRegisters; m_genericContextArgOffset = original->m_genericContextArgOffset; m_keptAliveThisOffset = original->m_keptAliveThisOffset; m_securityCookieOffset = original->m_securityCookieOffset; @@ -162,12 +165,26 @@ struct PatchpointInfo m_offsetAndExposureData[localNum] = offset; } + // Callee save registers saved by the original method. + // Includes all saves that must be restored (eg includes pushed RBP on x64). + // + uint64_t CalleeSaveRegisters() const + { + return m_calleeSaveRegisters; + } + + void SetCalleeSaveRegisters(uint64_t registerMask) + { + m_calleeSaveRegisters = registerMask; + } + private: enum { EXPOSURE_MASK = 0x1 }; + uint64_t m_calleeSaveRegisters; unsigned m_numberOfLocals; int m_totalFrameSize; int m_genericContextArgOffset; diff --git a/src/coreclr/jit/assertionprop.cpp b/src/coreclr/jit/assertionprop.cpp index 4e0e708be326c6..b5ee60a32fd153 100644 --- a/src/coreclr/jit/assertionprop.cpp +++ b/src/coreclr/jit/assertionprop.cpp @@ -1062,6 +1062,11 @@ void Compiler::optPrintAssertion(AssertionDsc* curAssertion, AssertionIndex asse { printf(".%02u", curAssertion->op1.lcl.ssaNum); } + if (curAssertion->op2.zeroOffsetFieldSeq != nullptr) + { + printf(" Zero"); + gtDispFieldSeq(curAssertion->op2.zeroOffsetFieldSeq); + } break; case O2K_CONST_INT: @@ -1582,10 +1587,14 @@ AssertionIndex Compiler::optCreateAssertion(GenTree* op1, goto DONE_ASSERTION; // Don't make an assertion } - assertion.op2.kind = O2K_LCLVAR_COPY; - assertion.op2.lcl.lclNum = lclNum2; - assertion.op2.vn = vnStore->VNConservativeNormalValue(op2->gtVNPair); - assertion.op2.lcl.ssaNum = op2->AsLclVarCommon()->GetSsaNum(); + FieldSeqNode* zeroOffsetFieldSeq = nullptr; + GetZeroOffsetFieldMap()->Lookup(op2, &zeroOffsetFieldSeq); + + assertion.op2.kind = O2K_LCLVAR_COPY; + assertion.op2.vn = vnStore->VNConservativeNormalValue(op2->gtVNPair); + assertion.op2.lcl.lclNum = lclNum2; + assertion.op2.lcl.ssaNum = op2->AsLclVarCommon()->GetSsaNum(); + assertion.op2.zeroOffsetFieldSeq = zeroOffsetFieldSeq; // Ok everything has been set and the assertion looks good assertion.assertionKind = assertionKind; @@ -3316,14 +3325,30 @@ GenTree* Compiler::optCopyAssertionProp(AssertionDsc* curAssertion, return nullptr; } - // Extract the matching lclNum and ssaNum. - const unsigned copyLclNum = (op1.lcl.lclNum == lclNum) ? op2.lcl.lclNum : op1.lcl.lclNum; - unsigned copySsaNum = SsaConfig::RESERVED_SSA_NUM; + // Extract the matching lclNum and ssaNum, as well as the field sequence. + unsigned copyLclNum; + unsigned copySsaNum; + FieldSeqNode* zeroOffsetFieldSeq; + if (op1.lcl.lclNum == lclNum) + { + copyLclNum = op2.lcl.lclNum; + copySsaNum = op2.lcl.ssaNum; + zeroOffsetFieldSeq = op2.zeroOffsetFieldSeq; + } + else + { + copyLclNum = op1.lcl.lclNum; + copySsaNum = op1.lcl.ssaNum; + zeroOffsetFieldSeq = nullptr; // Only the RHS of an assignment can have a FldSeq. + assert(optLocalAssertionProp); // Were we to perform replacements in global propagation, that makes copy + // assertions for control flow ("if (a == b) { ... }"), where both operands + // could have a FldSeq, we'd need to save it for "op1" too. + } + if (!optLocalAssertionProp) { // Extract the ssaNum of the matching lclNum. unsigned ssaNum = (op1.lcl.lclNum == lclNum) ? op1.lcl.ssaNum : op2.lcl.ssaNum; - copySsaNum = (op1.lcl.lclNum == lclNum) ? op2.lcl.ssaNum : op1.lcl.ssaNum; if (ssaNum != tree->GetSsaNum()) { @@ -3349,12 +3374,25 @@ GenTree* Compiler::optCopyAssertionProp(AssertionDsc* curAssertion, tree->SetLclNum(copyLclNum); tree->SetSsaNum(copySsaNum); + // The sequence we are propagating (if any) represents the inner fields. + if (zeroOffsetFieldSeq != nullptr) + { + FieldSeqNode* outerZeroOffsetFieldSeq = nullptr; + if (GetZeroOffsetFieldMap()->Lookup(tree, &outerZeroOffsetFieldSeq)) + { + zeroOffsetFieldSeq = GetFieldSeqStore()->Append(zeroOffsetFieldSeq, outerZeroOffsetFieldSeq); + GetZeroOffsetFieldMap()->Remove(tree); + } + + fgAddFieldSeqForZeroOffset(tree, zeroOffsetFieldSeq); + } + #ifdef DEBUG if (verbose) { printf("\nAssertion prop in " FMT_BB ":\n", compCurBB->bbNum); optPrintAssertion(curAssertion, index); - gtDispTree(tree, nullptr, nullptr, true); + DISPNODE(tree); } #endif @@ -4665,15 +4703,15 @@ GenTree* Compiler::optAssertionProp(ASSERT_VALARG_TP assertions, GenTree* tree, } //------------------------------------------------------------------------ -// optImpliedAssertions: Given a tree node that makes an assertion this -// method computes the set of implied assertions -// that are also true. The updated assertions are -// maintained on the Compiler object. +// optImpliedAssertions: Given an assertion this method computes the set +// of implied assertions that are also true. // // Arguments: // assertionIndex : The id of the assertion. // activeAssertions : The assertions that are already true at this point. - +// This method will add the discovered implied assertions +// to this set. +// void Compiler::optImpliedAssertions(AssertionIndex assertionIndex, ASSERT_TP& activeAssertions) { noway_assert(!optLocalAssertionProp); @@ -4822,7 +4860,6 @@ void Compiler::optImpliedByTypeOfAssertions(ASSERT_TP& activeAssertions) // Return Value: // The assertions we have about the value number. // - ASSERT_VALRET_TP Compiler::optGetVnMappedAssertions(ValueNum vn) { ASSERT_TP set = BitVecOps::UninitVal(); @@ -5599,11 +5636,6 @@ Compiler::fgWalkResult Compiler::optVNConstantPropCurStmt(BasicBlock* block, Sta case GT_INTRINSIC: break; - case GT_INC_SATURATE: - case GT_MULHI: - assert(false && "Unexpected GT_INC_SATURATE/GT_MULHI node encountered before lowering"); - break; - case GT_JTRUE: break; diff --git a/src/coreclr/jit/codegenarm64.cpp b/src/coreclr/jit/codegenarm64.cpp index 595e2a232e5415..f55c605f993eb7 100644 --- a/src/coreclr/jit/codegenarm64.cpp +++ b/src/coreclr/jit/codegenarm64.cpp @@ -2311,34 +2311,76 @@ void CodeGen::genLclHeap(GenTree* tree) // We should reach here only for non-zero, constant size allocations. assert(amount > 0); + const int storePairRegsWritesBytes = 2 * REGSIZE_BYTES; + // For small allocations we will generate up to four stp instructions, to zero 16 to 64 bytes. - static_assert_no_msg(STACK_ALIGN == (REGSIZE_BYTES * 2)); - assert(amount % (REGSIZE_BYTES * 2) == 0); // stp stores two registers at a time - size_t stpCount = amount / (REGSIZE_BYTES * 2); - if (stpCount <= 4) + static_assert_no_msg(STACK_ALIGN == storePairRegsWritesBytes); + assert(amount % storePairRegsWritesBytes == 0); // stp stores two registers at a time + + if (compiler->info.compInitMem) { - while (stpCount != 0) + if (amount <= LCLHEAP_UNROLL_LIMIT) { - // We can use pre-indexed addressing. - // stp ZR, ZR, [SP, #-16]! // STACK_ALIGN is 16 - GetEmitter()->emitIns_R_R_R_I(INS_stp, EA_PTRSIZE, REG_ZR, REG_ZR, REG_SPBASE, -16, INS_OPTS_PRE_INDEX); - stpCount -= 1; - } + // The following zeroes the last 16 bytes and probes the page containing [sp, #16] address. + // stp xzr, xzr, [sp, #-16]! + GetEmitter()->emitIns_R_R_R_I(INS_stp, EA_8BYTE, REG_ZR, REG_ZR, REG_SPBASE, -storePairRegsWritesBytes, + INS_OPTS_PRE_INDEX); - lastTouchDelta = 0; + if (amount > storePairRegsWritesBytes) + { + // The following sets SP to its final value and zeroes the first 16 bytes of the allocated space. + // stp xzr, xzr, [sp, #-amount+16]! + const ssize_t finalSpDelta = (ssize_t)amount - storePairRegsWritesBytes; + GetEmitter()->emitIns_R_R_R_I(INS_stp, EA_8BYTE, REG_ZR, REG_ZR, REG_SPBASE, -finalSpDelta, + INS_OPTS_PRE_INDEX); + + // The following zeroes the remaining space in [finalSp+16, initialSp-16) interval + // using a sequence of stp instruction with unsigned offset. + for (ssize_t offset = storePairRegsWritesBytes; offset < finalSpDelta; + offset += storePairRegsWritesBytes) + { + // stp xzr, xzr, [sp, #offset] + GetEmitter()->emitIns_R_R_R_I(INS_stp, EA_8BYTE, REG_ZR, REG_ZR, REG_SPBASE, offset); + } + } - goto ALLOC_DONE; + lastTouchDelta = 0; + + goto ALLOC_DONE; + } } - else if (!compiler->info.compInitMem && (amount < compiler->eeGetPageSize())) // must be < not <= + else if (amount < compiler->eeGetPageSize()) // must be < not <= { // Since the size is less than a page, simply adjust the SP value. // The SP might already be in the guard page, so we must touch it BEFORE // the alloc, not after. - // ldr wz, [SP, #0] - GetEmitter()->emitIns_R_R_I(INS_ldr, EA_4BYTE, REG_ZR, REG_SP, 0); + // Note the we check against the lower boundary of the post-index immediate range [-256, 256) + // since the offset is -amount. + const bool canEncodeLoadRegPostIndexOffset = amount <= 256; - genInstrWithConstant(INS_sub, EA_PTRSIZE, REG_SPBASE, REG_SPBASE, amount, rsGetRsvdReg()); + if (canEncodeLoadRegPostIndexOffset) + { + GetEmitter()->emitIns_R_R_I(INS_ldr, EA_4BYTE, REG_ZR, REG_SPBASE, -(ssize_t)amount, + INS_OPTS_POST_INDEX); + } + else if (emitter::canEncodeLoadOrStorePairOffset(-(ssize_t)amount, EA_8BYTE)) + { + // The following probes the page and allocates the local heap. + // ldp tmpReg, xzr, [sp], #-amount + // Note that we cannot use ldp xzr, xzr since + // the behaviour of ldp where two source registers are the same is unpredictable. + const regNumber tmpReg = targetReg; + GetEmitter()->emitIns_R_R_R_I(INS_ldp, EA_8BYTE, tmpReg, REG_ZR, REG_SPBASE, -(ssize_t)amount, + INS_OPTS_POST_INDEX); + } + else + { + // ldr wzr, [sp] + // sub, sp, #amount + GetEmitter()->emitIns_R_R_I(INS_ldr, EA_4BYTE, REG_ZR, REG_SPBASE, 0); + genInstrWithConstant(INS_sub, EA_PTRSIZE, REG_SPBASE, REG_SPBASE, amount, rsGetRsvdReg()); + } lastTouchDelta = amount; diff --git a/src/coreclr/jit/codegenarmarch.cpp b/src/coreclr/jit/codegenarmarch.cpp index 24c57d110b7bab..0ece8cf945a5e5 100644 --- a/src/coreclr/jit/codegenarmarch.cpp +++ b/src/coreclr/jit/codegenarmarch.cpp @@ -622,7 +622,7 @@ void CodeGen::genIntrinsic(GenTree* treeNode) assert(varTypeIsFloating(srcNode)); assert(srcNode->TypeGet() == treeNode->TypeGet()); - // Right now only Abs/Ceiling/Floor/Round/Sqrt are treated as math intrinsics. + // Right now only Abs/Ceiling/Floor/Truncate/Round/Sqrt are treated as math intrinsics. // switch (treeNode->AsIntrinsic()->gtIntrinsicName) { @@ -642,6 +642,11 @@ void CodeGen::genIntrinsic(GenTree* treeNode) GetEmitter()->emitInsBinary(INS_frintm, emitActualTypeSize(treeNode), treeNode, srcNode); break; + case NI_System_Math_Truncate: + genConsumeOperands(treeNode->AsOp()); + GetEmitter()->emitInsBinary(INS_frintz, emitActualTypeSize(treeNode), treeNode, srcNode); + break; + case NI_System_Math_Round: genConsumeOperands(treeNode->AsOp()); GetEmitter()->emitInsBinary(INS_frintn, emitActualTypeSize(treeNode), treeNode, srcNode); @@ -1508,7 +1513,7 @@ void CodeGen::genCodeForNullCheck(GenTreeIndir* tree) genConsumeRegs(op1); regNumber targetReg = REG_ZR; - GetEmitter()->emitInsLoadStoreOp(INS_ldr, EA_4BYTE, targetReg, tree); + GetEmitter()->emitInsLoadStoreOp(ins_Load(tree->TypeGet()), emitActualTypeSize(tree), targetReg, tree); #endif } @@ -3134,9 +3139,6 @@ void CodeGen::genCall(GenTreeCall* call) // into a volatile register that won't be restored by epilog sequence. if (call->IsFastTailCall()) { - // Don't support fast tail calling JIT helpers - assert(call->gtCallType != CT_HELPER); - GenTree* target = getCallTarget(call, nullptr); if (target != nullptr) @@ -3177,22 +3179,28 @@ void CodeGen::genCall(GenTreeCall* call) genCallInstruction(call); - // if it was a pinvoke we may have needed to get the address of a label - if (genPendingCallLabel) + // for pinvoke/intrinsic/tailcalls we may have needed to get the address of + // a label. In case it is indirect with CFG enabled make sure we do not get + // the address after the validation but only after the actual call that + // comes after. + if (genPendingCallLabel && !call->IsHelperCall(compiler, CORINFO_HELP_VALIDATE_INDIRECT_CALL)) { genDefineInlineTempLabel(genPendingCallLabel); genPendingCallLabel = nullptr; } - // Update GC info: - // All Callee arg registers are trashed and no longer contain any GC pointers. - // TODO-Bug?: As a matter of fact shouldn't we be killing all of callee trashed regs here? - // For now we will assert that other than arg regs gc ref/byref set doesn't contain any other - // registers from RBM_CALLEE_TRASH - assert((gcInfo.gcRegGCrefSetCur & (RBM_CALLEE_TRASH & ~RBM_ARG_REGS)) == 0); - assert((gcInfo.gcRegByrefSetCur & (RBM_CALLEE_TRASH & ~RBM_ARG_REGS)) == 0); - gcInfo.gcRegGCrefSetCur &= ~RBM_ARG_REGS; - gcInfo.gcRegByrefSetCur &= ~RBM_ARG_REGS; +#ifdef DEBUG + // Killed registers should no longer contain any GC pointers. + regMaskTP killMask = RBM_CALLEE_TRASH; + if (call->IsHelperCall()) + { + CorInfoHelpFunc helpFunc = compiler->eeGetHelperNum(call->gtCallMethHnd); + killMask = compiler->compHelperCallKillSet(helpFunc); + } + + assert((gcInfo.gcRegGCrefSetCur & killMask) == 0); + assert((gcInfo.gcRegByrefSetCur & killMask) == 0); +#endif var_types returnType = call->TypeGet(); if (returnType != TYP_VOID) diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp index fe8b2d82dcaec9..81e2dddff69e82 100644 --- a/src/coreclr/jit/codegencommon.cpp +++ b/src/coreclr/jit/codegencommon.cpp @@ -661,6 +661,9 @@ regMaskTP Compiler::compHelperCallKillSet(CorInfoHelpFunc helper) case CORINFO_HELP_INIT_PINVOKE_FRAME: return RBM_INIT_PINVOKE_FRAME_TRASH; + case CORINFO_HELP_VALIDATE_INDIRECT_CALL: + return RBM_VALIDATE_INDIRECT_CALL_TRASH; + default: return RBM_CALLEE_TRASH; } @@ -2204,6 +2207,11 @@ void CodeGen::genGenerateMachineCode() compiler->fgPgoInlineePgo, compiler->fgPgoInlineeNoPgoSingleBlock, compiler->fgPgoInlineeNoPgo); } + if (compiler->opts.IsCFGEnabled()) + { + printf("; control-flow guard enabled\n"); + } + if (compiler->opts.jitFlags->IsSet(JitFlags::JIT_FLAG_ALT_JIT)) { printf("; invoked as altjit\n"); @@ -4631,6 +4639,7 @@ void CodeGen::genCheckUseBlockInit() if (!varDsc->lvIsInReg() && !varDsc->lvOnFrame) { noway_assert(varDsc->lvRefCnt() == 0); + varDsc->lvMustInit = 0; continue; } @@ -4643,6 +4652,7 @@ void CodeGen::genCheckUseBlockInit() if (compiler->fgVarIsNeverZeroInitializedInProlog(varNum)) { + varDsc->lvMustInit = 0; continue; } @@ -4651,6 +4661,7 @@ void CodeGen::genCheckUseBlockInit() // For Compiler::PROMOTION_TYPE_DEPENDENT type of promotion, the whole struct should have been // initialized by the parent struct. No need to set the lvMustInit bit in the // field locals. + varDsc->lvMustInit = 0; continue; } diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp index cfc97dc6b1370c..25cd51d4a48a98 100644 --- a/src/coreclr/jit/codegenxarch.cpp +++ b/src/coreclr/jit/codegenxarch.cpp @@ -3967,7 +3967,7 @@ void CodeGen::genCodeForNullCheck(GenTreeIndir* tree) assert(tree->gtOp1->isUsedFromReg()); regNumber reg = genConsumeReg(tree->gtOp1); - GetEmitter()->emitIns_AR_R(INS_cmp, EA_4BYTE, reg, reg, 0); + GetEmitter()->emitIns_AR_R(INS_cmp, emitTypeSize(tree), reg, reg, 0); } //------------------------------------------------------------------------ @@ -5218,9 +5218,6 @@ void CodeGen::genCall(GenTreeCall* call) // that won't be restored by epilog sequence. if (call->IsFastTailCall()) { - // Don't support fast tail calling JIT helpers - assert(call->gtCallType != CT_HELPER); - GenTree* target = getCallTarget(call, nullptr); if (target != nullptr) { @@ -5272,22 +5269,28 @@ void CodeGen::genCall(GenTreeCall* call) genCallInstruction(call X86_ARG(stackArgBytes)); - // if it was a pinvoke or intrinsic we may have needed to get the address of a label - if (genPendingCallLabel) + // for pinvoke/intrinsic/tailcalls we may have needed to get the address of + // a label. In case it is indirect with CFG enabled make sure we do not get + // the address after the validation but only after the actual call that + // comes after. + if (genPendingCallLabel && !call->IsHelperCall(compiler, CORINFO_HELP_VALIDATE_INDIRECT_CALL)) { genDefineInlineTempLabel(genPendingCallLabel); genPendingCallLabel = nullptr; } - // Update GC info: - // All Callee arg registers are trashed and no longer contain any GC pointers. - // TODO-XArch-Bug?: As a matter of fact shouldn't we be killing all of callee trashed regs here? - // For now we will assert that other than arg regs gc ref/byref set doesn't contain any other - // registers from RBM_CALLEE_TRASH. - assert((gcInfo.gcRegGCrefSetCur & (RBM_CALLEE_TRASH & ~RBM_ARG_REGS)) == 0); - assert((gcInfo.gcRegByrefSetCur & (RBM_CALLEE_TRASH & ~RBM_ARG_REGS)) == 0); - gcInfo.gcRegGCrefSetCur &= ~RBM_ARG_REGS; - gcInfo.gcRegByrefSetCur &= ~RBM_ARG_REGS; +#ifdef DEBUG + // Killed registers should no longer contain any GC pointers. + regMaskTP killMask = RBM_CALLEE_TRASH; + if (call->IsHelperCall()) + { + CorInfoHelpFunc helpFunc = compiler->eeGetHelperNum(call->gtCallMethHnd); + killMask = compiler->compHelperCallKillSet(helpFunc); + } + + assert((gcInfo.gcRegGCrefSetCur & killMask) == 0); + assert((gcInfo.gcRegByrefSetCur & killMask) == 0); +#endif var_types returnType = call->TypeGet(); if (returnType != TYP_VOID) @@ -5563,6 +5566,11 @@ void CodeGen::genCallInstruction(GenTreeCall* call X86_ARG(target_ssize_t stackA #endif if (target->isContainedIndir()) { + // When CFG is enabled we should not be emitting any non-register indirect calls. + assert(!compiler->opts.IsCFGEnabled() || + call->IsHelperCall(compiler, CORINFO_HELP_VALIDATE_INDIRECT_CALL) || + call->IsHelperCall(compiler, CORINFO_HELP_DISPATCH_INDIRECT_CALL)); + if (target->AsIndir()->HasBase() && target->AsIndir()->Base()->isContainedIntOrIImmed()) { // Note that if gtControlExpr is an indir of an absolute address, we mark it as @@ -7019,7 +7027,7 @@ void CodeGen::genSSE2BitwiseOp(GenTree* treeNode) // ii) treeNode oper is a GT_INTRINSIC // iii) treeNode type is a floating point type // iv) treeNode is not used from memory -// v) tree oper is NI_System_Math{F}_Round, _Ceiling, or _Floor +// v) tree oper is NI_System_Math{F}_Round, _Ceiling, _Floor, or _Truncate // vi) caller of this routine needs to call genProduceReg() void CodeGen::genSSE41RoundOp(GenTreeOp* treeNode) { @@ -7047,7 +7055,7 @@ void CodeGen::genSSE41RoundOp(GenTreeOp* treeNode) unsigned ival = 0; - // v) tree oper is NI_System_Math{F}_Round, _Ceiling, or _Floor + // v) tree oper is NI_System_Math{F}_Round, _Ceiling, _Floor, or _Truncate switch (treeNode->AsIntrinsic()->gtIntrinsicName) { case NI_System_Math_Round: @@ -7062,6 +7070,10 @@ void CodeGen::genSSE41RoundOp(GenTreeOp* treeNode) ival = 9; break; + case NI_System_Math_Truncate: + ival = 11; + break; + default: ins = INS_invalid; assert(!"genSSE41RoundOp: unsupported intrinsic"); @@ -7189,6 +7201,7 @@ void CodeGen::genIntrinsic(GenTree* treeNode) case NI_System_Math_Ceiling: case NI_System_Math_Floor: + case NI_System_Math_Truncate: case NI_System_Math_Round: genSSE41RoundOp(treeNode->AsOp()); break; diff --git a/src/coreclr/jit/compiler.cpp b/src/coreclr/jit/compiler.cpp index c19a7d2e50a716..b61f75dd614a26 100644 --- a/src/coreclr/jit/compiler.cpp +++ b/src/coreclr/jit/compiler.cpp @@ -5289,6 +5289,18 @@ void Compiler::generatePatchpointInfo() patchpointInfo->MonitorAcquiredOffset()); } +#if defined(TARGET_AMD64) + // Record callee save registers. + // Currently only needed for x64. + // + regMaskTP rsPushRegs = codeGen->regSet.rsGetModifiedRegsMask() & RBM_CALLEE_SAVED; + rsPushRegs |= RBM_FPBASE; + patchpointInfo->SetCalleeSaveRegisters((uint64_t)rsPushRegs); + JITDUMP("--OSR-- Tier0 callee saves: "); + JITDUMPEXEC(dspRegMask((regMaskTP)patchpointInfo->CalleeSaveRegisters())); + JITDUMP("\n"); +#endif + // Register this with the runtime. info.compCompHnd->setPatchpointInfo(patchpointInfo); } @@ -8848,6 +8860,20 @@ void dTreeLIR(GenTree* tree) cTreeLIR(JitTls::GetCompiler(), tree); } +void dTreeRange(GenTree* first, GenTree* last) +{ + Compiler* comp = JitTls::GetCompiler(); + GenTree* cur = first; + while (true) + { + cTreeLIR(comp, cur); + if (cur == last) + break; + + cur = cur->gtNext; + } +} + void dTrees() { cTrees(JitTls::GetCompiler()); @@ -9722,6 +9748,29 @@ bool Compiler::lvaIsOSRLocal(unsigned varNum) return false; } +//------------------------------------------------------------------------------ +// gtTypeForNullCheck: helper to get the most optimal and correct type for nullcheck +// +// Arguments: +// tree - the node for nullcheck; +// +var_types Compiler::gtTypeForNullCheck(GenTree* tree) +{ + if (varTypeIsIntegralOrI(tree)) + { +#if defined(TARGET_XARCH) + // Just an optimization for XARCH - smaller mov + if (varTypeIsLong(tree)) + { + return TYP_INT; + } +#endif + return tree->TypeGet(); + } + // for the rest: probe a single byte to avoid potential AVEs + return TYP_BYTE; +} + //------------------------------------------------------------------------------ // gtChangeOperToNullCheck: helper to change tree oper to a NULLCHECK. // @@ -9738,7 +9787,7 @@ void Compiler::gtChangeOperToNullCheck(GenTree* tree, BasicBlock* block) { assert(tree->OperIs(GT_FIELD, GT_IND, GT_OBJ, GT_BLK)); tree->ChangeOper(GT_NULLCHECK); - tree->ChangeType(TYP_INT); + tree->ChangeType(gtTypeForNullCheck(tree)); block->bbFlags |= BBF_HAS_NULLCHECK; optMethodFlags |= OMF_HAS_NULLCHECK; } @@ -9893,6 +9942,10 @@ void Compiler::EnregisterStats::RecordLocal(const LclVarDsc* varDsc) m_returnSpCheck++; break; + case DoNotEnregisterReason::SimdUserForcesDep: + m_simdUserForcesDep++; + break; + default: unreached(); break; @@ -10014,6 +10067,7 @@ void Compiler::EnregisterStats::Dump(FILE* fout) const PRINT_STATS(m_swizzleArg, notEnreg); PRINT_STATS(m_blockOpRet, notEnreg); PRINT_STATS(m_returnSpCheck, notEnreg); + PRINT_STATS(m_simdUserForcesDep, notEnreg); fprintf(fout, "\nAddr exposed details:\n"); if (m_addrExposed == 0) diff --git a/src/coreclr/jit/compiler.h b/src/coreclr/jit/compiler.h index 69d88c4a57e280..281758d67ef88c 100644 --- a/src/coreclr/jit/compiler.h +++ b/src/coreclr/jit/compiler.h @@ -385,11 +385,12 @@ enum class DoNotEnregisterReason #endif LclAddrNode, // the local is accessed with LCL_ADDR_VAR/FLD. CastTakesAddr, - StoreBlkSrc, // the local is used as STORE_BLK source. - OneAsgRetyping, // fgMorphOneAsgBlockOp prevents this local from being enregister. - SwizzleArg, // the local is passed using LCL_FLD as another type. - BlockOpRet, // the struct is returned and it promoted or there is a cast. - ReturnSpCheck // the local is used to do SP check + StoreBlkSrc, // the local is used as STORE_BLK source. + OneAsgRetyping, // fgMorphOneAsgBlockOp prevents this local from being enregister. + SwizzleArg, // the local is passed using LCL_FLD as another type. + BlockOpRet, // the struct is returned and it promoted or there is a cast. + ReturnSpCheck, // the local is used to do SP check + SimdUserForcesDep // a promoted struct was used by a SIMD/HWI node; it must be dependently promoted }; enum class AddressExposedReason @@ -1742,6 +1743,7 @@ struct fgArgTabEntry case NonStandardArgKind::ShiftLow: case NonStandardArgKind::ShiftHigh: case NonStandardArgKind::FixedRetBuffer: + case NonStandardArgKind::ValidateIndirectCallTarget: return false; case NonStandardArgKind::WrapperDelegateCell: case NonStandardArgKind::VirtualStubCell: @@ -3359,6 +3361,7 @@ class Compiler GenTree* gtNewNullCheck(GenTree* addr, BasicBlock* basicBlock); + var_types gtTypeForNullCheck(GenTree* tree); void gtChangeOperToNullCheck(GenTree* tree, BasicBlock* block); static fgArgTabEntry* gtArgEntryByArgNum(GenTreeCall* call, unsigned argNum); @@ -5217,7 +5220,15 @@ class Compiler void fgAddInternal(); - bool fgFoldConditional(BasicBlock* block); + enum class FoldResult + { + FOLD_DID_NOTHING, + FOLD_CHANGED_CONTROL_FLOW, + FOLD_REMOVED_LAST_STMT, + FOLD_ALTERED_LAST_STMT, + }; + + FoldResult fgFoldConditional(BasicBlock* block); void fgMorphStmts(BasicBlock* block); void fgMorphBlocks(); @@ -7626,7 +7637,6 @@ class Compiler O2K_CONST_INT, O2K_CONST_LONG, O2K_CONST_DOUBLE, - O2K_ARR_LEN, O2K_SUBRANGE, O2K_COUNT }; @@ -7666,7 +7676,11 @@ class Compiler GenTreeFlags iconFlags; // gtFlags }; union { - SsaVar lcl; + struct + { + SsaVar lcl; + FieldSeqNode* zeroOffsetFieldSeq; + }; IntVal u1; __int64 lconVal; double dconVal; @@ -7745,6 +7759,7 @@ class Compiler { return false; } + switch (op2.kind) { case O2K_IND_CNS_INT: @@ -7759,9 +7774,9 @@ class Compiler return (memcmp(&op2.dconVal, &that->op2.dconVal, sizeof(double)) == 0); case O2K_LCLVAR_COPY: - case O2K_ARR_LEN: return (op2.lcl.lclNum == that->op2.lcl.lclNum) && - (!vnBased || op2.lcl.ssaNum == that->op2.lcl.ssaNum); + (!vnBased || op2.lcl.ssaNum == that->op2.lcl.ssaNum) && + (op2.zeroOffsetFieldSeq == that->op2.zeroOffsetFieldSeq); case O2K_SUBRANGE: return op2.u2.Equals(that->op2.u2); @@ -7774,6 +7789,7 @@ class Compiler assert(!"Unexpected value for op2.kind in AssertionDsc."); break; } + return false; } @@ -9590,7 +9606,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX compMinOptsIsUsed = true; return compMinOpts; } - bool IsMinOptsSet() + bool IsMinOptsSet() const { return compMinOptsIsSet; } @@ -9599,7 +9615,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX { return compMinOpts; } - bool IsMinOptsSet() + bool IsMinOptsSet() const { return compMinOptsIsSet; } @@ -9623,23 +9639,55 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX } // true if the CLFLG_* for an optimization is set. - bool OptEnabled(unsigned optFlag) + bool OptEnabled(unsigned optFlag) const { return !!(compFlags & optFlag); } #ifdef FEATURE_READYTORUN - bool IsReadyToRun() + bool IsReadyToRun() const { return jitFlags->IsSet(JitFlags::JIT_FLAG_READYTORUN); } #else - bool IsReadyToRun() + bool IsReadyToRun() const { return false; } #endif + // Check if the compilation is control-flow guard enabled. + bool IsCFGEnabled() const + { +#if defined(TARGET_ARM64) || defined(TARGET_AMD64) + // On these platforms we assume the register that the target is + // passed in is preserved by the validator and take care to get the + // target from the register for the call (even in debug mode). + static_assert_no_msg((RBM_VALIDATE_INDIRECT_CALL_TRASH & (1 << REG_VALIDATE_INDIRECT_CALL_ADDR)) == 0); + if (JitConfig.JitForceControlFlowGuard()) + return true; + + return jitFlags->IsSet(JitFlags::JIT_FLAG_ENABLE_CFG); +#else + // The remaining platforms are not supported and would require some + // work to support. + // + // ARM32: + // The ARM32 validator does not preserve any volatile registers + // which means we have to take special care to allocate and use a + // callee-saved register (reloading the target from memory is a + // security issue). + // + // x86: + // On x86 some VSD calls disassemble the call site and expect an + // indirect call which is fundamentally incompatible with CFG. + // This would require a different way to pass this information + // through. + // + return false; +#endif + } + #ifdef FEATURE_ON_STACK_REPLACEMENT bool IsOSR() const { @@ -10507,6 +10555,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX unsigned m_swizzleArg; unsigned m_blockOpRet; unsigned m_returnSpCheck; + unsigned m_simdUserForcesDep; unsigned m_liveInOutHndlr; unsigned m_depField; unsigned m_noRegVars; @@ -10844,7 +10893,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX struct ShadowParamVarInfo { FixedBitVect* assignGroup; // the closure set of variables whose values depend on each other - unsigned shadowCopy; // Lcl var num, valid only if not set to NO_SHADOW_COPY + unsigned shadowCopy; // Lcl var num, if not valid set to BAD_VAR_NUM static bool mayNeedShadowCopy(LclVarDsc* varDsc) { diff --git a/src/coreclr/jit/compiler.hpp b/src/coreclr/jit/compiler.hpp index f03ecd43f77025..5fef8c6ffe0f32 100644 --- a/src/coreclr/jit/compiler.hpp +++ b/src/coreclr/jit/compiler.hpp @@ -1321,24 +1321,33 @@ inline void GenTree::SetOper(genTreeOps oper, ValueNumberUpdate vnUpdate) SetVtableForOper(oper); #endif // DEBUGGABLE_GENTREE - if (oper == GT_CNS_INT) + if (vnUpdate == CLEAR_VN) { - AsIntCon()->gtFieldSeq = nullptr; + // Clear the ValueNum field as well. + gtVNPair.SetBoth(ValueNumStore::NoVN); } -#if defined(TARGET_ARM) - if (oper == GT_MUL_LONG) + // Do "oper"-specific initializations. TODO-Cleanup: these are too ad-hoc to be reliable. + // The bashing code should decide itself what to initialize and what to leave as it was. + switch (oper) { - // We sometimes bash GT_MUL to GT_MUL_LONG, which converts it from GenTreeOp to GenTreeMultiRegOp. - AsMultiRegOp()->gtOtherReg = REG_NA; - AsMultiRegOp()->ClearOtherRegFlags(); - } + case GT_CNS_INT: + AsIntCon()->gtFieldSeq = FieldSeqStore::NotAField(); + break; +#if defined(TARGET_ARM) + case GT_MUL_LONG: + // We sometimes bash GT_MUL to GT_MUL_LONG, which converts it from GenTreeOp to GenTreeMultiRegOp. + AsMultiRegOp()->gtOtherReg = REG_NA; + AsMultiRegOp()->ClearOtherRegFlags(); + break; #endif + case GT_LCL_FLD: + AsLclFld()->SetLclOffs(0); + AsLclFld()->SetFieldSeq(FieldSeqStore::NotAField()); + break; - if (vnUpdate == CLEAR_VN) - { - // Clear the ValueNum field as well. - gtVNPair.SetBoth(ValueNumStore::NoVN); + default: + break; } } @@ -1418,32 +1427,6 @@ inline void GenTree::ChangeOper(genTreeOps oper, ValueNumberUpdate vnUpdate) } SetOper(oper, vnUpdate); gtFlags &= mask; - - // Do "oper"-specific initializations... - switch (oper) - { - case GT_LCL_FLD: - { - // The original GT_LCL_VAR might be annotated with a zeroOffset field. - FieldSeqNode* zeroFieldSeq = nullptr; - Compiler* compiler = JitTls::GetCompiler(); - bool isZeroOffset = compiler->GetZeroOffsetFieldMap()->Lookup(this, &zeroFieldSeq); - - AsLclFld()->SetLclOffs(0); - AsLclFld()->SetFieldSeq(FieldSeqStore::NotAField()); - - if (zeroFieldSeq != nullptr) - { - // Set the zeroFieldSeq in the GT_LCL_FLD node - AsLclFld()->SetFieldSeq(zeroFieldSeq); - // and remove the annotation from the ZeroOffsetFieldMap - compiler->GetZeroOffsetFieldMap()->Remove(this); - } - break; - } - default: - break; - } } inline void GenTree::ChangeOperUnchecked(genTreeOps oper) diff --git a/src/coreclr/jit/copyprop.cpp b/src/coreclr/jit/copyprop.cpp index 52c765a12dc41e..ab29e9889a7287 100644 --- a/src/coreclr/jit/copyprop.cpp +++ b/src/coreclr/jit/copyprop.cpp @@ -161,7 +161,7 @@ void Compiler::optCopyProp(Statement* stmt, } if ((gsShadowVarInfo != nullptr) && newLclVarDsc->lvIsParam && - (gsShadowVarInfo[newLclNum].shadowCopy == lclNum)) + (gsShadowVarInfo[newLclNum].shadowCopy != BAD_VAR_NUM)) { continue; } @@ -172,12 +172,8 @@ void Compiler::optCopyProp(Statement* stmt, continue; } - if (newLclDefNode->TypeGet() != tree->TypeGet()) - { - continue; - } - - if (newLclDefVN != tree->gtVNPair.GetConservative()) + ValueNum lclDefVN = varDsc->GetPerSsaData(tree->GetSsaNum())->m_vnPair.GetConservative(); + if (newLclDefVN != lclDefVN) { continue; } @@ -225,14 +221,25 @@ void Compiler::optCopyProp(Statement* stmt, continue; } + var_types newLclType = newLclVarDsc->TypeGet(); + if (!newLclVarDsc->lvNormalizeOnLoad()) + { + newLclType = genActualType(newLclType); + } + + if (newLclType != tree->TypeGet()) + { + continue; + } + #ifdef DEBUG if (verbose) { JITDUMP("VN based copy assertion for "); printTreeID(tree); - printf(" V%02d " FMT_VN " by ", lclNum, tree->GetVN(VNK_Conservative)); + printf(" V%02d " FMT_VN " by ", lclNum, lclDefVN); printTreeID(newLclDefNode); - printf(" V%02d " FMT_VN ".\n", newLclNum, newLclDefNode->GetVN(VNK_Conservative)); + printf(" V%02d " FMT_VN ".\n", newLclNum, newLclDefVN); DISPNODE(tree); } #endif diff --git a/src/coreclr/jit/emit.cpp b/src/coreclr/jit/emit.cpp index 9f0a2cf6a897e2..462b9876f97169 100644 --- a/src/coreclr/jit/emit.cpp +++ b/src/coreclr/jit/emit.cpp @@ -1454,9 +1454,10 @@ void* emitter::emitAllocAnyInstr(size_t sz, emitAttr opsz) assert(IsCodeAligned(emitCurIGsize)); - /* Make sure we have enough space for the new instruction */ + // Make sure we have enough space for the new instruction. + // `igInsCnt` is currently a byte, so we can't have more than 255 instructions in a single insGroup. - if ((emitCurIGfreeNext + sz >= emitCurIGfreeEndp) || emitForceNewIG) + if ((emitCurIGfreeNext + sz >= emitCurIGfreeEndp) || emitForceNewIG || (emitCurIGinsCnt >= 255)) { emitNxtIG(true); } @@ -2507,6 +2508,8 @@ bool emitter::emitNoGChelper(CorInfoHelpFunc helpFunc) case CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR: case CORINFO_HELP_INIT_PINVOKE_FRAME: + + case CORINFO_HELP_VALIDATE_INDIRECT_CALL: return true; default: @@ -9323,6 +9326,10 @@ regMaskTP emitter::emitGetGCRegsKilledByNoGCCall(CorInfoHelpFunc helper) break; #endif // defined(TARGET_X86) + case CORINFO_HELP_VALIDATE_INDIRECT_CALL: + result = RBM_VALIDATE_INDIRECT_CALL_TRASH; + break; + default: result = RBM_CALLEE_TRASH_NOGC; break; diff --git a/src/coreclr/jit/emit.h b/src/coreclr/jit/emit.h index 66706ecaf488e2..1571fc00cbafa1 100644 --- a/src/coreclr/jit/emit.h +++ b/src/coreclr/jit/emit.h @@ -1785,19 +1785,50 @@ class emitter void emitHandleMemOp(GenTreeIndir* indir, instrDesc* id, insFormat fmt, instruction ins); void spillIntArgRegsToShadowSlots(); -/************************************************************************/ -/* The logic that creates and keeps track of instruction groups */ -/************************************************************************/ + /************************************************************************/ + /* The logic that creates and keeps track of instruction groups */ + /************************************************************************/ + + // SC_IG_BUFFER_SIZE defines the size, in bytes, of the single, global instruction group buffer. + // When a label is reached, or the buffer is filled, the precise amount of the buffer that was + // used is copied to a newly allocated, precisely sized buffer, and the global buffer is reset + // for use with the next set of instructions (see emitSavIG). If the buffer was filled before + // reaching a label, the next instruction group will be an "overflow", or "extension" group + // (marked with IGF_EXTEND). Thus, the size of the global buffer shouldn't matter (as long as it + // can hold at least one of the largest instruction descriptor forms), since we can always overflow + // to subsequent instruction groups. + // + // The only place where this fixed instruction group size is a problem is in the main function prolog, + // where we only support a single instruction group, and no extension groups. We should really fix that. + // Thus, the buffer size needs to be large enough to hold the maximum number of instructions that + // can possibly be generated into the prolog instruction group. That is difficult to statically determine. + // + // If we do generate an overflow prolog group, we will hit a NOWAY assert and fall back to MinOpts. + // This should reduce the number of instructions generated into the prolog. + // + // Note that OSR prologs require additional code not seen in normal prologs. + // + // Also, note that DEBUG and non-DEBUG builds have different instrDesc sizes, and there are multiple + // sizes of instruction descriptors, so the number of instructions that will fit in the largest + // instruction group depends on the instruction mix as well as DEBUG/non-DEBUG build type. See the + // EMITTER_STATS output for various statistics related to this. + // + CLANG_FORMAT_COMMENT_ANCHOR; #ifdef TARGET_ARMARCH -// The only place where this limited instruction group size is a problem is -// in the prolog, where we only support a single instruction group. We should really fix that. // ARM32 and ARM64 both can require a bigger prolog instruction group. One scenario is where // a function uses all the incoming integer and single-precision floating-point arguments, // and must store them all to the frame on entry. If the frame is very large, we generate -// ugly code like "movw r10, 0x488; add r10, sp; vstr s0, [r10]" for each store, which -// eats up our insGroup buffer. -#define SC_IG_BUFFER_SIZE (100 * sizeof(emitter::instrDesc) + 14 * SMALL_IDSC_SIZE) +// ugly code like: +// movw r10, 0x488 +// add r10, sp +// vstr s0, [r10] +// for each store, or, to load arguments into registers: +// movz xip1, #0x6cd0 +// movk xip1, #2 LSL #16 +// ldr w8, [fp, xip1] // [V10 arg10] +// which eats up our insGroup buffer. +#define SC_IG_BUFFER_SIZE (200 * sizeof(emitter::instrDesc)) #else // !TARGET_ARMARCH #define SC_IG_BUFFER_SIZE (50 * sizeof(emitter::instrDesc) + 14 * SMALL_IDSC_SIZE) #endif // !TARGET_ARMARCH diff --git a/src/coreclr/jit/emitarm64.cpp b/src/coreclr/jit/emitarm64.cpp index 52f24d4524279d..2345ba413e6faa 100644 --- a/src/coreclr/jit/emitarm64.cpp +++ b/src/coreclr/jit/emitarm64.cpp @@ -6993,13 +6993,6 @@ void emitter::emitIns_R_R_R_Ext(instruction ins, shiftAmount = insOptsLSL(opt) ? scale : 0; } - // If target reg is ZR - it means we're doing an implicit nullcheck - // where target type was ignored and set to TYP_INT. - if ((reg1 == REG_ZR) && (shiftAmount > 0)) - { - shiftAmount = scale; - } - assert((shiftAmount == scale) || (shiftAmount == 0)); reg2 = encodingSPtoZR(reg2); diff --git a/src/coreclr/jit/emitxarch.cpp b/src/coreclr/jit/emitxarch.cpp index c203a1729dd401..01fd6e40598321 100644 --- a/src/coreclr/jit/emitxarch.cpp +++ b/src/coreclr/jit/emitxarch.cpp @@ -2784,17 +2784,15 @@ inline UNATIVE_OFFSET emitter::emitInsSizeCV(instrDesc* id, code_t code, int val bool valInByte = ((signed char)val == val) && (ins != INS_mov) && (ins != INS_test); #ifdef TARGET_AMD64 - // 64-bit immediates are only supported on mov r64, imm64 - // As per manual: - // Support for 64-bit immediate operands is accomplished by expanding - // the semantics of the existing move (MOV reg, imm16/32) instructions. - if ((valSize > sizeof(INT32)) && (ins != INS_mov)) - valSize = sizeof(INT32); -#else - // occasionally longs get here on x86 + // mov reg, imm64 is the only opcode which takes a full 8 byte immediate + // all other opcodes take a sign-extended 4-byte immediate + noway_assert(valSize <= sizeof(INT32) || !id->idIsCnsReloc()); +#endif // TARGET_AMD64 + if (valSize > sizeof(INT32)) + { valSize = sizeof(INT32); -#endif // !TARGET_AMD64 + } if (id->idIsCnsReloc()) { diff --git a/src/coreclr/jit/fgstmt.cpp b/src/coreclr/jit/fgstmt.cpp index f5f07399a1d371..0730540d175e67 100644 --- a/src/coreclr/jit/fgstmt.cpp +++ b/src/coreclr/jit/fgstmt.cpp @@ -511,9 +511,9 @@ void Compiler::fgRemoveStmt(BasicBlock* block, Statement* stmt DEBUGARG(bool isU } /******************************************************************************/ -// Returns true if the operator is involved in control-flow -// TODO-Cleanup: Move this into genTreeKinds in genTree.h - +// Returns true if the operator is involved in control-flow. +// TODO-Cleanup: Make this a GenTreeOperKind. +// inline bool OperIsControlFlow(genTreeOps oper) { switch (oper) diff --git a/src/coreclr/jit/flowgraph.cpp b/src/coreclr/jit/flowgraph.cpp index e2786ce57d820d..2311857bab7d73 100644 --- a/src/coreclr/jit/flowgraph.cpp +++ b/src/coreclr/jit/flowgraph.cpp @@ -2996,7 +2996,7 @@ void Compiler::fgSimpleLowering() GenTreeCall* call = tree->AsCall(); // Fast tail calls use the caller-supplied scratch // space so have no impact on this method's outgoing arg size. - if (!call->IsFastTailCall()) + if (!call->IsFastTailCall() && !call->IsHelperCall(this, CORINFO_HELP_VALIDATE_INDIRECT_CALL)) { // Update outgoing arg size to handle this call const unsigned thisCallOutAreaSize = call->fgArgInfo->GetOutArgSize(); diff --git a/src/coreclr/jit/forwardsub.cpp b/src/coreclr/jit/forwardsub.cpp index 77f0c6d99f4363..409bd18d237b5d 100644 --- a/src/coreclr/jit/forwardsub.cpp +++ b/src/coreclr/jit/forwardsub.cpp @@ -258,6 +258,11 @@ class ForwardSubVisitor final : public GenTreeVisitor } } } + } + + if (node->OperIsLocal()) + { + unsigned const lclNum = node->AsLclVarCommon()->GetLclNum(); // Uses of address-exposed locals are modelled as global refs. // @@ -370,7 +375,7 @@ class EffectsVisitor final : public GenTreeVisitor GenTree* const node = *use; m_flags |= node->gtFlags & GTF_ALL_EFFECT; - if (node->OperIs(GT_LCL_VAR)) + if (node->OperIsLocal()) { unsigned const lclNum = node->AsLclVarCommon()->GetLclNum(); LclVarDsc* const varDsc = m_compiler->lvaGetDesc(lclNum); diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index 1b99f5171cef08..8e1dd02c2c2f24 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -21,10 +21,17 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX /*****************************************************************************/ const unsigned char GenTree::gtOperKindTable[] = { -#define GTNODE(en, st, cm, ok) (ok) + GTK_COMMUTE *cm, +#define GTNODE(en, st, cm, ok) ((ok)>K_MASK) + GTK_COMMUTE *cm, #include "gtlist.h" }; +#ifdef DEBUG +const GenTreeDebugOperKind GenTree::gtDebugOperKindTable[] = { +#define GTNODE(en, st, cm, ok) static_cast((ok)&DBK_MASK), +#include "gtlist.h" +}; +#endif // DEBUG + /***************************************************************************** * * The types of different GenTree nodes @@ -706,14 +713,19 @@ int GenTree::GetRegisterDstCount(Compiler* compiler) const #endif } #endif - -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) - if (OperIs(GT_HWINTRINSIC)) +#ifdef FEATURE_HW_INTRINSICS + else if (OperIsHWIntrinsic()) { - assert(TypeGet() == TYP_STRUCT); - return 2; + assert(TypeIs(TYP_STRUCT)); + + const GenTreeHWIntrinsic* intrinsic = AsHWIntrinsic(); + const NamedIntrinsic intrinsicId = intrinsic->GetHWIntrinsicId(); + assert(HWIntrinsicInfo::IsMultiReg(intrinsicId)); + + return HWIntrinsicInfo::GetMultiRegCount(intrinsicId); } -#endif +#endif // FEATURE_HW_INTRINSICS + if (OperIsScalarLocal()) { return AsLclVar()->GetFieldCount(compiler); @@ -722,6 +734,121 @@ int GenTree::GetRegisterDstCount(Compiler* compiler) const return 0; } +//----------------------------------------------------------------------------------- +// IsMultiRegNode: whether a node returning its value in more than one register +// +// Arguments: +// None +// +// Return Value: +// Returns true if this GenTree is a multi-reg node. +// +// Notes: +// All targets that support multi-reg ops of any kind also support multi-reg return +// values for calls. Should that change with a future target, this method will need +// to change accordingly. +// +bool GenTree::IsMultiRegNode() const +{ +#if FEATURE_MULTIREG_RET + if (IsMultiRegCall()) + { + return true; + } + +#if FEATURE_ARG_SPLIT + if (OperIsPutArgSplit()) + { + return true; + } +#endif + +#if !defined(TARGET_64BIT) + if (OperIsMultiRegOp()) + { + return true; + } +#endif + + if (OperIs(GT_COPY, GT_RELOAD)) + { + return true; + } +#endif // FEATURE_MULTIREG_RET + +#ifdef FEATURE_HW_INTRINSICS + if (OperIsHWIntrinsic()) + { + return HWIntrinsicInfo::IsMultiReg(AsHWIntrinsic()->GetHWIntrinsicId()); + } +#endif // FEATURE_HW_INTRINSICS + + if (IsMultiRegLclVar()) + { + return true; + } + return false; +} + +//----------------------------------------------------------------------------------- +// GetMultiRegCount: Return the register count for a multi-reg node. +// +// Arguments: +// None +// +// Return Value: +// Returns the number of registers defined by this node. +// +unsigned GenTree::GetMultiRegCount() const +{ +#if FEATURE_MULTIREG_RET + if (IsMultiRegCall()) + { + return AsCall()->GetReturnTypeDesc()->GetReturnRegCount(); + } + +#if FEATURE_ARG_SPLIT + if (OperIsPutArgSplit()) + { + return AsPutArgSplit()->gtNumRegs; + } +#endif + +#if !defined(TARGET_64BIT) + if (OperIsMultiRegOp()) + { + return AsMultiRegOp()->GetRegCount(); + } +#endif + + if (OperIs(GT_COPY, GT_RELOAD)) + { + return AsCopyOrReload()->GetRegCount(); + } +#endif // FEATURE_MULTIREG_RET + +#ifdef FEATURE_HW_INTRINSICS + if (OperIsHWIntrinsic()) + { + return HWIntrinsicInfo::GetMultiRegCount(AsHWIntrinsic()->GetHWIntrinsicId()); + } +#endif // FEATURE_HW_INTRINSICS + + if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) + { + assert((gtFlags & GTF_VAR_MULTIREG) != 0); + // The register count for a multireg lclVar requires looking at the LclVarDsc, + // which requires a Compiler instance. The caller must handle this separately. + // The register count for a multireg lclVar requires looking at the LclVarDsc, + // which requires a Compiler instance. The caller must use the GetFieldCount + // method on GenTreeLclVar. + + assert(!"MultiRegCount for LclVar"); + } + assert(!"GetMultiRegCount called with non-multireg node"); + return 1; +} + //--------------------------------------------------------------- // gtGetRegMask: Get the reg mask of the node. // @@ -3735,6 +3862,7 @@ unsigned Compiler::gtSetEvalOrder(GenTree* tree) case NI_System_Math_Sqrt: case NI_System_Math_Tan: case NI_System_Math_Tanh: + case NI_System_Math_Truncate: { // Giving intrinsics a large fixed execution cost is because we'd like to CSE // them, even if they are implemented by calls. This is different from modeling @@ -10764,6 +10892,9 @@ void Compiler::gtDispTree(GenTree* tree, case NI_System_Math_Tanh: printf(" tanh"); break; + case NI_System_Math_Truncate: + printf(" truncate"); + break; case NI_System_Object_GetType: printf(" objGetType"); break; @@ -15592,29 +15723,32 @@ unsigned GenTree::IsLclVarUpdateTree(GenTree** pOtherTree, genTreeOps* pOper) return lclNum; } +#ifdef DEBUG //------------------------------------------------------------------------ // canBeContained: check whether this tree node may be a subcomponent of its parent for purposes // of code generation. // -// Return value: returns true if it is possible to contain this node and false otherwise. +// Return Value: +// True if it is possible to contain this node and false otherwise. +// bool GenTree::canBeContained() const { - assert(IsLIR()); + assert(OperIsLIR()); if (gtHasReg()) { return false; } - // It is not possible for nodes that do not produce values or that are not containable values - // to be contained. - if (((OperKind() & (GTK_NOVALUE | GTK_NOCONTAIN)) != 0) || (OperIsHWIntrinsic() && !isContainableHWIntrinsic())) + // It is not possible for nodes that do not produce values or that are not containable values to be contained. + if (!IsValue() || ((DebugOperKind() & DBK_NOCONTAIN) != 0) || (OperIsHWIntrinsic() && !isContainableHWIntrinsic())) { return false; } return true; } +#endif // DEBUG //------------------------------------------------------------------------ // isContained: check whether this tree node is a subcomponent of its parent for codegen purposes @@ -15631,7 +15765,7 @@ bool GenTree::canBeContained() const // bool GenTree::isContained() const { - assert(IsLIR()); + assert(OperIsLIR()); const bool isMarkedContained = ((gtFlags & GTF_CONTAINED) != 0); #ifdef DEBUG diff --git a/src/coreclr/jit/gentree.h b/src/coreclr/jit/gentree.h index b023c2bb8c52d4..5d37fb36562653 100644 --- a/src/coreclr/jit/gentree.h +++ b/src/coreclr/jit/gentree.h @@ -85,7 +85,7 @@ enum genTreeOps : BYTE // The following enum defines a set of bit flags that can be used // to classify expression tree nodes. // -enum genTreeKinds +enum GenTreeOperKind { GTK_SPECIAL = 0x00, // special operator GTK_LEAF = 0x01, // leaf operator @@ -95,12 +95,28 @@ enum genTreeKinds GTK_KINDMASK = (GTK_SPECIAL | GTK_LEAF | GTK_UNOP | GTK_BINOP), // operator kind mask GTK_SMPOP = (GTK_UNOP | GTK_BINOP), - GTK_COMMUTE = 0x08, // commutative operator - GTK_EXOP = 0x10, // Indicates that an oper for a node type that extends GenTreeOp (or GenTreeUnOp) - // by adding non-node fields to unary or binary operator. - GTK_NOVALUE = 0x20, // node does not produce a value - GTK_NOTLIR = 0x40, // node is not allowed in LIR - GTK_NOCONTAIN = 0x80, // this node is a value, but may not be contained + GTK_COMMUTE = 0x08, // commutative operator + GTK_EXOP = 0x10, // Indicates that an oper for a node type that extends GenTreeOp (or GenTreeUnOp) + // by adding non-node fields to unary or binary operator. + GTK_NOVALUE = 0x20, // node does not produce a value + + GTK_MASK = 0xFF +}; + +// The following enum defines a set of bit flags that describe opers for the purposes +// of DEBUG-only checks. This is separate from the above "GenTreeOperKind"s to avoid +// making the table for those larger in Release builds. However, it resides in the same +// "namespace" and so all values here must be distinct from those in "GenTreeOperKind". +// +enum GenTreeDebugOperKind +{ + DBK_FIRST_FLAG = GTK_MASK + 1, + + DBK_NOTHIR = DBK_FIRST_FLAG, // This oper is not supported in HIR (before rationalization). + DBK_NOTLIR = DBK_FIRST_FLAG << 1, // This oper is not supported in LIR (after rationalization). + DBK_NOCONTAIN = DBK_FIRST_FLAG << 2, // This oper produces a value, but may not be contained. + + DBK_MASK = ~GTK_MASK }; /*****************************************************************************/ @@ -878,8 +894,11 @@ struct GenTree public: // The register number is stored in a small format (8 bits), but the getters return and the setters take // a full-size (unsigned) format, to localize the casts here. + CLANG_FORMAT_COMMENT_ANCHOR; +#ifdef DEBUG bool canBeContained() const; +#endif // for codegen purposes, is this node a subnode of its parent bool isContained() const; @@ -1073,34 +1092,6 @@ struct GenTree return true; } - bool IsLIR() const - { - if ((OperKind(gtOper) & GTK_NOTLIR) != 0) - { - return false; - } - - switch (gtOper) - { - case GT_NOP: - // NOPs may only be present in LIR if they do not produce a value. - return IsNothingNode(); - - case GT_ADDR: - { - // ADDR ndoes may only be present in LIR if the location they refer to is not a - // local, class variable, or IND node. - GenTree* location = gtGetOp1(); - genTreeOps locationOp = location->OperGet(); - return !location->IsLocal() && (locationOp != GT_CLS_VAR) && (locationOp != GT_IND); - } - - default: - // All other nodes are assumed to be correct. - return true; - } - } - // LIR flags // These helper methods, along with the flag values they manipulate, are defined in lir.h // @@ -1286,6 +1277,11 @@ struct GenTree return OperIsPutArgStk() || OperIsPutArgReg() || OperIsPutArgSplit(); } + bool OperIsFieldList() const + { + return OperIs(GT_FIELD_LIST); + } + bool OperIsMultiRegOp() const { #if !defined(TARGET_64BIT) @@ -1645,6 +1641,20 @@ struct GenTree } #ifdef DEBUG + static const GenTreeDebugOperKind gtDebugOperKindTable[]; + + static GenTreeDebugOperKind DebugOperKind(genTreeOps oper) + { + assert(oper < GT_COUNT); + + return gtDebugOperKindTable[oper]; + } + + GenTreeDebugOperKind DebugOperKind() const + { + return DebugOperKind(OperGet()); + } + bool NullOp1Legal() const { assert(OperIsSimple()); @@ -1683,6 +1693,17 @@ struct GenTree } } + bool OperIsLIR() const + { + if (OperIs(GT_NOP)) + { + // NOPs may only be present in LIR if they do not produce a value. + return IsNothingNode(); + } + + return (DebugOperKind() & DBK_NOTLIR) == 0; + } + bool OperSupportsReverseOps() const; static bool RequiresNonNullOp2(genTreeOps oper); bool IsValidCallArgument(); @@ -1742,10 +1763,10 @@ struct GenTree inline bool IsMultiRegLclVar() const; // Returns true if it is a node returning its value in more than one register - inline bool IsMultiRegNode() const; + bool IsMultiRegNode() const; // Returns the number of registers defined by a multireg node. - unsigned GetMultiRegCount(); + unsigned GetMultiRegCount() const; // Returns the regIndex'th register defined by a possibly-multireg node. regNumber GetRegByIndex(int regIndex); @@ -3979,6 +4000,7 @@ enum class NonStandardArgKind : unsigned FixedRetBuffer, VirtualStubCell, R2RIndirectionCell, + ValidateIndirectCallTarget, // If changing this enum also change getNonStandardArgKindName and isNonStandardArgAddedLate in fgArgInfo }; @@ -3987,6 +4009,12 @@ enum class NonStandardArgKind : unsigned const char* getNonStandardArgKindName(NonStandardArgKind kind); #endif +enum class CFGCallKind +{ + ValidateAndCall, + Dispatch, +}; + struct GenTreeCall final : public GenTree { class Use @@ -4689,6 +4717,42 @@ struct GenTreeCall final : public GenTree return NonStandardArgKind::None; } + CFGCallKind GetCFGCallKind() + { +#if defined(TARGET_AMD64) + // On x64 the dispatcher is more performant, but we cannot use it when + // we need to pass indirection cells as those go into registers that + // are clobbered by the dispatch helper. + bool mayUseDispatcher = GetIndirectionCellArgKind() == NonStandardArgKind::None; + bool shouldUseDispatcher = true; +#elif defined(TARGET_ARM64) + bool mayUseDispatcher = true; + // Branch predictors on ARM64 generally do not handle the dispatcher as + // well as on x64 hardware, so only use the validator by default. + bool shouldUseDispatcher = false; +#else + // Other platforms do not even support the dispatcher. + bool mayUseDispatcher = false; + bool shouldUseDispatcher = false; +#endif + +#ifdef DEBUG + switch (JitConfig.JitCFGUseDispatcher()) + { + case 0: + shouldUseDispatcher = false; + break; + case 1: + shouldUseDispatcher = true; + break; + default: + break; + } +#endif + + return mayUseDispatcher && shouldUseDispatcher ? CFGCallKind::Dispatch : CFGCallKind::ValidateAndCall; + } + void ResetArgInfo(); GenTreeCallFlags gtCallMoreFlags; // in addition to gtFlags @@ -7101,7 +7165,7 @@ struct GenTreeCopyOrReload : public GenTreeUnOp #endif } - unsigned GetRegCount() + unsigned GetRegCount() const { #if FEATURE_MULTIREG_RET // We need to return the highest index for which we have a valid register. @@ -7950,117 +8014,6 @@ inline bool GenTree::IsMultiRegLclVar() const return false; } -//----------------------------------------------------------------------------------- -// IsMultiRegNode: whether a node returning its value in more than one register -// -// Arguments: -// None -// -// Return Value: -// Returns true if this GenTree is a multi-reg node. -// -// Notes: -// All targets that support multi-reg ops of any kind also support multi-reg return -// values for calls. Should that change with a future target, this method will need -// to change accordingly. -// -inline bool GenTree::IsMultiRegNode() const -{ -#if FEATURE_MULTIREG_RET - if (IsMultiRegCall()) - { - return true; - } - -#if FEATURE_ARG_SPLIT - if (OperIsPutArgSplit()) - { - return true; - } -#endif - -#if !defined(TARGET_64BIT) - if (OperIsMultiRegOp()) - { - return true; - } -#endif - - if (OperIs(GT_COPY, GT_RELOAD)) - { - return true; - } -#endif // FEATURE_MULTIREG_RET -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) - if (OperIs(GT_HWINTRINSIC)) - { - return (TypeGet() == TYP_STRUCT); - } -#endif - if (IsMultiRegLclVar()) - { - return true; - } - return false; -} -//----------------------------------------------------------------------------------- -// GetMultiRegCount: Return the register count for a multi-reg node. -// -// Arguments: -// None -// -// Return Value: -// Returns the number of registers defined by this node. -// -inline unsigned GenTree::GetMultiRegCount() -{ -#if FEATURE_MULTIREG_RET - if (IsMultiRegCall()) - { - return AsCall()->GetReturnTypeDesc()->GetReturnRegCount(); - } - -#if FEATURE_ARG_SPLIT - if (OperIsPutArgSplit()) - { - return AsPutArgSplit()->gtNumRegs; - } -#endif - -#if !defined(TARGET_64BIT) - if (OperIsMultiRegOp()) - { - return AsMultiRegOp()->GetRegCount(); - } -#endif - - if (OperIs(GT_COPY, GT_RELOAD)) - { - return AsCopyOrReload()->GetRegCount(); - } -#endif // FEATURE_MULTIREG_RET -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) - if (OperIs(GT_HWINTRINSIC)) - { - assert(TypeGet() == TYP_STRUCT); - return 2; - } -#endif - if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) - { - assert((gtFlags & GTF_VAR_MULTIREG) != 0); - // The register count for a multireg lclVar requires looking at the LclVarDsc, - // which requires a Compiler instance. The caller must handle this separately. - // The register count for a multireg lclVar requires looking at the LclVarDsc, - // which requires a Compiler instance. The caller must use the GetFieldCount - // method on GenTreeLclVar. - - assert(!"MultiRegCount for LclVar"); - } - assert(!"GetMultiRegCount called with non-multireg node"); - return 1; -} - //----------------------------------------------------------------------------------- // GetRegByIndex: Get a specific register, based on regIndex, that is produced // by this node. @@ -8108,13 +8061,14 @@ inline regNumber GenTree::GetRegByIndex(int regIndex) return AsCopyOrReload()->GetRegNumByIdx(regIndex); } #endif // FEATURE_MULTIREG_RET -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) +#ifdef FEATURE_HW_INTRINSICS if (OperIs(GT_HWINTRINSIC)) { assert(regIndex == 1); + // TODO-ARM64-NYI: Support hardware intrinsics operating on multiple contiguous registers. return AsHWIntrinsic()->GetOtherReg(); } -#endif +#endif // FEATURE_HW_INTRINSICS if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) { return AsLclVar()->GetRegNumByIdx(regIndex); @@ -8165,15 +8119,26 @@ inline var_types GenTree::GetRegTypeByIndex(int regIndex) #endif // FEATURE_MULTIREG_RET -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) - if (OperIs(GT_HWINTRINSIC)) + if (OperIsHWIntrinsic()) { + assert(TypeGet() == TYP_STRUCT); +#ifdef TARGET_ARM64 + if (AsHWIntrinsic()->GetSimdSize() == 16) + { + return TYP_SIMD16; + } + else + { + assert(AsHWIntrinsic()->GetSimdSize() == 8); + return TYP_SIMD8; + } +#elif defined(TARGET_XARCH) // At this time, the only multi-reg HW intrinsics all return the type of their // arguments. If this changes, we will need a way to record or determine this. - assert(TypeGet() == TYP_STRUCT); return gtGetOp1()->TypeGet(); - } #endif + } + if (OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) { if (TypeGet() == TYP_LONG) diff --git a/src/coreclr/jit/gschecks.cpp b/src/coreclr/jit/gschecks.cpp index 7765231a87551d..60634f60cfcea8 100644 --- a/src/coreclr/jit/gschecks.cpp +++ b/src/coreclr/jit/gschecks.cpp @@ -32,8 +32,6 @@ void Compiler::gsGSChecksInitCookie() info.compCompHnd->getGSCookie(&gsGlobalSecurityCookieVal, &gsGlobalSecurityCookieAddr); } -const unsigned NO_SHADOW_COPY = UINT_MAX; - /***************************************************************************** * gsCopyShadowParams * The current function has an unsafe buffer on the stack. Search for vulnerable @@ -368,7 +366,7 @@ void Compiler::gsParamsToShadows() for (UINT lclNum = 0; lclNum < lvaOldCount; lclNum++) { LclVarDsc* varDsc = lvaGetDesc(lclNum); - gsShadowVarInfo[lclNum].shadowCopy = NO_SHADOW_COPY; + gsShadowVarInfo[lclNum].shadowCopy = BAD_VAR_NUM; // Only care about params whose values are on the stack if (!ShadowParamVarInfo::mayNeedShadowCopy(varDsc)) @@ -452,7 +450,7 @@ void Compiler::gsParamsToShadows() unsigned int lclNum = tree->AsLclVarCommon()->GetLclNum(); unsigned int shadowLclNum = m_compiler->gsShadowVarInfo[lclNum].shadowCopy; - if (shadowLclNum != NO_SHADOW_COPY) + if (shadowLclNum != BAD_VAR_NUM) { LclVarDsc* varDsc = m_compiler->lvaGetDesc(lclNum); assert(ShadowParamVarInfo::mayNeedShadowCopy(varDsc)); @@ -492,7 +490,7 @@ void Compiler::gsParamsToShadows() const LclVarDsc* varDsc = lvaGetDesc(lclNum); const unsigned shadowVarNum = gsShadowVarInfo[lclNum].shadowCopy; - if (shadowVarNum == NO_SHADOW_COPY) + if (shadowVarNum == BAD_VAR_NUM) { continue; } @@ -544,7 +542,7 @@ void Compiler::gsParamsToShadows() const LclVarDsc* varDsc = lvaGetDesc(lclNum); const unsigned shadowVarNum = gsShadowVarInfo[lclNum].shadowCopy; - if (shadowVarNum == NO_SHADOW_COPY) + if (shadowVarNum == BAD_VAR_NUM) { continue; } diff --git a/src/coreclr/jit/gtlist.h b/src/coreclr/jit/gtlist.h index 9b40861fef0fd0..1d0be8bd167664 100644 --- a/src/coreclr/jit/gtlist.h +++ b/src/coreclr/jit/gtlist.h @@ -11,7 +11,7 @@ // Node enum // , GenTree struct flavor // ,commutative -// ,operKind +// ,oper kind | DEBUG oper kind GTNODE(NONE , char ,0,GTK_SPECIAL) @@ -19,23 +19,27 @@ GTNODE(NONE , char ,0,GTK_SPECIAL) // Nodes related to locals: //----------------------------------------------------------------------------- -GTNODE(PHI , GenTreePhi ,0,GTK_SPECIAL) // phi node for ssa. -GTNODE(PHI_ARG , GenTreePhiArg ,0,GTK_LEAF) // phi(phiarg, phiarg, phiarg) -GTNODE(LCL_VAR , GenTreeLclVar ,0,GTK_LEAF) // local variable -GTNODE(LCL_FLD , GenTreeLclFld ,0,GTK_LEAF) // field in a non-primitive variable -GTNODE(STORE_LCL_VAR , GenTreeLclVar ,0,(GTK_UNOP|GTK_NOVALUE)) // store to local variable -GTNODE(STORE_LCL_FLD , GenTreeLclFld ,0,(GTK_UNOP|GTK_NOVALUE)) // store to a part of the variable -GTNODE(LCL_VAR_ADDR , GenTreeLclVar ,0,GTK_LEAF) // address of local variable -GTNODE(LCL_FLD_ADDR , GenTreeLclFld ,0,GTK_LEAF) // address of field in a non-primitive variable +GTNODE(PHI , GenTreePhi ,0,GTK_SPECIAL) // phi node for ssa. +GTNODE(PHI_ARG , GenTreePhiArg ,0,GTK_LEAF) // phi(phiarg, phiarg, phiarg) +GTNODE(LCL_VAR , GenTreeLclVar ,0,GTK_LEAF) // local variable +GTNODE(LCL_FLD , GenTreeLclFld ,0,GTK_LEAF) // field in a non-primitive variable +GTNODE(STORE_LCL_VAR , GenTreeLclVar ,0,GTK_UNOP|GTK_NOVALUE) // store to local variable +GTNODE(STORE_LCL_FLD , GenTreeLclFld ,0,GTK_UNOP|GTK_NOVALUE) // store to a part of the variable +GTNODE(LCL_VAR_ADDR , GenTreeLclVar ,0,GTK_LEAF) // address of local variable +GTNODE(LCL_FLD_ADDR , GenTreeLclFld ,0,GTK_LEAF) // address of field in a non-primitive variable //----------------------------------------------------------------------------- // Leaf nodes (i.e. these nodes have no sub-operands): //----------------------------------------------------------------------------- -GTNODE(CATCH_ARG , GenTree ,0,GTK_LEAF) // Exception object in a catch block -GTNODE(LABEL , GenTree ,0,GTK_LEAF) // Jump-target -GTNODE(FTN_ADDR , GenTreeFptrVal ,0,GTK_LEAF) // Address of a function -GTNODE(RET_EXPR , GenTreeRetExpr ,0,GTK_LEAF|GTK_NOTLIR) // Place holder for the return expression from an inline candidate +GTNODE(CATCH_ARG , GenTree ,0,GTK_LEAF) // Exception object in a catch block +GTNODE(LABEL , GenTree ,0,GTK_LEAF) // Jump-target +GTNODE(JMP , GenTreeVal ,0,GTK_LEAF|GTK_NOVALUE) // Jump to another function +GTNODE(FTN_ADDR , GenTreeFptrVal ,0,GTK_LEAF) // Address of a function +GTNODE(RET_EXPR , GenTreeRetExpr ,0,GTK_LEAF|DBK_NOTLIR) // Place holder for the return expression from an inline candidate +GTNODE(CLS_VAR , GenTreeClsVar ,0,GTK_LEAF) // Static data member + +GTNODE(ARGPLACE , GenTreeArgPlace ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTLIR) // Placeholder for a "late arg" in the original arg list. //----------------------------------------------------------------------------- // Constant nodes: @@ -51,54 +55,52 @@ GTNODE(CNS_STR , GenTreeStrCon ,0,GTK_LEAF) //----------------------------------------------------------------------------- GTNODE(NOT , GenTreeOp ,0,GTK_UNOP) -GTNODE(NOP , GenTree ,0,(GTK_UNOP|GTK_NOCONTAIN)) +GTNODE(NOP , GenTree ,0,GTK_UNOP|DBK_NOCONTAIN) GTNODE(NEG , GenTreeOp ,0,GTK_UNOP) -GTNODE(COPY , GenTreeCopyOrReload,0,GTK_UNOP) // Copies a variable from its current location to a register that satisfies - // code generation constraints. The child is the actual lclVar node. -GTNODE(RELOAD , GenTreeCopyOrReload,0,GTK_UNOP) -GTNODE(ARR_LENGTH , GenTreeArrLen ,0,(GTK_UNOP|GTK_EXOP)) // array-length -GTNODE(INTRINSIC , GenTreeIntrinsic ,0,(GTK_BINOP|GTK_EXOP)) // intrinsics -GTNODE(LOCKADD , GenTreeOp ,0,(GTK_BINOP|GTK_NOVALUE)) +GTNODE(INTRINSIC , GenTreeIntrinsic ,0,GTK_BINOP|GTK_EXOP) + +GTNODE(LOCKADD , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR) GTNODE(XAND , GenTreeOp ,0,GTK_BINOP) GTNODE(XORR , GenTreeOp ,0,GTK_BINOP) GTNODE(XADD , GenTreeOp ,0,GTK_BINOP) GTNODE(XCHG , GenTreeOp ,0,GTK_BINOP) GTNODE(CMPXCHG , GenTreeCmpXchg ,0,GTK_SPECIAL) -GTNODE(MEMORYBARRIER , GenTree ,0,(GTK_LEAF|GTK_NOVALUE)) +GTNODE(MEMORYBARRIER , GenTree ,0,GTK_LEAF|GTK_NOVALUE) -GTNODE(KEEPALIVE , GenTree ,0,(GTK_UNOP|GTK_NOVALUE)) // keep operand alive, generate no code, produce no result +GTNODE(KEEPALIVE , GenTree ,0,GTK_UNOP|GTK_NOVALUE) // keep operand alive, generate no code, produce no result -GTNODE(CAST , GenTreeCast ,0,(GTK_UNOP|GTK_EXOP)) // conversion to another type +GTNODE(CAST , GenTreeCast ,0,GTK_UNOP|GTK_EXOP) // conversion to another type #if defined(TARGET_ARM) GTNODE(BITCAST , GenTreeMultiRegOp ,0,GTK_UNOP) // reinterpretation of bits as another type #else GTNODE(BITCAST , GenTreeOp ,0,GTK_UNOP) // reinterpretation of bits as another type #endif -GTNODE(CKFINITE , GenTreeOp ,0,(GTK_UNOP|GTK_NOCONTAIN)) // Check for NaN -GTNODE(LCLHEAP , GenTreeOp ,0,(GTK_UNOP|GTK_NOCONTAIN)) // alloca() -GTNODE(JMP , GenTreeVal ,0,(GTK_LEAF|GTK_NOVALUE)) // Jump to another function - -GTNODE(ADDR , GenTreeOp ,0,GTK_UNOP) // address of +GTNODE(CKFINITE , GenTreeOp ,0,GTK_UNOP|DBK_NOCONTAIN) // Check for NaN +GTNODE(LCLHEAP , GenTreeOp ,0,GTK_UNOP|DBK_NOCONTAIN) // alloca() -GTNODE(IND , GenTreeIndir ,0,GTK_UNOP) // load indirection -GTNODE(STOREIND , GenTreeStoreInd ,0,(GTK_BINOP|GTK_NOVALUE)) // store indirection +GTNODE(ADDR , GenTreeOp ,0,GTK_UNOP|DBK_NOTLIR) // address of -GTNODE(BOUNDS_CHECK , GenTreeBoundsChk ,0,(GTK_BINOP|GTK_EXOP|GTK_NOVALUE)) // a bounds check - for arrays/spans/SIMDs/HWINTRINSICs +GTNODE(BOUNDS_CHECK , GenTreeBoundsChk ,0,GTK_BINOP|GTK_EXOP|GTK_NOVALUE) // a bounds check - for arrays/spans/SIMDs/HWINTRINSICs -GTNODE(OBJ , GenTreeObj ,0,(GTK_UNOP|GTK_EXOP)) // Object that MAY have gc pointers, and thus includes the relevant gc layout info. -GTNODE(STORE_OBJ , GenTreeObj ,0,(GTK_BINOP|GTK_EXOP|GTK_NOVALUE)) // Object that MAY have gc pointers, and thus includes the relevant gc layout info. -GTNODE(BLK , GenTreeBlk ,0,(GTK_UNOP|GTK_EXOP)) // Block/object with no gc pointers, and with a known size (e.g. a struct with no gc fields) -GTNODE(STORE_BLK , GenTreeBlk ,0,(GTK_BINOP|GTK_EXOP|GTK_NOVALUE)) // Block/object with no gc pointers, and with a known size (e.g. a struct with no gc fields) -GTNODE(STORE_DYN_BLK , GenTreeStoreDynBlk ,0,(GTK_SPECIAL|GTK_NOVALUE)) // Dynamically sized block store +GTNODE(IND , GenTreeIndir ,0,GTK_UNOP) // Load indirection +GTNODE(STOREIND , GenTreeStoreInd ,0,GTK_BINOP|GTK_NOVALUE) // Store indirection +GTNODE(OBJ , GenTreeObj ,0,GTK_UNOP|GTK_EXOP) // Object that MAY have gc pointers, and thus includes the relevant gc layout info. +GTNODE(STORE_OBJ , GenTreeObj ,0,GTK_BINOP|GTK_EXOP|GTK_NOVALUE) // Object that MAY have gc pointers, and thus includes the relevant gc layout info. +GTNODE(BLK , GenTreeBlk ,0,GTK_UNOP|GTK_EXOP) // Block/object with no gc pointers, and with a known size (e.g. a struct with no gc fields) +GTNODE(STORE_BLK , GenTreeBlk ,0,GTK_BINOP|GTK_EXOP|GTK_NOVALUE) // Block/object with no gc pointers, and with a known size (e.g. a struct with no gc fields) +GTNODE(STORE_DYN_BLK , GenTreeStoreDynBlk ,0,GTK_SPECIAL|GTK_NOVALUE) // Dynamically sized block store +GTNODE(NULLCHECK , GenTreeIndir ,0,GTK_UNOP|GTK_NOVALUE) // Null checks the source -GTNODE(BOX , GenTreeBox ,0,(GTK_UNOP|GTK_EXOP|GTK_NOTLIR)) -GTNODE(FIELD , GenTreeField ,0,(GTK_UNOP|GTK_EXOP)) // Member-field -GTNODE(ALLOCOBJ , GenTreeAllocObj ,0,(GTK_UNOP|GTK_EXOP)) // object allocator +GTNODE(ARR_LENGTH , GenTreeArrLen ,0,GTK_UNOP|GTK_EXOP) +GTNODE(FIELD , GenTreeField ,0,GTK_UNOP|GTK_EXOP|DBK_NOTLIR) // Member-field +GTNODE(ALLOCOBJ , GenTreeAllocObj ,0,GTK_UNOP|GTK_EXOP|DBK_NOTLIR) // object allocator -GTNODE(INIT_VAL , GenTreeOp ,0,GTK_UNOP) // Initialization value for an initBlk +GTNODE(INIT_VAL , GenTreeOp ,0,GTK_UNOP) // Initialization value for an initBlk -GTNODE(RUNTIMELOOKUP , GenTreeRuntimeLookup, 0,(GTK_UNOP|GTK_EXOP)) // Runtime handle lookup +GTNODE(BOX , GenTreeBox ,0,GTK_UNOP|GTK_EXOP|DBK_NOTLIR) // Marks its first operands (a local) as being a box +GTNODE(PUTARG_TYPE , GenTreeOp ,0,GTK_UNOP|DBK_NOTLIR) // Saves argument type between importation and morph +GTNODE(RUNTIMELOOKUP , GenTreeRuntimeLookup, 0,GTK_UNOP|GTK_EXOP|DBK_NOTLIR) // Runtime handle lookup GTNODE(BSWAP , GenTreeOp ,0,GTK_UNOP) // Byte swap (32-bit or 64-bit) GTNODE(BSWAP16 , GenTreeOp ,0,GTK_UNOP) // Byte swap (16-bit) @@ -126,7 +128,7 @@ GTNODE(RSZ , GenTreeOp ,0,GTK_BINOP) GTNODE(ROL , GenTreeOp ,0,GTK_BINOP) GTNODE(ROR , GenTreeOp ,0,GTK_BINOP) -GTNODE(ASG , GenTreeOp ,0,(GTK_BINOP|GTK_NOTLIR)) +GTNODE(ASG , GenTreeOp ,0,GTK_BINOP|DBK_NOTLIR) GTNODE(EQ , GenTreeOp ,0,GTK_BINOP) GTNODE(NE , GenTreeOp ,0,GTK_BINOP) GTNODE(LT , GenTreeOp ,0,GTK_BINOP) @@ -141,38 +143,35 @@ GTNODE(GT , GenTreeOp ,0,GTK_BINOP) // codegen which emits a "test reg, reg" instruction, that would be more difficult to do // during lowering because the source operand is used twice so it has to be a lclvar. // Because of this there is no need to also add GT_TEST_LT/LE/GE/GT opers. -GTNODE(TEST_EQ , GenTreeOp ,0,GTK_BINOP) -GTNODE(TEST_NE , GenTreeOp ,0,GTK_BINOP) - -GTNODE(COMMA , GenTreeOp ,0,(GTK_BINOP|GTK_NOTLIR)) - -GTNODE(QMARK , GenTreeQmark ,0,(GTK_BINOP|GTK_EXOP|GTK_NOTLIR)) -GTNODE(COLON , GenTreeColon ,0,(GTK_BINOP|GTK_NOTLIR)) +GTNODE(TEST_EQ , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) +GTNODE(TEST_NE , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) -GTNODE(INDEX , GenTreeIndex ,0,(GTK_BINOP|GTK_EXOP|GTK_NOTLIR)) // SZ-array-element -GTNODE(INDEX_ADDR , GenTreeIndexAddr ,0,(GTK_BINOP|GTK_EXOP)) // addr of SZ-array-element; - // used when aiming to minimize compile times. +GTNODE(COMMA , GenTreeOp ,0,GTK_BINOP|DBK_NOTLIR) +GTNODE(QMARK , GenTreeQmark ,0,GTK_BINOP|GTK_EXOP|DBK_NOTLIR) +GTNODE(COLON , GenTreeColon ,0,GTK_BINOP|DBK_NOTLIR) -GTNODE(MKREFANY , GenTreeOp ,0,GTK_BINOP|GTK_NOTLIR) +GTNODE(INDEX , GenTreeIndex ,0,GTK_BINOP|GTK_EXOP|DBK_NOTLIR) // SZ-array-element. +GTNODE(INDEX_ADDR , GenTreeIndexAddr ,0,GTK_BINOP|GTK_EXOP) // Addr of SZ-array-element; used when aiming to minimize compile times. -GTNODE(LEA , GenTreeAddrMode ,0,(GTK_BINOP|GTK_EXOP)) +GTNODE(MKREFANY , GenTreeOp ,0,GTK_BINOP|DBK_NOTLIR) +GTNODE(LEA , GenTreeAddrMode ,0,GTK_BINOP|GTK_EXOP) #if !defined(TARGET_64BIT) // A GT_LONG node simply represents the long value produced by the concatenation // of its two (lower and upper half) operands. Some GT_LONG nodes are transient, // during the decomposing of longs; others are handled by codegen as operands of // nodes such as calls, returns and stores of long lclVars. -GTNODE(LONG , GenTreeOp ,0,GTK_BINOP) +GTNODE(LONG , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) // The following are nodes representing x86/arm32 specific long operators, including // high operators of a 64-bit operations that requires a carry/borrow, which are // named GT_XXX_HI for consistency, low operators of 64-bit operations that need // to not be modified in phases post-decompose, and operators that return 64-bit // results in one instruction. -GTNODE(ADD_LO , GenTreeOp ,1,GTK_BINOP) -GTNODE(ADD_HI , GenTreeOp ,1,GTK_BINOP) -GTNODE(SUB_LO , GenTreeOp ,0,GTK_BINOP) -GTNODE(SUB_HI , GenTreeOp ,0,GTK_BINOP) +GTNODE(ADD_LO , GenTreeOp ,1,GTK_BINOP|DBK_NOTHIR) +GTNODE(ADD_HI , GenTreeOp ,1,GTK_BINOP|DBK_NOTHIR) +GTNODE(SUB_LO , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) +GTNODE(SUB_HI , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) // The following are nodes that specify shifts that take a GT_LONG op1. The GT_LONG // contains the hi and lo parts of three operand shift form where one op will be @@ -181,8 +180,8 @@ GTNODE(SUB_HI , GenTreeOp ,0,GTK_BINOP) // will shift the lo bits of the high operand into the lo operand). LSH_HI // represents the high operation of a 64-bit left shift by a constant int, and // RSH_LO represents the lo operation of a 64-bit right shift by a constant int. -GTNODE(LSH_HI , GenTreeOp ,0,GTK_BINOP) -GTNODE(RSH_LO , GenTreeOp ,0,GTK_BINOP) +GTNODE(LSH_HI , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) +GTNODE(RSH_LO , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) #endif // !defined(TARGET_64BIT) #ifdef FEATURE_SIMD @@ -197,13 +196,14 @@ GTNODE(HWINTRINSIC , GenTreeHWIntrinsic ,0,GTK_SPECIAL) // ha // Backend-specific arithmetic nodes: //----------------------------------------------------------------------------- -GTNODE(INC_SATURATE , GenTreeOp ,0,GTK_UNOP) // saturating increment, used in division by a constant (LowerUnsignedDivOrMod) +// Saturating increment, used in division by a constant (LowerUnsignedDivOrMod). +GTNODE(INC_SATURATE , GenTreeOp ,0,GTK_UNOP|DBK_NOTHIR) // Returns high bits (top N bits of the 2N bit result of an NxN multiply) // GT_MULHI is used in division by a constant (LowerUnsignedDivOrMod). We turn // the div into a MULHI + some adjustments. In codegen, we only use the // results of the high register, and we drop the low results. -GTNODE(MULHI , GenTreeOp ,1,GTK_BINOP) +GTNODE(MULHI , GenTreeOp ,1,GTK_BINOP|DBK_NOTHIR) // A mul that returns the 2N bit result of an NxN multiply. This op is used for // multiplies that take two ints and return a long result. For 32 bit targets, @@ -212,100 +212,96 @@ GTNODE(MULHI , GenTreeOp ,1,GTK_BINOP) // part of the result, whereas GT_MUL_LONG keeps both parts of the result. // MUL_LONG is also used on ARM64, where 64 bit multiplication is more expensive. #if !defined(TARGET_64BIT) -GTNODE(MUL_LONG , GenTreeMultiRegOp ,1,GTK_BINOP) +GTNODE(MUL_LONG , GenTreeMultiRegOp ,1,GTK_BINOP|DBK_NOTHIR) #elif defined(TARGET_ARM64) -GTNODE(MUL_LONG , GenTreeOp ,1,GTK_BINOP) +GTNODE(MUL_LONG , GenTreeOp ,1,GTK_BINOP|DBK_NOTHIR) #endif // AndNot - emitted on ARM/ARM64 as the BIC instruction. Also used for creating AndNot HWINTRINSIC vector nodes in a cross-ISA manner. -GTNODE(AND_NOT , GenTreeOp ,0,GTK_BINOP) +GTNODE(AND_NOT , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) + +#ifdef TARGET_ARM64 +GTNODE(MADD , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) // Generates the Multiply-Add instruction (madd/msub) In the future, we might consider + // enabling it for both armarch and xarch for floating-point MADD "unsafe" math. +GTNODE(ADDEX, GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) // Add with sign/zero extension. +GTNODE(BFIZ , GenTreeOp ,0,GTK_BINOP|DBK_NOTHIR) // Bitfield Insert in Zero. +#endif + //----------------------------------------------------------------------------- // LIR specific compare and conditional branch/set nodes: //----------------------------------------------------------------------------- -GTNODE(CMP , GenTreeOp ,0,(GTK_BINOP|GTK_NOVALUE)) // Sets the condition flags according to the compare result. - // N.B. Not a relop, it does not produce a value and it cannot be reversed. -GTNODE(JCMP , GenTreeOp ,0,(GTK_BINOP|GTK_NOVALUE)) // Makes a comparison and jump if the condition specified. Does not set flags -GTNODE(JCC , GenTreeCC ,0,(GTK_LEAF|GTK_NOVALUE)) // Checks the condition flags and branch if the condition specified - // by GenTreeCC::gtCondition is true. -GTNODE(SETCC , GenTreeCC ,0,GTK_LEAF) // Checks the condition flags and produces 1 if the condition specified - // by GenTreeCC::gtCondition is true and 0 otherwise. +// Sets the condition flags according to the compare result. N.B. Not a relop, it does not produce a value and it cannot be reversed. +GTNODE(CMP , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR) +// Makes a comparison and jump if the condition specified. Does not set flags. +GTNODE(JCMP , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR) +// Checks the condition flags and branch if the condition specified by GenTreeCC::gtCondition is true. +GTNODE(JCC , GenTreeCC ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) +// Checks the condition flags and produces 1 if the condition specified by GenTreeCC::gtCondition is true and 0 otherwise. +GTNODE(SETCC , GenTreeCC ,0,GTK_LEAF|DBK_NOTHIR) #ifdef TARGET_XARCH -GTNODE(BT , GenTreeOp ,0,(GTK_BINOP|GTK_NOVALUE)) // The XARCH BT instruction. Like CMP, this sets the condition flags (CF - // to be precise) and does not produce a value. +// The XARCH BT instruction. Like CMP, this sets the condition flags (CF to be precise) and does not produce a value. +GTNODE(BT , GenTreeOp ,0,(GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR)) #endif + //----------------------------------------------------------------------------- // Other nodes that look like unary/binary operators: //----------------------------------------------------------------------------- -GTNODE(JTRUE , GenTreeOp ,0,(GTK_UNOP|GTK_NOVALUE)) +GTNODE(JTRUE , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) //----------------------------------------------------------------------------- // Other nodes that have special structure: //----------------------------------------------------------------------------- GTNODE(ARR_ELEM , GenTreeArrElem ,0,GTK_SPECIAL) // Multi-dimensional array-element address -GTNODE(ARR_INDEX , GenTreeArrIndex ,0,(GTK_BINOP|GTK_EXOP)) // Effective, bounds-checked index for one dimension of a multi-dimensional array element +GTNODE(ARR_INDEX , GenTreeArrIndex ,0,GTK_BINOP|GTK_EXOP) // Effective, bounds-checked index for one dimension of a multi-dimensional array element GTNODE(ARR_OFFSET , GenTreeArrOffs ,0,GTK_SPECIAL) // Flattened offset of multi-dimensional array element -GTNODE(CALL , GenTreeCall ,0,(GTK_SPECIAL|GTK_NOCONTAIN)) +GTNODE(CALL , GenTreeCall ,0,GTK_SPECIAL|DBK_NOCONTAIN) GTNODE(FIELD_LIST , GenTreeFieldList ,0,GTK_SPECIAL) // List of fields of a struct, when passed as an argument -GTNODE(RETURN , GenTreeOp ,0,(GTK_UNOP|GTK_NOVALUE)) // return from current function -GTNODE(SWITCH , GenTreeOp ,0,(GTK_UNOP|GTK_NOVALUE)) // switch - -GTNODE(NO_OP , GenTree ,0,(GTK_LEAF|GTK_NOVALUE)) // nop! - -GTNODE(START_NONGC , GenTree ,0,(GTK_LEAF|GTK_NOVALUE)) // starts a new instruction group that will be non-gc interruptible - -GTNODE(START_PREEMPTGC , GenTree ,0,(GTK_LEAF|GTK_NOVALUE)) // starts a new instruction group where preemptive GC is enabled +GTNODE(RETURN , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) +GTNODE(SWITCH , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) +GTNODE(NO_OP , GenTree ,0,GTK_LEAF|GTK_NOVALUE) // A NOP that cannot be deleted. -GTNODE(PROF_HOOK , GenTree ,0,(GTK_LEAF|GTK_NOVALUE)) // profiler Enter/Leave/TailCall hook +GTNODE(START_NONGC , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // Starts a new instruction group that will be non-gc interruptible. +GTNODE(START_PREEMPTGC , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // Starts a new instruction group where preemptive GC is enabled. +GTNODE(PROF_HOOK , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // Profiler Enter/Leave/TailCall hook. -GTNODE(RETFILT , GenTreeOp ,0,(GTK_UNOP|GTK_NOVALUE)) // end filter with TYP_I_IMPL return value +GTNODE(RETFILT , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) // End filter with TYP_I_IMPL return value. #if !defined(FEATURE_EH_FUNCLETS) -GTNODE(END_LFIN , GenTreeVal ,0,(GTK_LEAF|GTK_NOVALUE)) // end locally-invoked finally +GTNODE(END_LFIN , GenTreeVal ,0,GTK_LEAF|GTK_NOVALUE) // End locally-invoked finally. #endif // !FEATURE_EH_FUNCLETS //----------------------------------------------------------------------------- // Nodes used by Lower to generate a closer CPU representation of other nodes //----------------------------------------------------------------------------- -#ifdef TARGET_ARM64 -GTNODE(MADD , GenTreeOp ,0, GTK_BINOP) // Generates the Multiply-Add instruction (madd/msub) - // In future, we might consider enabling it for both armarch and xarch - // for floating-point MADD "unsafe" math -#endif -GTNODE(JMPTABLE , GenTree ,0, (GTK_LEAF|GTK_NOCONTAIN)) // Generates the jump table for switches -GTNODE(SWITCH_TABLE , GenTreeOp ,0, (GTK_BINOP|GTK_NOVALUE)) // Jump Table based switch construct -#ifdef TARGET_ARM64 -GTNODE(ADDEX, GenTreeOp ,0, GTK_BINOP) // Add with sign/zero extension -GTNODE(BFIZ , GenTreeOp ,0, GTK_BINOP) // Bitfield Insert in Zero -#endif +GTNODE(JMPTABLE , GenTree ,0,GTK_LEAF|DBK_NOCONTAIN|DBK_NOTHIR) // Generates the jump table for switches +GTNODE(SWITCH_TABLE , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR) // Jump Table based switch construct //----------------------------------------------------------------------------- // Nodes used only within the code generator: //----------------------------------------------------------------------------- -GTNODE(CLS_VAR , GenTreeClsVar ,0,GTK_LEAF) // static data member -GTNODE(CLS_VAR_ADDR , GenTreeClsVar ,0,GTK_LEAF) // static data member address -GTNODE(ARGPLACE , GenTreeArgPlace ,0,GTK_LEAF|GTK_NOVALUE|GTK_NOTLIR) // placeholder for a register arg -GTNODE(NULLCHECK , GenTreeIndir ,0,GTK_UNOP|GTK_NOVALUE) // null checks the source -GTNODE(PHYSREG , GenTreePhysReg ,0,GTK_LEAF) // read from a physical register -GTNODE(EMITNOP , GenTree ,0,GTK_LEAF|GTK_NOVALUE) // emitter-placed nop -GTNODE(PINVOKE_PROLOG , GenTree ,0,GTK_LEAF|GTK_NOVALUE) // pinvoke prolog seq -GTNODE(PINVOKE_EPILOG , GenTree ,0,GTK_LEAF|GTK_NOVALUE) // pinvoke epilog seq +GTNODE(CLS_VAR_ADDR , GenTreeClsVar ,0,GTK_LEAF|DBK_NOTHIR) // static data member address +GTNODE(PHYSREG , GenTreePhysReg ,0,GTK_LEAF|DBK_NOTHIR) // read from a physical register +GTNODE(EMITNOP , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // emitter-placed nop +GTNODE(PINVOKE_PROLOG , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // pinvoke prolog seq +GTNODE(PINVOKE_EPILOG , GenTree ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // pinvoke epilog seq +GTNODE(RETURNTRAP , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE|DBK_NOTHIR) // a conditional call to wait on gc #if defined(TARGET_ARM) -GTNODE(PUTARG_REG , GenTreeMultiRegOp ,0,GTK_UNOP) // operator that places outgoing arg in register +GTNODE(PUTARG_REG , GenTreeMultiRegOp ,0,GTK_UNOP|DBK_NOTHIR) // operator that places outgoing arg in register #else -GTNODE(PUTARG_REG , GenTreeOp ,0,GTK_UNOP) // operator that places outgoing arg in register +GTNODE(PUTARG_REG , GenTreeOp ,0,GTK_UNOP|DBK_NOTHIR) // operator that places outgoing arg in register #endif -GTNODE(PUTARG_TYPE , GenTreeOp ,0,GTK_UNOP|GTK_NOTLIR) // operator that places saves argument type between importation and morph -GTNODE(PUTARG_STK , GenTreePutArgStk ,0,GTK_UNOP|GTK_NOVALUE) // operator that places outgoing arg in stack +GTNODE(PUTARG_STK , GenTreePutArgStk ,0,GTK_UNOP|GTK_NOVALUE|DBK_NOTHIR) // operator that places outgoing arg in stack #if FEATURE_ARG_SPLIT -GTNODE(PUTARG_SPLIT , GenTreePutArgSplit ,0,GTK_UNOP) // operator that places outgoing arg in registers with stack (split struct in ARM32) +GTNODE(PUTARG_SPLIT , GenTreePutArgSplit ,0,GTK_UNOP|DBK_NOTHIR) // operator that places outgoing arg in registers with stack (split struct in ARM32) #endif // FEATURE_ARG_SPLIT -GTNODE(RETURNTRAP , GenTreeOp ,0,GTK_UNOP|GTK_NOVALUE) // a conditional call to wait on gc -GTNODE(SWAP , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE) // op1 and op2 swap (registers) -GTNODE(IL_OFFSET , Statement ,0,GTK_LEAF|GTK_NOVALUE) // marks an IL offset for debugging purposes +GTNODE(SWAP , GenTreeOp ,0,GTK_BINOP|GTK_NOVALUE|DBK_NOTHIR) // op1 and op2 swap (registers) +GTNODE(COPY , GenTreeCopyOrReload,0,GTK_UNOP|DBK_NOTHIR) // Copies a variable from its current location to a register that satisfies +GTNODE(RELOAD , GenTreeCopyOrReload,0,GTK_UNOP|DBK_NOTHIR) // code generation constraints. The operand is the actual lclVar node. +GTNODE(IL_OFFSET , GenTreeILOffset ,0,GTK_LEAF|GTK_NOVALUE|DBK_NOTHIR) // marks an IL offset for debugging purposes /*****************************************************************************/ #undef GTNODE diff --git a/src/coreclr/jit/hwintrinsic.cpp b/src/coreclr/jit/hwintrinsic.cpp index fe9729ee7a9f15..9e158de20f94ba 100644 --- a/src/coreclr/jit/hwintrinsic.cpp +++ b/src/coreclr/jit/hwintrinsic.cpp @@ -770,14 +770,23 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic, { unsigned int sizeBytes; simdBaseJitType = getBaseJitTypeAndSizeOfSIMDType(sig->retTypeSigClass, &sizeBytes); - retType = getSIMDTypeForSize(sizeBytes); - assert(sizeBytes != 0); - // We want to return early here for cases where retType was TYP_STRUCT as per method signature and - // rather than deferring the decision after getting the simdBaseJitType of arg. - if (!isSupportedBaseType(intrinsic, simdBaseJitType)) + if (HWIntrinsicInfo::IsMultiReg(intrinsic)) { - return nullptr; + assert(sizeBytes == 0); + } + else + { + assert(sizeBytes != 0); + + // We want to return early here for cases where retType was TYP_STRUCT as per method signature and + // rather than deferring the decision after getting the simdBaseJitType of arg. + if (!isSupportedBaseType(intrinsic, simdBaseJitType)) + { + return nullptr; + } + + retType = getSIMDTypeForSize(sizeBytes); } } @@ -1188,7 +1197,7 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic, } // This operation contains an implicit indirection - // it could point into the gloabal heap or + // it could point into the global heap or // it could throw a null reference exception. // retNode->gtFlags |= (GTF_GLOB_REF | GTF_EXCEPT); diff --git a/src/coreclr/jit/hwintrinsic.h b/src/coreclr/jit/hwintrinsic.h index 4551ed9e4e1ce1..9d2d1a0b2e4106 100644 --- a/src/coreclr/jit/hwintrinsic.h +++ b/src/coreclr/jit/hwintrinsic.h @@ -113,50 +113,52 @@ enum HWIntrinsicFlag : unsigned int // but may be table-driven in the back-end HW_Flag_SpecialImport = 0x100, + // The intrinsic returns result in multiple registers. + HW_Flag_MultiReg = 0x200, + // The below is for defining platform-specific flags #if defined(TARGET_XARCH) // Full range IMM intrinsic // - the immediate value is valid on the full range of imm8 (0-255) - HW_Flag_FullRangeIMM = 0x200, + HW_Flag_FullRangeIMM = 0x400, // Maybe IMM // the intrinsic has either imm or Vector overloads - HW_Flag_MaybeIMM = 0x400, + HW_Flag_MaybeIMM = 0x800, // Copy Upper bits // some SIMD scalar intrinsics need the semantics of copying upper bits from the source operand - HW_Flag_CopyUpperBits = 0x800, + HW_Flag_CopyUpperBits = 0x1000, // Maybe Memory Load/Store // - some intrinsics may have pointer overloads but without HW_Category_MemoryLoad/HW_Category_MemoryStore - HW_Flag_MaybeMemoryLoad = 0x1000, - HW_Flag_MaybeMemoryStore = 0x2000, + HW_Flag_MaybeMemoryLoad = 0x2000, + HW_Flag_MaybeMemoryStore = 0x4000, // No Read/Modify/Write Semantics // the intrinsic doesn't have read/modify/write semantics in two/three-operand form. - HW_Flag_NoRMWSemantics = 0x4000, + HW_Flag_NoRMWSemantics = 0x8000, // NoContainment // the intrinsic cannot be handled by containment, // all the intrinsic that have explicit memory load/store semantics should have this flag - HW_Flag_NoContainment = 0x8000, + HW_Flag_NoContainment = 0x10000 #elif defined(TARGET_ARM64) // The intrinsic has an immediate operand // - the value can be (and should be) encoded in a corresponding instruction when the operand value is constant - HW_Flag_HasImmediateOperand = 0x200, + HW_Flag_HasImmediateOperand = 0x400, // The intrinsic has read/modify/write semantics in multiple-operands form. - HW_Flag_HasRMWSemantics = 0x400, + HW_Flag_HasRMWSemantics = 0x800, // The intrinsic operates on the lower part of a SIMD register // - the upper part of the source registers are ignored // - the upper part of the destination register is zeroed - HW_Flag_SIMDScalar = 0x800, + HW_Flag_SIMDScalar = 0x1000, // The intrinsic supports some sort of containment analysis - HW_Flag_SupportsContainment = 0x1000 - + HW_Flag_SupportsContainment = 0x2000 #else #error Unsupported platform #endif @@ -718,6 +720,34 @@ struct HWIntrinsicInfo return (flags & HW_Flag_SpecialImport) != 0; } + static bool IsMultiReg(NamedIntrinsic id) + { + const HWIntrinsicFlag flags = lookupFlags(id); + return (flags & HW_Flag_MultiReg) != 0; + } + + static int GetMultiRegCount(NamedIntrinsic id) + { + assert(IsMultiReg(id)); + + switch (id) + { +#ifdef TARGET_ARM64 + // TODO-ARM64-NYI: Support hardware intrinsics operating on multiple contiguous registers. + case NI_AdvSimd_Arm64_LoadPairScalarVector64: + case NI_AdvSimd_Arm64_LoadPairScalarVector64NonTemporal: + case NI_AdvSimd_Arm64_LoadPairVector64: + case NI_AdvSimd_Arm64_LoadPairVector64NonTemporal: + case NI_AdvSimd_Arm64_LoadPairVector128: + case NI_AdvSimd_Arm64_LoadPairVector128NonTemporal: + return 2; +#endif + + default: + unreached(); + } + } + #ifdef TARGET_ARM64 static bool SIMDScalar(NamedIntrinsic id) { diff --git a/src/coreclr/jit/hwintrinsicarm64.cpp b/src/coreclr/jit/hwintrinsicarm64.cpp index 3e5c612236050a..f1ac37611c5f8b 100644 --- a/src/coreclr/jit/hwintrinsicarm64.cpp +++ b/src/coreclr/jit/hwintrinsicarm64.cpp @@ -1563,6 +1563,49 @@ GenTree* Compiler::impSpecialIntrinsic(NamedIntrinsic intrinsic, break; } + case NI_AdvSimd_Arm64_LoadPairScalarVector64: + case NI_AdvSimd_Arm64_LoadPairScalarVector64NonTemporal: + case NI_AdvSimd_Arm64_LoadPairVector128: + case NI_AdvSimd_Arm64_LoadPairVector128NonTemporal: + case NI_AdvSimd_Arm64_LoadPairVector64: + case NI_AdvSimd_Arm64_LoadPairVector64NonTemporal: + { + op1 = impPopStack().val; + + if (op1->OperIs(GT_CAST)) + { + // Although the API specifies a pointer, if what we have is a BYREF, that's what + // we really want, so throw away the cast. + if (op1->gtGetOp1()->TypeGet() == TYP_BYREF) + { + op1 = op1->gtGetOp1(); + } + } + + GenTree* loadIntrinsic = gtNewSimdHWIntrinsicNode(retType, op1, intrinsic, simdBaseJitType, simdSize); + // This operation contains an implicit indirection + // it could point into the global heap or + // it could throw a null reference exception. + // + loadIntrinsic->gtFlags |= (GTF_GLOB_REF | GTF_EXCEPT); + + assert(HWIntrinsicInfo::IsMultiReg(intrinsic)); + + const unsigned lclNum = lvaGrabTemp(true DEBUGARG("Return value temp for multireg intrinsic")); + impAssignTempGen(lclNum, loadIntrinsic, sig->retTypeSigClass, (unsigned)CHECK_SPILL_ALL); + + LclVarDsc* varDsc = lvaGetDesc(lclNum); + // The following is to exclude the fields of the local to have SSA. + varDsc->lvIsMultiRegRet = true; + + GenTreeLclVar* lclVar = gtNewLclvNode(lclNum, varDsc->lvType); + lclVar->SetDoNotCSE(); + lclVar->SetMultiReg(); + + retNode = lclVar; + break; + } + default: { return nullptr; diff --git a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp index 6dfe48047c094e..a2819f5dc7fa86 100644 --- a/src/coreclr/jit/hwintrinsiccodegenarm64.cpp +++ b/src/coreclr/jit/hwintrinsiccodegenarm64.cpp @@ -694,6 +694,18 @@ void CodeGen::genHWIntrinsic(GenTreeHWIntrinsic* node) } break; + case NI_AdvSimd_Arm64_LoadPairVector128: + case NI_AdvSimd_Arm64_LoadPairVector128NonTemporal: + case NI_AdvSimd_Arm64_LoadPairVector64: + case NI_AdvSimd_Arm64_LoadPairVector64NonTemporal: + GetEmitter()->emitIns_R_R_R(ins, emitSize, targetReg, node->GetOtherReg(), op1Reg); + break; + + case NI_AdvSimd_Arm64_LoadPairScalarVector64: + case NI_AdvSimd_Arm64_LoadPairScalarVector64NonTemporal: + GetEmitter()->emitIns_R_R_R(ins, emitTypeSize(intrin.baseType), targetReg, node->GetOtherReg(), op1Reg); + break; + case NI_AdvSimd_Store: GetEmitter()->emitIns_R_R(ins, emitSize, op2Reg, op1Reg, opt); break; diff --git a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp index 10c8dcaedb197a..c2c453362f02fb 100644 --- a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp +++ b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp @@ -44,9 +44,19 @@ static void assertIsContainableHWIntrinsicOp(Lowering* lowering, // spillage and for isUsedFromMemory contained nodes, in the case where the register allocator decided to not // allocate a register in the first place). - GenTree* node = containedNode; - bool supportsRegOptional = false; - bool isContainable = lowering->TryGetContainableHWIntrinsicOp(containingNode, &node, &supportsRegOptional); + GenTree* node = containedNode; + + // Now that we are doing full memory containment safety checks, we can't properly check nodes that are not + // linked into an evaluation tree, like the special nodes we create in genHWIntrinsic. + // So, just say those are ok. + // + if (node->gtNext == nullptr) + { + return; + } + + bool supportsRegOptional = false; + bool isContainable = lowering->TryGetContainableHWIntrinsicOp(containingNode, &node, &supportsRegOptional); assert(isContainable || supportsRegOptional); assert(node == containedNode); diff --git a/src/coreclr/jit/hwintrinsiclistarm64.h b/src/coreclr/jit/hwintrinsiclistarm64.h index 7d4582db97616a..2a1e989e98b2b1 100644 --- a/src/coreclr/jit/hwintrinsiclistarm64.h +++ b/src/coreclr/jit/hwintrinsiclistarm64.h @@ -548,6 +548,12 @@ HARDWARE_INTRINSIC(AdvSimd_Arm64, FusedMultiplySubtractBySelectedScalar, HARDWARE_INTRINSIC(AdvSimd_Arm64, FusedMultiplySubtractScalarBySelectedScalar, 8, 4, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_fmls, INS_fmls}, HW_Category_SIMDByIndexedElement, HW_Flag_HasImmediateOperand|HW_Flag_HasRMWSemantics|HW_Flag_SIMDScalar) HARDWARE_INTRINSIC(AdvSimd_Arm64, InsertSelectedScalar, -1, 4, {INS_ins, INS_ins, INS_ins, INS_ins, INS_ins, INS_ins, INS_ins, INS_ins, INS_ins, INS_ins}, HW_Category_SIMD, HW_Flag_HasImmediateOperand|HW_Flag_HasRMWSemantics|HW_Flag_NoJmpTableIMM|HW_Flag_SIMDScalar|HW_Flag_SpecialCodeGen) HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadAndReplicateToVector128, 16, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_ld1r, INS_ld1r, INS_invalid, INS_ld1r}, HW_Category_MemoryLoad, HW_Flag_NoFlag) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairScalarVector64, 8, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_ldp, INS_ldp, INS_invalid, INS_invalid, INS_ldp, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairScalarVector64NonTemporal, 8, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_ldnp, INS_ldnp, INS_invalid, INS_invalid, INS_ldnp, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairVector64, 8, 1, {INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairVector64NonTemporal, 8, 1, {INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairVector128, 16, 1, {INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp, INS_ldp}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) +HARDWARE_INTRINSIC(AdvSimd_Arm64, LoadPairVector128NonTemporal, 16, 1, {INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp, INS_ldnp}, HW_Category_MemoryLoad, HW_Flag_BaseTypeFromFirstArg|HW_Flag_MultiReg|HW_Flag_SpecialCodeGen|HW_Flag_SpecialImport) HARDWARE_INTRINSIC(AdvSimd_Arm64, Max, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_fmax}, HW_Category_SIMD, HW_Flag_Commutative) HARDWARE_INTRINSIC(AdvSimd_Arm64, MaxAcross, -1, 1, {INS_smaxv, INS_umaxv, INS_smaxv, INS_umaxv, INS_smaxv, INS_umaxv, INS_invalid, INS_invalid, INS_fmaxv, INS_invalid}, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg) HARDWARE_INTRINSIC(AdvSimd_Arm64, MaxNumber, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_fmaxnm}, HW_Category_SIMD, HW_Flag_Commutative) diff --git a/src/coreclr/jit/importer.cpp b/src/coreclr/jit/importer.cpp index ac361b08e8eb5f..9e00910d5d85ef 100644 --- a/src/coreclr/jit/importer.cpp +++ b/src/coreclr/jit/importer.cpp @@ -1257,8 +1257,29 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr, usedDI = impCurStmtDI; } - assert(src->OperIs(GT_LCL_VAR, GT_LCL_FLD, GT_FIELD, GT_IND, GT_OBJ, GT_CALL, GT_MKREFANY, GT_RET_EXPR, GT_COMMA) || - (src->TypeGet() != TYP_STRUCT && src->OperIsSimdOrHWintrinsic())); +#ifdef DEBUG +#ifdef FEATURE_HW_INTRINSICS + if (src->OperIs(GT_HWINTRINSIC)) + { + const GenTreeHWIntrinsic* intrinsic = src->AsHWIntrinsic(); + + if (HWIntrinsicInfo::IsMultiReg(intrinsic->GetHWIntrinsicId())) + { + assert(src->TypeGet() == TYP_STRUCT); + } + else + { + assert(varTypeIsSIMD(src)); + } + } + else +#endif // FEATURE_HW_INTRINSICS + { + assert(src->OperIs(GT_LCL_VAR, GT_LCL_FLD, GT_FIELD, GT_IND, GT_OBJ, GT_CALL, GT_MKREFANY, GT_RET_EXPR, + GT_COMMA) || + ((src->TypeGet() != TYP_STRUCT) && src->OperIsSIMD())); + } +#endif // DEBUG var_types asgType = src->TypeGet(); @@ -1827,7 +1848,9 @@ GenTree* Compiler::impNormStructVal(GenTree* structVal, #endif // FEATURE_SIMD #ifdef FEATURE_HW_INTRINSICS case GT_HWINTRINSIC: - assert(varTypeIsSIMD(structVal) && (structVal->gtType == structType)); + assert(structVal->gtType == structType); + assert(varTypeIsSIMD(structVal) || + HWIntrinsicInfo::IsMultiReg(structVal->AsHWIntrinsic()->GetHWIntrinsicId())); break; #endif @@ -4424,6 +4447,7 @@ GenTree* Compiler::impIntrinsic(GenTree* newobjThis, case NI_System_Math_Sqrt: case NI_System_Math_Tan: case NI_System_Math_Tanh: + case NI_System_Math_Truncate: { retNode = impMathIntrinsic(method, sig, callType, ni, tailCall); break; @@ -5070,6 +5094,10 @@ NamedIntrinsic Compiler::lookupNamedIntrinsic(CORINFO_METHOD_HANDLE method) { result = NI_System_Math_Tanh; } + else if (strcmp(methodName, "Truncate") == 0) + { + result = NI_System_Math_Truncate; + } } else if (strcmp(className, "GC") == 0) { @@ -20425,7 +20453,7 @@ bool Compiler::IsTargetIntrinsic(NamedIntrinsic intrinsicName) switch (intrinsicName) { // AMD64/x86 has SSE2 instructions to directly compute sqrt/abs and SSE4.1 - // instructions to directly compute round/ceiling/floor. + // instructions to directly compute round/ceiling/floor/truncate. case NI_System_Math_Abs: case NI_System_Math_Sqrt: @@ -20433,6 +20461,7 @@ bool Compiler::IsTargetIntrinsic(NamedIntrinsic intrinsicName) case NI_System_Math_Ceiling: case NI_System_Math_Floor: + case NI_System_Math_Truncate: case NI_System_Math_Round: return compOpportunisticallyDependsOn(InstructionSet_SSE41); @@ -20448,6 +20477,7 @@ bool Compiler::IsTargetIntrinsic(NamedIntrinsic intrinsicName) case NI_System_Math_Abs: case NI_System_Math_Ceiling: case NI_System_Math_Floor: + case NI_System_Math_Truncate: case NI_System_Math_Round: case NI_System_Math_Sqrt: return true; @@ -20521,6 +20551,7 @@ bool Compiler::IsMathIntrinsic(NamedIntrinsic intrinsicName) case NI_System_Math_Sqrt: case NI_System_Math_Tan: case NI_System_Math_Tanh: + case NI_System_Math_Truncate: { assert((intrinsicName > NI_SYSTEM_MATH_START) && (intrinsicName < NI_SYSTEM_MATH_END)); return true; diff --git a/src/coreclr/jit/jitconfigvalues.h b/src/coreclr/jit/jitconfigvalues.h index b53588a6937217..355bbe1f9f3ee3 100644 --- a/src/coreclr/jit/jitconfigvalues.h +++ b/src/coreclr/jit/jitconfigvalues.h @@ -503,6 +503,14 @@ CONFIG_INTEGER(JitNoteFailedExactDevirtualization, W("JitNoteFailedExactDevirtua CONFIG_INTEGER(JitExpandCallsEarly, W("JitExpandCallsEarly"), 1) // Expand Call targets early (in the global morph // phase) +// Force the generation of CFG checks +CONFIG_INTEGER(JitForceControlFlowGuard, W("JitForceControlFlowGuard"), 0); +// JitCFGUseDispatcher values: +// 0: Never use dispatcher +// 1: Use dispatcher on all platforms that support it +// 2: Default behavior, depends on platform (yes on x64, no on arm64) +CONFIG_INTEGER(JitCFGUseDispatcher, W("JitCFGUseDispatcher"), 2) + #if defined(DEBUG) // JitFunctionFile: Name of a file that contains a list of functions. If the currently compiled function is in the // file, certain other JIT config variables will be active. If the currently compiled function is not in the file, diff --git a/src/coreclr/jit/jitee.h b/src/coreclr/jit/jitee.h index 27149c824348aa..58eddca01b61c6 100644 --- a/src/coreclr/jit/jitee.h +++ b/src/coreclr/jit/jitee.h @@ -17,7 +17,7 @@ class JitFlags JIT_FLAG_DEBUG_EnC = 3, // We are in Edit-n-Continue mode JIT_FLAG_DEBUG_INFO = 4, // generate line and local-var info JIT_FLAG_MIN_OPT = 5, // disable all jit optimizations (not necesarily debuggable code) - JIT_FLAG_UNUSED1 = 6, + JIT_FLAG_ENABLE_CFG = 6, // generate CFG enabled code JIT_FLAG_MCJIT_BACKGROUND = 7, // Calling from multicore JIT background thread, do not call JitComplete #if defined(TARGET_X86) @@ -174,6 +174,7 @@ class JitFlags FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_DEBUG_EnC, JIT_FLAG_DEBUG_EnC); FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_DEBUG_INFO, JIT_FLAG_DEBUG_INFO); FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_MIN_OPT, JIT_FLAG_MIN_OPT); + FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_ENABLE_CFG, JIT_FLAG_ENABLE_CFG); FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_MCJIT_BACKGROUND, JIT_FLAG_MCJIT_BACKGROUND); #if defined(TARGET_X86) diff --git a/src/coreclr/jit/lclvars.cpp b/src/coreclr/jit/lclvars.cpp index a1cfc61822216f..40fc77c92d8628 100644 --- a/src/coreclr/jit/lclvars.cpp +++ b/src/coreclr/jit/lclvars.cpp @@ -2584,6 +2584,10 @@ void Compiler::lvaSetVarDoNotEnregister(unsigned varNum DEBUGARG(DoNotEnregister JITDUMP("Used for SP check\n"); break; + case DoNotEnregisterReason::SimdUserForcesDep: + JITDUMP("Promoted struct used by a SIMD/HWI node\n"); + break; + default: unreached(); break; diff --git a/src/coreclr/jit/lir.cpp b/src/coreclr/jit/lir.cpp index 2f5b762214ef17..93344854c5b1a4 100644 --- a/src/coreclr/jit/lir.cpp +++ b/src/coreclr/jit/lir.cpp @@ -1415,12 +1415,12 @@ class CheckLclVarSemanticsHelper { for (GenTree* operand : node->Operands()) { - if (!operand->IsLIR()) + // ARGPLACE nodes are not represented in the LIR sequence. Ignore them. + if (operand->OperIs(GT_ARGPLACE)) { - // ARGPLACE nodes are not represented in the LIR sequence. Ignore them. - assert(operand->OperIs(GT_ARGPLACE)); continue; } + if (operand->isContained()) { UseNodeOperands(operand); @@ -1524,7 +1524,7 @@ bool LIR::Range::CheckLIR(Compiler* compiler, bool checkUnusedValues) const for (Iterator node = begin(), end = this->end(); node != end; prev = *node, ++node) { // Verify that the node is allowed in LIR. - assert(node->IsLIR()); + assert(node->OperIsLIR()); // Some nodes should never be marked unused, as they must be contained in the backend. // These may be marked as unused during dead code elimination traversal, but they *must* be subsequently diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index 2697a9892dca3b..df818b39cf72d0 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -42,6 +42,22 @@ void Lowering::MakeSrcContained(GenTree* parentNode, GenTree* childNode) const assert(childNode->canBeContained()); childNode->SetContained(); assert(childNode->isContained()); + +#ifdef DEBUG + if (IsContainableMemoryOp(childNode)) + { + // Verify caller of this method checked safety. + // + const bool isSafeToContainMem = IsSafeToContainMem(parentNode, childNode); + + if (!isSafeToContainMem) + { + JITDUMP("** Unsafe mem containment of [%06u] in [%06u}, comp->dspTreeID(childNode), " + "comp->dspTreeID(parentNode)\n"); + assert(isSafeToContainMem); + } + } +#endif } //------------------------------------------------------------------------ @@ -79,8 +95,15 @@ bool Lowering::CheckImmedAndMakeContained(GenTree* parentNode, GenTree* childNod // Return value: // true if it is safe to make childNode a contained memory operand. // -bool Lowering::IsSafeToContainMem(GenTree* parentNode, GenTree* childNode) +bool Lowering::IsSafeToContainMem(GenTree* parentNode, GenTree* childNode) const { + // Quick early-out for unary cases + // + if (childNode->gtNext == parentNode) + { + return true; + } + m_scratchSideEffects.Clear(); m_scratchSideEffects.AddNode(comp, childNode); @@ -96,6 +119,40 @@ bool Lowering::IsSafeToContainMem(GenTree* parentNode, GenTree* childNode) return true; } +//------------------------------------------------------------------------ +// IsSafeToContainMem: Checks for conflicts between childNode and grandParentNode +// and returns 'true' iff memory operand childNode can be contained in ancestorNode +// +// Arguments: +// grandParentNode - any non-leaf node +// parentNode - parent of `childNode` and an input to `grandParentNode` +// childNode - some node that is an input to `parentNode` +// +// Return value: +// true if it is safe to make childNode a contained memory operand. +// +bool Lowering::IsSafeToContainMem(GenTree* grandparentNode, GenTree* parentNode, GenTree* childNode) const +{ + m_scratchSideEffects.Clear(); + m_scratchSideEffects.AddNode(comp, childNode); + + for (GenTree* node = childNode->gtNext; node != grandparentNode; node = node->gtNext) + { + if (node == parentNode) + { + continue; + } + + const bool strict = true; + if (m_scratchSideEffects.InterferesWith(comp, node, strict)) + { + return false; + } + } + + return true; +} + //------------------------------------------------------------------------ // LowerNode: this is the main entry point for Lowering. // @@ -1583,7 +1640,7 @@ void Lowering::LowerCall(GenTree* node) call->ClearOtherRegs(); LowerArgsForCall(call); - // note that everything generated from this point on runs AFTER the outgoing args are placed + // note that everything generated from this point might run AFTER the outgoing args are placed GenTree* controlExpr = nullptr; bool callWasExpandedEarly = false; @@ -1640,6 +1697,10 @@ void Lowering::LowerCall(GenTree* node) } } + // Indirect calls should always go through GenTreeCall::gtCallAddr and + // should never have a control expression as well. + assert((call->gtCallType != CT_INDIRECT) || (controlExpr == nullptr)); + if (call->IsTailCallViaJitHelper()) { // Either controlExpr or gtCallAddr must contain real call target. @@ -1662,40 +1723,17 @@ void Lowering::LowerCall(GenTree* node) JITDUMP("results of lowering call:\n"); DISPRANGE(controlExprRange); - GenTree* insertionPoint = call; - if (!call->IsTailCallViaJitHelper()) - { - // The controlExpr should go before the gtCallCookie and the gtCallAddr, if they exist - // - // TODO-LIR: find out what's really required here, as this is currently a tree order - // dependency. - if (call->gtCallType == CT_INDIRECT) - { - bool isClosed = false; - if (call->gtCallCookie != nullptr) - { -#ifdef DEBUG - GenTree* firstCallAddrNode = BlockRange().GetTreeRange(call->gtCallAddr, &isClosed).FirstNode(); - assert(isClosed); - assert(call->gtCallCookie->Precedes(firstCallAddrNode)); -#endif // DEBUG - - insertionPoint = BlockRange().GetTreeRange(call->gtCallCookie, &isClosed).FirstNode(); - assert(isClosed); - } - else if (call->gtCallAddr != nullptr) - { - insertionPoint = BlockRange().GetTreeRange(call->gtCallAddr, &isClosed).FirstNode(); - assert(isClosed); - } - } - } - ContainCheckRange(controlExprRange); - BlockRange().InsertBefore(insertionPoint, std::move(controlExprRange)); + BlockRange().InsertBefore(call, std::move(controlExprRange)); call->gtControlExpr = controlExpr; } + + if (comp->opts.IsCFGEnabled()) + { + LowerCFGCall(call); + } + if (call->IsFastTailCall()) { // Lower fast tail call can introduce new temps to set up args correctly for Callee. @@ -2249,6 +2287,295 @@ GenTree* Lowering::LowerTailCallViaJitHelper(GenTreeCall* call, GenTree* callTar return result; } +//------------------------------------------------------------------------ +// LowerCFGCall: Potentially lower a call to use control-flow guard. This +// expands indirect calls into either a validate+call sequence or to a dispatch +// helper taking the original target in a special register. +// +// Arguments: +// call - The call node +// +void Lowering::LowerCFGCall(GenTreeCall* call) +{ + assert(!call->IsHelperCall(comp, CORINFO_HELP_DISPATCH_INDIRECT_CALL)); + if (call->IsHelperCall(comp, CORINFO_HELP_VALIDATE_INDIRECT_CALL)) + { + return; + } + + GenTree* callTarget = call->gtCallType == CT_INDIRECT ? call->gtCallAddr : call->gtControlExpr; + if ((callTarget == nullptr) || callTarget->IsIntegralConst()) + { + // This is a direct call, no CFG check is necessary. + return; + } + + CFGCallKind cfgKind = call->GetCFGCallKind(); + + switch (cfgKind) + { + case CFGCallKind::ValidateAndCall: + { + // To safely apply CFG we need to generate a very specific pattern: + // in particular, it is a safety issue to allow the JIT to reload + // the call target from memory between calling + // CORINFO_HELP_VALIDATE_INDIRECT_CALL and the target. This is + // something that would easily occur in debug codegen if we + // produced high-level IR. Instead we will use a GT_PHYSREG node + // to get the target back from the register that contains the target. + // + // Additionally, the validator does not preserve all arg registers, + // so we have to move all GT_PUTARG_REG nodes that would otherwise + // be trashed ahead. The JIT also has an internal invariant that + // once GT_PUTARG nodes start to appear in LIR, the call is coming + // up. To avoid breaking this invariant we move _all_ GT_PUTARG + // nodes (in particular, GC info reporting relies on this). + // + // To sum up, we end up transforming + // + // ta... = + // tb... = + // tc = callTarget + // GT_CALL tc, ta..., tb... + // + // into + // + // ta... = (without GT_PUTARG_* nodes) + // tb = callTarget + // GT_CALL CORINFO_HELP_VALIDATE_INDIRECT_CALL, tb + // tc = GT_PHYSREG REG_VALIDATE_INDIRECT_CALL_ADDR (preserved by helper) + // td = + // GT_CALL tb, ta..., td.. + // + + GenTree* regNode = PhysReg(REG_VALIDATE_INDIRECT_CALL_ADDR, TYP_I_IMPL); + LIR::Use useOfTar; + bool gotUse = BlockRange().TryGetUse(callTarget, &useOfTar); + assert(gotUse); + useOfTar.ReplaceWith(regNode); + + GenTree* targetPlaceholder = comp->gtNewZeroConNode(callTarget->TypeGet()); + // Add the call to the validator. Use a placeholder for the target while we + // morph, sequence and lower, to avoid redoing that for the actual target. + GenTreeCall::Use* args = comp->gtNewCallArgs(targetPlaceholder); + GenTreeCall* validate = comp->gtNewHelperCallNode(CORINFO_HELP_VALIDATE_INDIRECT_CALL, TYP_VOID, args); + + comp->fgMorphTree(validate); + + LIR::Range validateRange = LIR::SeqTree(comp, validate); + GenTree* validateFirst = validateRange.FirstNode(); + GenTree* validateLast = validateRange.LastNode(); + // Insert the validator with the call target before the late args. + BlockRange().InsertBefore(call, std::move(validateRange)); + + // Swap out the target + gotUse = BlockRange().TryGetUse(targetPlaceholder, &useOfTar); + assert(gotUse); + useOfTar.ReplaceWith(callTarget); + targetPlaceholder->SetUnusedValue(); + + LowerRange(validateFirst, validateLast); + + // Insert the PHYSREG node that we must load right after validation. + BlockRange().InsertAfter(validate, regNode); + LowerNode(regNode); + + // Finally move all GT_PUTARG_* nodes + for (GenTreeCall::Use& use : call->Args()) + { + GenTree* node = use.GetNode(); + if (!node->IsValue()) + { + // Non-value nodes in early args are setup nodes for late args. + continue; + } + + assert(node->OperIsPutArg() || node->OperIsFieldList()); + MoveCFGCallArg(call, node); + } + + for (GenTreeCall::Use& use : call->LateArgs()) + { + GenTree* node = use.GetNode(); + assert(node->OperIsPutArg() || node->OperIsFieldList()); + MoveCFGCallArg(call, node); + } + break; + } + case CFGCallKind::Dispatch: + { +#ifdef REG_DISPATCH_INDIRECT_CALL_ADDR + // Now insert the call target as an extra argument. + // + // First append the early placeholder arg + GenTreeCall::Use** earlySlot = &call->gtCallArgs; + unsigned int index = call->gtCallThisArg != nullptr ? 1 : 0; + while (*earlySlot != nullptr) + { + earlySlot = &(*earlySlot)->NextRef(); + index++; + } + + assert(index == call->fgArgInfo->ArgCount()); + GenTree* placeHolder = comp->gtNewArgPlaceHolderNode(callTarget->TypeGet(), NO_CLASS_HANDLE); + placeHolder->gtFlags |= GTF_LATE_ARG; + *earlySlot = comp->gtNewCallArgs(placeHolder); + + // Append the late actual arg + GenTreeCall::Use** lateSlot = &call->gtCallLateArgs; + unsigned int lateIndex = 0; + while (*lateSlot != nullptr) + { + lateSlot = &(*lateSlot)->NextRef(); + lateIndex++; + } + + *lateSlot = comp->gtNewCallArgs(callTarget); + + // Add an entry into the arg info + regNumber regNum = REG_DISPATCH_INDIRECT_CALL_ADDR; + unsigned numRegs = 1; + unsigned byteSize = TARGET_POINTER_SIZE; + unsigned byteAlignment = TARGET_POINTER_SIZE; + bool isStruct = false; + bool isFloatHfa = false; + bool isVararg = false; + + fgArgTabEntry* entry = + call->fgArgInfo->AddRegArg(index, placeHolder, *earlySlot, regNum, numRegs, byteSize, byteAlignment, + isStruct, isFloatHfa, + isVararg UNIX_AMD64_ABI_ONLY_ARG(REG_STK) UNIX_AMD64_ABI_ONLY_ARG(0) + UNIX_AMD64_ABI_ONLY_ARG(0) UNIX_AMD64_ABI_ONLY_ARG(nullptr)); + + entry->lateUse = *lateSlot; + entry->SetLateArgInx(lateIndex); + + // Lower the newly added args now that call is updated + LowerArg(call, &(*earlySlot)->NodeRef()); + LowerArg(call, &(*lateSlot)->NodeRef()); + + // Finally update the call to be a helper call + call->gtCallType = CT_HELPER; + call->gtCallMethHnd = comp->eeFindHelper(CORINFO_HELP_DISPATCH_INDIRECT_CALL); + call->gtFlags &= ~GTF_CALL_VIRT_KIND_MASK; +#ifdef FEATURE_READYTORUN + call->gtEntryPoint.addr = nullptr; + call->gtEntryPoint.accessType = IAT_VALUE; +#endif + + // Now relower the call target + call->gtControlExpr = LowerDirectCall(call); + + if (call->gtControlExpr != nullptr) + { + LIR::Range dispatchControlExprRange = LIR::SeqTree(comp, call->gtControlExpr); + + ContainCheckRange(dispatchControlExprRange); + BlockRange().InsertBefore(call, std::move(dispatchControlExprRange)); + } +#else + assert(!"Unexpected CFGCallKind::Dispatch for platform without dispatcher"); +#endif + break; + } + default: + unreached(); + } +} + +//------------------------------------------------------------------------ +// IsInvariantInRange: Check if a node is invariant in the specified range. In +// other words, can 'node' be moved to right before 'endExclusive' without its +// computation changing values? +// +// Arguments: +// node - The node. +// endExclusive - The exclusive end of the range to check invariance for. +// +bool Lowering::IsInvariantInRange(GenTree* node, GenTree* endExclusive) +{ + assert(node->Precedes(endExclusive)); + + if (node->IsInvariant()) + { + return true; + } + + if (!node->IsValue()) + { + return false; + } + + if (node->OperIsLocal()) + { + GenTreeLclVarCommon* lcl = node->AsLclVarCommon(); + LclVarDsc* desc = comp->lvaGetDesc(lcl); + if (desc->IsAddressExposed()) + { + return false; + } + + // Currently, non-address exposed locals have the property that their + // use occurs at the user, so no further interference check is + // necessary. + return true; + } + + return false; +} + +//------------------------------------------------------------------------ +// MoveCFGCallArg: Given a call that will be CFG transformed using the +// validate+call scheme, and an argument GT_PUTARG_* or GT_FIELD_LIST node, +// move that node right before the call. +// +// Arguments: +// call - The call that is being CFG transformed +// node - The argument node +// +// Remarks: +// We can always move the GT_PUTARG_* node further ahead as the side-effects +// of these nodes are handled by LSRA. However, the operands of these nodes +// are not always safe to move further ahead; for invariant operands, we +// move them ahead as well to shorten the lifetime of these values. +// +void Lowering::MoveCFGCallArg(GenTreeCall* call, GenTree* node) +{ + assert(node->OperIsPutArg() || node->OperIsFieldList()); + + if (node->OperIsFieldList()) + { + JITDUMP("Node is a GT_FIELD_LIST; moving all operands\n"); + for (GenTreeFieldList::Use& operand : node->AsFieldList()->Uses()) + { + assert(operand.GetNode()->OperIsPutArg()); + MoveCFGCallArg(call, operand.GetNode()); + } + } + else + { + GenTree* operand = node->AsOp()->gtGetOp1(); + JITDUMP("Checking if we can move operand of GT_PUTARG_* node:\n"); + DISPTREE(operand); + if (((operand->gtFlags & GTF_ALL_EFFECT) == 0) && IsInvariantInRange(operand, call)) + { + JITDUMP("...yes, moving to after validator call\n"); + BlockRange().Remove(operand); + BlockRange().InsertBefore(call, operand); + } + else + { + JITDUMP("...no, operand has side effects or is not invariant\n"); + } + } + + JITDUMP("Moving\n"); + DISPTREE(node); + JITDUMP("\n"); + BlockRange().Remove(node); + BlockRange().InsertBefore(call, node); +} + #ifndef TARGET_64BIT //------------------------------------------------------------------------ // Lowering::DecomposeLongCompare: Decomposes a TYP_LONG compare node. @@ -3636,10 +3963,6 @@ GenTree* Lowering::LowerDirectCall(GenTreeCall* call) { noway_assert(call->gtCallType == CT_USER_FUNC || call->gtCallType == CT_HELPER); - // Don't support tail calling helper methods. - // But we might encounter tail calls dispatched via JIT helper appear as a tail call to helper. - noway_assert(!call->IsTailCall() || call->IsTailCallViaJitHelper() || call->gtCallType == CT_USER_FUNC); - // Non-virtual direct/indirect calls: Work out if the address of the // call is known at JIT time. If not it is either an indirect call // or the address must be accessed via an single/double indirection. @@ -4794,7 +5117,7 @@ GenTree* Lowering::LowerVirtualStubCall(GenTreeCall* call) // Skip inserting the indirection node to load the address that is already // computed in the VSD stub arg register as a hidden parameter. Instead during the // codegen, just load the call target from there. - shouldOptimizeVirtualStubCall = true; + shouldOptimizeVirtualStubCall = !comp->opts.IsCFGEnabled(); #endif if (!shouldOptimizeVirtualStubCall) @@ -6742,7 +7065,16 @@ void Lowering::ContainCheckBitCast(GenTree* node) void Lowering::LowerStoreIndirCommon(GenTreeStoreInd* ind) { assert(ind->TypeGet() != TYP_STRUCT); - TryCreateAddrMode(ind->Addr(), true, ind); + +#if defined(TARGET_ARM64) + // Verify containment safety before creating an LEA that must be contained. + // + const bool isContainable = IsSafeToContainMem(ind, ind->Addr()); +#else + const bool isContainable = true; +#endif + TryCreateAddrMode(ind->Addr(), isContainable, ind); + if (!comp->codeGen->gcInfo.gcIsWriteBarrierStoreIndNode(ind)) { if (varTypeIsFloating(ind) && ind->Data()->IsCnsFltOrDbl()) @@ -6762,7 +7094,7 @@ void Lowering::LowerStoreIndirCommon(GenTreeStoreInd* ind) #if defined(TARGET_XARCH) || defined(TARGET_ARM) bool shouldSwitchToInteger = true; #else // TARGET_ARM64 - bool shouldSwitchToInteger = !data->IsCnsNonZeroFltOrDbl(); + bool shouldSwitchToInteger = !data->IsCnsNonZeroFltOrDbl(); #endif if (shouldSwitchToInteger) @@ -6810,7 +7142,17 @@ void Lowering::LowerIndir(GenTreeIndir* ind) // TODO-Cleanup: We're passing isContainable = true but ContainCheckIndir rejects // address containment in some cases so we end up creating trivial (reg + offfset) // or (reg + reg) LEAs that are not necessary. - TryCreateAddrMode(ind->Addr(), true, ind); + CLANG_FORMAT_COMMENT_ANCHOR; + +#if defined(TARGET_ARM64) + // Verify containment safety before creating an LEA that must be contained. + // + const bool isContainable = IsSafeToContainMem(ind, ind->Addr()); +#else + const bool isContainable = true; +#endif + + TryCreateAddrMode(ind->Addr(), isContainable, ind); ContainCheckIndir(ind); if (ind->OperIs(GT_NULLCHECK) || ind->IsUnusedValue()) @@ -6851,15 +7193,18 @@ void Lowering::TransformUnusedIndirection(GenTreeIndir* ind, Compiler* comp, Bas // - On ARM64, always use GT_NULLCHECK for a dead indirection. // - On ARM, always use GT_IND. // - On XARCH, use GT_IND if we have a contained address, and GT_NULLCHECK otherwise. - // In all cases, change the type to TYP_INT. + // In all cases we try to preserve the original type and never make it wider to avoid AVEs. + // For structs we conservatively lower it to BYTE. For 8-byte primitives we lower it to TYP_INT + // on XARCH as an optimization. // assert(ind->OperIs(GT_NULLCHECK, GT_IND, GT_BLK, GT_OBJ)); - ind->gtType = TYP_INT; + ind->ChangeType(comp->gtTypeForNullCheck(ind)); + #ifdef TARGET_ARM64 bool useNullCheck = true; #elif TARGET_ARM - bool useNullCheck = false; + bool useNullCheck = false; #else // TARGET_XARCH bool useNullCheck = !ind->Addr()->isContained(); #endif // !TARGET_XARCH diff --git a/src/coreclr/jit/lower.h b/src/coreclr/jit/lower.h index b6a6c178f7e544..7f2d0ff999408b 100644 --- a/src/coreclr/jit/lower.h +++ b/src/coreclr/jit/lower.h @@ -119,10 +119,14 @@ class Lowering final : public Phase void LowerBlock(BasicBlock* block); GenTree* LowerNode(GenTree* node); + bool IsInvariantInRange(GenTree* node, GenTree* endExclusive); + // ------------------------------ // Call Lowering // ------------------------------ void LowerCall(GenTree* call); + void LowerCFGCall(GenTreeCall* call); + void MoveCFGCallArg(GenTreeCall* call, GenTree* node); #ifndef TARGET_64BIT GenTree* DecomposeLongCompare(GenTree* cmp); #endif @@ -560,14 +564,17 @@ class Lowering final : public Phase bool IsContainableImmed(GenTree* parentNode, GenTree* childNode) const; // Return true if 'node' is a containable memory op. - bool IsContainableMemoryOp(GenTree* node) + bool IsContainableMemoryOp(GenTree* node) const { return m_lsra->isContainableMemoryOp(node); } #ifdef FEATURE_HW_INTRINSICS // Tries to get a containable node for a given HWIntrinsic - bool TryGetContainableHWIntrinsicOp(GenTreeHWIntrinsic* containingNode, GenTree** pNode, bool* supportsRegOptional); + bool TryGetContainableHWIntrinsicOp(GenTreeHWIntrinsic* containingNode, + GenTree** pNode, + bool* supportsRegOptional, + GenTreeHWIntrinsic* transparentParentNode = nullptr); #endif // FEATURE_HW_INTRINSICS static void TransformUnusedIndirection(GenTreeIndir* ind, Compiler* comp, BasicBlock* block); @@ -585,7 +592,10 @@ class Lowering final : public Phase // Checks for memory conflicts in the instructions between childNode and parentNode, and returns true if childNode // can be contained. - bool IsSafeToContainMem(GenTree* parentNode, GenTree* childNode); + bool IsSafeToContainMem(GenTree* parentNode, GenTree* childNode) const; + + // Similar to above, but allows bypassing a "transparent" parent. + bool IsSafeToContainMem(GenTree* grandparentNode, GenTree* parentNode, GenTree* childNode) const; inline LIR::Range& BlockRange() const { @@ -609,10 +619,10 @@ class Lowering final : public Phase } } - LinearScan* m_lsra; - unsigned vtableCallTemp; // local variable we use as a temp for vtable calls - SideEffectSet m_scratchSideEffects; // SideEffectSet used for IsSafeToContainMem and isRMWIndirCandidate - BasicBlock* m_block; + LinearScan* m_lsra; + unsigned vtableCallTemp; // local variable we use as a temp for vtable calls + mutable SideEffectSet m_scratchSideEffects; // SideEffectSet used for IsSafeToContainMem and isRMWIndirCandidate + BasicBlock* m_block; }; #endif // _LOWER_H_ diff --git a/src/coreclr/jit/lowerxarch.cpp b/src/coreclr/jit/lowerxarch.cpp index 266d642014fd02..46b48c4a8a9393 100644 --- a/src/coreclr/jit/lowerxarch.cpp +++ b/src/coreclr/jit/lowerxarch.cpp @@ -2512,7 +2512,7 @@ void Lowering::LowerHWIntrinsicGetElement(GenTreeHWIntrinsic* node) assert(0 <= imm8 && imm8 < count); - if (IsContainableMemoryOp(op1)) + if (IsContainableMemoryOp(op1) && IsSafeToContainMem(node, op1)) { // We will specially handle GetElement in codegen when op1 is already in memory op2->AsIntCon()->SetIconValue(imm8); @@ -4723,7 +4723,7 @@ void Lowering::ContainCheckDivOrMod(GenTreeOp* node) #endif // divisor can be an r/m, but the memory indirection must be of the same size as the divide - if (IsContainableMemoryOp(divisor) && (divisor->TypeGet() == node->TypeGet())) + if (IsContainableMemoryOp(divisor) && (divisor->TypeGet() == node->TypeGet()) && IsSafeToContainMem(node, divisor)) { MakeSrcContained(node, divisor); } @@ -4853,7 +4853,7 @@ void Lowering::ContainCheckCast(GenTreeCast* node) // U8 -> R8 conversion requires that the operand be in a register. if (srcType != TYP_ULONG) { - if (IsContainableMemoryOp(castOp) || castOp->IsCnsNonZeroFltOrDbl()) + if ((IsContainableMemoryOp(castOp) && IsSafeToContainMem(node, castOp)) || castOp->IsCnsNonZeroFltOrDbl()) { MakeSrcContained(node, castOp); } @@ -4949,7 +4949,7 @@ void Lowering::ContainCheckCompare(GenTreeOp* cmp) // we can treat the MemoryOp as contained. if (op1Type == op2Type) { - if (IsContainableMemoryOp(op1)) + if (IsContainableMemoryOp(op1) && IsSafeToContainMem(cmp, op1)) { MakeSrcContained(cmp, op1); } @@ -5250,7 +5250,7 @@ void Lowering::ContainCheckBoundsChk(GenTreeBoundsChk* node) if (node->GetIndex()->TypeGet() == node->GetArrayLength()->TypeGet()) { - if (IsContainableMemoryOp(other)) + if (IsContainableMemoryOp(other) && IsSafeToContainMem(node, other)) { MakeSrcContained(node, other); } @@ -5275,11 +5275,12 @@ void Lowering::ContainCheckIntrinsic(GenTreeOp* node) NamedIntrinsic intrinsicName = node->AsIntrinsic()->gtIntrinsicName; if ((intrinsicName == NI_System_Math_Ceiling) || (intrinsicName == NI_System_Math_Floor) || - (intrinsicName == NI_System_Math_Round) || (intrinsicName == NI_System_Math_Sqrt)) + (intrinsicName == NI_System_Math_Truncate) || (intrinsicName == NI_System_Math_Round) || + (intrinsicName == NI_System_Math_Sqrt)) { GenTree* op1 = node->gtGetOp1(); - if (IsContainableMemoryOp(op1) || op1->IsCnsNonZeroFltOrDbl()) + if ((IsContainableMemoryOp(op1) && IsSafeToContainMem(node, op1)) || op1->IsCnsNonZeroFltOrDbl()) { MakeSrcContained(node, op1); } @@ -5365,6 +5366,7 @@ void Lowering::ContainCheckSIMD(GenTreeSIMD* simdNode) // [In/Out] pNode - The node to check and potentially replace with the containable node // [Out] supportsRegOptional - On return, this will be true if 'containingNode' supports regOptional operands // otherwise, false. +// [In] transparentParentNode - optional "transparent" intrinsic parent like CreateScalarUnsafe // // Return Value: // true if 'node' is a containable by containingNode; otherwise, false. @@ -5377,7 +5379,8 @@ void Lowering::ContainCheckSIMD(GenTreeSIMD* simdNode) // bool Lowering::TryGetContainableHWIntrinsicOp(GenTreeHWIntrinsic* containingNode, GenTree** pNode, - bool* supportsRegOptional) + bool* supportsRegOptional, + GenTreeHWIntrinsic* transparentParentNode) { assert(containingNode != nullptr); assert((pNode != nullptr) && (*pNode != nullptr)); @@ -5800,7 +5803,32 @@ bool Lowering::TryGetContainableHWIntrinsicOp(GenTreeHWIntrinsic* containingNode if (!node->OperIsHWIntrinsic()) { - return supportsGeneralLoads && (IsContainableMemoryOp(node) || node->IsCnsNonZeroFltOrDbl()); + bool canBeContained = false; + + if (supportsGeneralLoads) + { + if (IsContainableMemoryOp(node)) + { + // Code motion safety checks + // + if (transparentParentNode != nullptr) + { + canBeContained = IsSafeToContainMem(containingNode, transparentParentNode, node); + } + else + { + canBeContained = IsSafeToContainMem(containingNode, node); + } + } + else if (node->IsCnsNonZeroFltOrDbl()) + { + // Always safe. + // + canBeContained = true; + } + } + + return canBeContained; } // TODO-XArch: Update this to be table driven, if possible. @@ -5821,7 +5849,7 @@ bool Lowering::TryGetContainableHWIntrinsicOp(GenTreeHWIntrinsic* containingNode GenTree* op1 = hwintrinsic->Op(1); bool op1SupportsRegOptional = false; - if (!TryGetContainableHWIntrinsicOp(containingNode, &op1, &op1SupportsRegOptional)) + if (!TryGetContainableHWIntrinsicOp(containingNode, &op1, &op1SupportsRegOptional, hwintrinsic)) { return false; } @@ -6287,7 +6315,7 @@ void Lowering::ContainCheckHWIntrinsic(GenTreeHWIntrinsic* node) MakeSrcContained(node, op2); } - if (IsContainableMemoryOp(op1)) + if (IsContainableMemoryOp(op1) && IsSafeToContainMem(node, op1)) { MakeSrcContained(node, op1); diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp index 88f137ab65764d..0971bef4f1fb4c 100644 --- a/src/coreclr/jit/lsra.cpp +++ b/src/coreclr/jit/lsra.cpp @@ -152,13 +152,14 @@ void lsraAssignRegToTree(GenTree* tree, regNumber reg, unsigned regIdx) putArg->SetRegNumByIdx(reg, regIdx); } #endif // FEATURE_ARG_SPLIT -#if defined(TARGET_XARCH) && defined(FEATURE_HW_INTRINSICS) +#ifdef FEATURE_HW_INTRINSICS else if (tree->OperIs(GT_HWINTRINSIC)) { assert(regIdx == 1); + // TODO-ARM64-NYI: Support hardware intrinsics operating on multiple contiguous registers. tree->AsHWIntrinsic()->SetOtherReg(reg); } -#endif +#endif // FEATURE_HW_INTRINSICS else if (tree->OperIs(GT_LCL_VAR, GT_STORE_LCL_VAR)) { tree->AsLclVar()->SetRegNumByIdx(reg, regIdx); @@ -9400,7 +9401,7 @@ void LinearScan::DumpOperandDefs( { assert(operand != nullptr); assert(operandString != nullptr); - if (!operand->IsLIR()) + if (operand->OperIs(GT_ARGPLACE)) { return; } diff --git a/src/coreclr/jit/lsra.h b/src/coreclr/jit/lsra.h index 052c3f93999a3c..6a273cef7499f0 100644 --- a/src/coreclr/jit/lsra.h +++ b/src/coreclr/jit/lsra.h @@ -1876,7 +1876,7 @@ class LinearScan : public LinearScanInterface #endif // FEATURE_SIMD #ifdef FEATURE_HW_INTRINSICS - int BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree); + int BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree, int* pDstCount); #endif // FEATURE_HW_INTRINSICS int BuildPutArgStk(GenTreePutArgStk* argNode); diff --git a/src/coreclr/jit/lsraarm64.cpp b/src/coreclr/jit/lsraarm64.cpp index f18099f4f573e5..9a232480109b17 100644 --- a/src/coreclr/jit/lsraarm64.cpp +++ b/src/coreclr/jit/lsraarm64.cpp @@ -329,6 +329,7 @@ int LinearScan::BuildNode(GenTree* tree) noway_assert((tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Abs) || (tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Ceiling) || (tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Floor) || + (tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Truncate) || (tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Round) || (tree->AsIntrinsic()->gtIntrinsicName == NI_System_Math_Sqrt)); @@ -352,7 +353,7 @@ int LinearScan::BuildNode(GenTree* tree) #ifdef FEATURE_HW_INTRINSICS case GT_HWINTRINSIC: - srcCount = BuildHWIntrinsic(tree->AsHWIntrinsic()); + srcCount = BuildHWIntrinsic(tree->AsHWIntrinsic(), &dstCount); break; #endif // FEATURE_HW_INTRINSICS @@ -543,14 +544,14 @@ int LinearScan::BuildNode(GenTree* tree) { assert(dstCount == 1); - // Need a variable number of temp regs (see genLclHeap() in codegenamd64.cpp): + // Need a variable number of temp regs (see genLclHeap() in codegenarm64.cpp): // Here '-' means don't care. // // Size? Init Memory? # temp regs // 0 - 0 - // const and <=6 ptr words - 0 + // const and <=UnrollLimit - 0 // const and 6 ptr words Yes 0 + // >UnrollLimit Yes 0 // Non-const Yes 0 // Non-const No 2 // @@ -569,12 +570,9 @@ int LinearScan::BuildNode(GenTree* tree) // Note: The Gentree node is not updated here as it is cheap to recompute stack aligned size. // This should also help in debugging as we can examine the original size specified with // localloc. - sizeVal = AlignUp(sizeVal, STACK_ALIGN); - size_t stpCount = sizeVal / (REGSIZE_BYTES * 2); + sizeVal = AlignUp(sizeVal, STACK_ALIGN); - // For small allocations up to 4 'stp' instructions (i.e. 16 to 64 bytes of localloc) - // - if (stpCount <= 4) + if (sizeVal <= LCLHEAP_UNROLL_LIMIT) { // Need no internal registers } @@ -890,16 +888,28 @@ int LinearScan::BuildSIMD(GenTreeSIMD* simdTree) // // Arguments: // tree - The GT_HWINTRINSIC node of interest +// pDstCount - OUT parameter - the number of registers defined for the given node // // Return Value: // The number of sources consumed by this node. // -int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) +int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree, int* pDstCount) { + assert(pDstCount != nullptr); + const HWIntrinsic intrin(intrinsicTree); int srcCount = 0; - int dstCount = intrinsicTree->IsValue() ? 1 : 0; + int dstCount = 0; + + if (HWIntrinsicInfo::IsMultiReg(intrin.id)) + { + dstCount = intrinsicTree->GetMultiRegCount(); + } + else if (intrinsicTree->IsValue()) + { + dstCount = 1; + } const bool hasImmediateOperand = HWIntrinsicInfo::HasImmediateOperand(intrin.id); @@ -1142,15 +1152,21 @@ int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) buildInternalRegisterUses(); - if (dstCount == 1) + if ((dstCount == 1) || (dstCount == 2)) { BuildDef(intrinsicTree); + + if (dstCount == 2) + { + BuildDef(intrinsicTree, RBM_NONE, 1); + } } else { assert(dstCount == 0); } + *pDstCount = dstCount; return srcCount; } #endif diff --git a/src/coreclr/jit/lsrabuild.cpp b/src/coreclr/jit/lsrabuild.cpp index d58f1996091fae..2c2de88dd74da4 100644 --- a/src/coreclr/jit/lsrabuild.cpp +++ b/src/coreclr/jit/lsrabuild.cpp @@ -859,7 +859,7 @@ regMaskTP LinearScan::getKillSetForModDiv(GenTreeOp* node) // regMaskTP LinearScan::getKillSetForCall(GenTreeCall* call) { - regMaskTP killMask = RBM_NONE; + regMaskTP killMask = RBM_CALLEE_TRASH; #ifdef TARGET_X86 if (compiler->compFloatingPointUsed) { @@ -873,38 +873,30 @@ regMaskTP LinearScan::getKillSetForCall(GenTreeCall* call) } } #endif // TARGET_X86 -#if defined(TARGET_X86) || defined(TARGET_ARM) if (call->IsHelperCall()) { CorInfoHelpFunc helpFunc = compiler->eeGetHelperNum(call->gtCallMethHnd); killMask = compiler->compHelperCallKillSet(helpFunc); } - else -#endif // defined(TARGET_X86) || defined(TARGET_ARM) + + // if there is no FP used, we can ignore the FP kills + if (!compiler->compFloatingPointUsed) { - // if there is no FP used, we can ignore the FP kills - if (compiler->compFloatingPointUsed) - { - killMask = RBM_CALLEE_TRASH; - } - else - { - killMask = RBM_INT_CALLEE_TRASH; - } + killMask &= ~RBM_FLT_CALLEE_TRASH; + } #ifdef TARGET_ARM - if (call->IsVirtualStub()) - { - killMask |= compiler->virtualStubParamInfo->GetRegMask(); - } + if (call->IsVirtualStub()) + { + killMask |= compiler->virtualStubParamInfo->GetRegMask(); + } #else // !TARGET_ARM - // Verify that the special virtual stub call registers are in the kill mask. - // We don't just add them unconditionally to the killMask because for most architectures - // they are already in the RBM_CALLEE_TRASH set, - // and we don't want to introduce extra checks and calls in this hot function. - assert(!call->IsVirtualStub() || ((killMask & compiler->virtualStubParamInfo->GetRegMask()) == - compiler->virtualStubParamInfo->GetRegMask())); + // Verify that the special virtual stub call registers are in the kill mask. + // We don't just add them unconditionally to the killMask because for most architectures + // they are already in the RBM_CALLEE_TRASH set, + // and we don't want to introduce extra checks and calls in this hot function. + assert(!call->IsVirtualStub() || + ((killMask & compiler->virtualStubParamInfo->GetRegMask()) == compiler->virtualStubParamInfo->GetRegMask())); #endif // !TARGET_ARM - } return killMask; } @@ -1619,12 +1611,12 @@ void LinearScan::buildUpperVectorRestoreRefPosition(Interval* lclVarInterval, Ls int LinearScan::ComputeOperandDstCount(GenTree* operand) { // GT_ARGPLACE is the only non-LIR node that is currently in the trees at this stage, though - // note that it is not in the linear order. It seems best to check for !IsLIR() rather than - // GT_ARGPLACE directly, since it's that characteristic that makes it irrelevant for this method. - if (!operand->IsLIR()) + // note that it is not in the linear order. + if (operand->OperIs(GT_ARGPLACE)) { return 0; } + if (operand->isContained()) { int dstCount = 0; diff --git a/src/coreclr/jit/lsraxarch.cpp b/src/coreclr/jit/lsraxarch.cpp index e679f00b3bca33..715c325eacf8de 100644 --- a/src/coreclr/jit/lsraxarch.cpp +++ b/src/coreclr/jit/lsraxarch.cpp @@ -339,7 +339,7 @@ int LinearScan::BuildNode(GenTree* tree) #ifdef FEATURE_HW_INTRINSICS case GT_HWINTRINSIC: - srcCount = BuildHWIntrinsic(tree->AsHWIntrinsic()); + srcCount = BuildHWIntrinsic(tree->AsHWIntrinsic(), &dstCount); break; #endif // FEATURE_HW_INTRINSICS @@ -610,6 +610,15 @@ int LinearScan::BuildNode(GenTree* tree) case GT_NULLCHECK: { assert(dstCount == 0); +#ifdef TARGET_X86 + if (varTypeIsByte(tree)) + { + // on X86 we have to use byte-able regs for byte-wide loads + BuildUse(tree->gtGetOp1(), RBM_BYTE_REGS); + srcCount = 1; + break; + } +#endif // If we have a contained address on a nullcheck, we transform it to // an unused GT_IND, since we require a target register. BuildUse(tree->gtGetOp1()); @@ -1817,6 +1826,7 @@ int LinearScan::BuildIntrinsic(GenTree* tree) case NI_System_Math_Ceiling: case NI_System_Math_Floor: + case NI_System_Math_Truncate: case NI_System_Math_Round: case NI_System_Math_Sqrt: break; @@ -1983,12 +1993,15 @@ int LinearScan::BuildSIMD(GenTreeSIMD* simdTree) // // Arguments: // tree - The GT_HWINTRINSIC node of interest +// pDstCount - OUT parameter - the number of registers defined for the given node // // Return Value: // The number of sources consumed by this node. // -int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) +int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree, int* pDstCount) { + assert(pDstCount != nullptr); + NamedIntrinsic intrinsicId = intrinsicTree->GetHWIntrinsicId(); var_types baseType = intrinsicTree->GetSimdBaseType(); size_t numArgs = intrinsicTree->GetOperandCount(); @@ -2454,6 +2467,7 @@ int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) assert(dstCount == 0); } + *pDstCount = dstCount; return srcCount; } #endif diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp index b3e9e8fa82977f..414b82f5480c55 100644 --- a/src/coreclr/jit/morph.cpp +++ b/src/coreclr/jit/morph.cpp @@ -590,6 +590,8 @@ const char* getNonStandardArgKindName(NonStandardArgKind kind) return "VirtualStubCell"; case NonStandardArgKind::R2RIndirectionCell: return "R2RIndirectionCell"; + case NonStandardArgKind::ValidateIndirectCallTarget: + return "ValidateIndirectCallTarget"; default: unreached(); } @@ -859,6 +861,14 @@ fgArgTabEntry* fgArgInfo::AddRegArg(unsigned argNum, curArgTabEntry->SetByteOffset(0); hasRegArgs = true; + if (argCount >= argTableSize) + { + fgArgTabEntry** oldTable = argTable; + argTable = new (compiler, CMK_fgArgInfoPtrArr) fgArgTabEntry*[argCount + 1]; + memcpy(argTable, oldTable, argCount * sizeof(fgArgTabEntry*)); + argTableSize++; + } + AddArg(curArgTabEntry); return curArgTabEntry; } @@ -1432,6 +1442,29 @@ void fgArgInfo::ArgsComplete() } } + // When CFG is enabled and this is a delegate call or vtable call we must + // compute the call target before all late args. However this will + // effectively null-check 'this', which should happen only after all + // arguments are evaluated. Thus we must evaluate all args with side + // effects to a temp. + if (compiler->opts.IsCFGEnabled() && (callTree->IsVirtualVtable() || callTree->IsDelegateInvoke())) + { + // Always evaluate 'this' to temp. + argTable[0]->needTmp = true; + needsTemps = true; + + for (unsigned curInx = 1; curInx < argCount; curInx++) + { + fgArgTabEntry* curArgTabEntry = argTable[curInx]; + GenTree* arg = curArgTabEntry->GetNode(); + if ((arg->gtFlags & GTF_ALL_EFFECT) != 0) + { + curArgTabEntry->needTmp = true; + needsTemps = true; + } + } + } + argsComplete = true; } @@ -1882,7 +1915,7 @@ void fgArgInfo::EvalArgsToTemps() if (curArgTabEntry->needTmp) { - if (curArgTabEntry->isTmp == true) + if (curArgTabEntry->isTmp) { // Create a copy of the temp to go into the late argument list defArg = compiler->fgMakeTmpArgNode(curArgTabEntry); @@ -2131,7 +2164,8 @@ void fgArgInfo::EvalArgsToTemps() } //------------------------------------------------------------------------------ -// fgMakeMultiUse : If the node is a local, clone it, otherwise insert a comma form temp +// fgMakeMultiUse : If the node is an unaliased local or constant clone it, +// otherwise insert a comma form temp // // Arguments: // ppTree - a pointer to the child node we will be replacing with the comma expression that @@ -2139,18 +2173,32 @@ void fgArgInfo::EvalArgsToTemps() // // Return Value: // A fresh GT_LCL_VAR node referencing the temp which has not been used - +// +// Notes: +// Caller must ensure that if the node is an unaliased local, the second use this +// creates will be evaluated before the local can be reassigned. +// +// Can be safely called in morph preorder, before GTF_GLOB_REF is reliable. +// GenTree* Compiler::fgMakeMultiUse(GenTree** pOp) { - GenTree* tree = *pOp; - if (tree->IsLocal()) + GenTree* const tree = *pOp; + + if (tree->IsInvariant()) { return gtClone(tree); } - else + else if (tree->IsLocal()) { - return fgInsertCommaFormTemp(pOp); + // Can't rely on GTF_GLOB_REF here. + // + if (!lvaGetDesc(tree->AsLclVarCommon())->IsAddressExposed()) + { + return gtClone(tree); + } } + + return fgInsertCommaFormTemp(pOp); } //------------------------------------------------------------------------------ @@ -2566,6 +2614,14 @@ void Compiler::fgInitArgInfo(GenTreeCall* call) } #endif + if ((REG_VALIDATE_INDIRECT_CALL_ADDR != REG_ARG_0) && call->IsHelperCall(this, CORINFO_HELP_VALIDATE_INDIRECT_CALL)) + { + assert(call->gtCallArgs != nullptr); + GenTreeCall::Use* args = call->gtCallArgs; + GenTree* tar = args->GetNode(); + nonStandardArgs.Add(tar, REG_VALIDATE_INDIRECT_CALL_ADDR, NonStandardArgKind::ValidateIndirectCallTarget); + } + // Allocate the fgArgInfo for the call node; // call->fgArgInfo = new (this, CMK_Unknown) fgArgInfo(this, call, numArgs); @@ -10429,6 +10485,17 @@ GenTree* Compiler::fgMorphBlockOperand(GenTree* tree, var_types asgType, unsigne assert(blockWidth == info.compCompHnd->getClassSize(call->gtRetClsHnd)); #endif } +#ifdef TARGET_ARM64 + else if (effectiveVal->OperIsHWIntrinsic()) + { + needsIndirection = false; +#ifdef DEBUG + GenTreeHWIntrinsic* intrinsic = effectiveVal->AsHWIntrinsic(); + assert(intrinsic->TypeGet() == TYP_STRUCT); + assert(HWIntrinsicInfo::IsMultiReg(intrinsic->GetHWIntrinsicId())); +#endif + } +#endif // TARGET_ARM64 if (lclNode != nullptr) { @@ -11421,23 +11488,6 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) return fgMorphIntoHelperCall(tree, helper, gtNewCallArgs(op1, op2)); case GT_RETURN: - // normalize small integer return values - if (fgGlobalMorph && varTypeIsSmall(info.compRetType) && (op1 != nullptr) && !op1->TypeIs(TYP_VOID) && - fgCastNeeded(op1, info.compRetType)) - { - // Small-typed return values are normalized by the callee - op1 = gtNewCastNode(TYP_INT, op1, false, info.compRetType); - - // Propagate GTF_COLON_COND - op1->gtFlags |= (tree->gtFlags & GTF_COLON_COND); - - tree->AsOp()->gtOp1 = fgMorphTree(op1); - - // Propagate side effect flags - tree->SetAllEffectsFlags(tree->AsOp()->gtGetOp1()); - - return tree; - } if (!tree->TypeIs(TYP_VOID)) { if (op1->OperIs(GT_OBJ, GT_BLK, GT_IND)) @@ -11471,6 +11521,24 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) } } } + + // normalize small integer return values + if (fgGlobalMorph && varTypeIsSmall(info.compRetType) && (op1 != nullptr) && !op1->TypeIs(TYP_VOID) && + fgCastNeeded(op1, info.compRetType)) + { + // Small-typed return values are normalized by the callee + op1 = gtNewCastNode(TYP_INT, op1, false, info.compRetType); + + // Propagate GTF_COLON_COND + op1->gtFlags |= (tree->gtFlags & GTF_COLON_COND); + + tree->AsOp()->gtOp1 = fgMorphTree(op1); + + // Propagate side effect flags + tree->SetAllEffectsFlags(tree->AsOp()->gtGetOp1()); + + return tree; + } break; case GT_EQ: @@ -12591,28 +12659,20 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac) lclFld->SetLclOffs(lclFld->GetLclOffs() + static_cast(ival1)); lclFld->SetFieldSeq(GetFieldSeqStore()->Append(lclFld->GetFieldSeq(), fieldSeq)); } - else // we have a GT_LCL_VAR + else // We have a GT_LCL_VAR. { assert(temp->OperGet() == GT_LCL_VAR); - temp->ChangeOper(GT_LCL_FLD); // Note that this typically makes the gtFieldSeq "NotAField", - // unless there is a zero filed offset associated with 'temp'. + temp->ChangeOper(GT_LCL_FLD); // Note that this makes the gtFieldSeq "NotAField". lclFld = temp->AsLclFld(); lclFld->SetLclOffs(static_cast(ival1)); - if (lclFld->GetFieldSeq() == FieldSeqStore::NotAField()) - { - if (fieldSeq != nullptr) - { - // If it does represent a field, note that. - lclFld->SetFieldSeq(fieldSeq); - } - } - else + if (fieldSeq != nullptr) { - // Append 'fieldSeq' to the existing one - lclFld->SetFieldSeq(GetFieldSeqStore()->Append(lclFld->GetFieldSeq(), fieldSeq)); + // If it does represent a field, note that. + lclFld->SetFieldSeq(fieldSeq); } } + temp->gtType = tree->gtType; foldAndReturnTemp = true; } @@ -14295,11 +14355,26 @@ GenTree* Compiler::fgMorphMultiOp(GenTreeMultiOp* multiOp) for (GenTree** use : multiOp->UseEdges()) { *use = fgMorphTree(*use); - multiOp->gtFlags |= ((*use)->gtFlags & GTF_ALL_EFFECT); - if (dontCseConstArguments && (*use)->OperIsConst()) + GenTree* operand = *use; + multiOp->gtFlags |= (operand->gtFlags & GTF_ALL_EFFECT); + + if (dontCseConstArguments && operand->OperIsConst()) + { + operand->SetDoNotCSE(); + } + + // Promoted structs after morph must be in one of two states: + // a) Fully eliminated from the IR (independent promotion) OR only be + // used by "special" nodes (e. g. LHS of ASGs for multi-reg structs). + // b) Marked as do-not-enregister (dependent promotion). + // + // So here we preserve this invariant and mark any promoted structs as do-not-enreg. + // + if (operand->OperIs(GT_LCL_VAR) && lvaGetDesc(operand->AsLclVar())->lvPromoted) { - (*use)->SetDoNotCSE(); + lvaSetVarDoNotEnregister(operand->AsLclVar()->GetLclNum() + DEBUGARG(DoNotEnregisterReason::SimdUserForcesDep)); } } @@ -14392,13 +14467,10 @@ GenTree* Compiler::fgMorphMultiOp(GenTreeMultiOp* multiOp) // division will be used, in that case this transform allows CSE to // eliminate the redundant div from code like "x = a / 3; y = a % 3;". // -// This method will produce the above expression in 'a' and 'b' are -// leaf nodes, otherwise, if any of them is not a leaf it will spill -// its value into a temporary variable, an example: -// (x * 2 - 1) % (y + 1) -> t1 - (t2 * ( comma(t1 = x * 2 - 1, t1) / comma(t2 = y + 1, t2) ) ) -// GenTree* Compiler::fgMorphModToSubMulDiv(GenTreeOp* tree) { + JITDUMP("\nMorphing MOD/UMOD [%06u] to Sub/Mul/Div\n", dspTreeID(tree)); + if (tree->OperGet() == GT_MOD) { tree->SetOper(GT_DIV); @@ -14412,29 +14484,15 @@ GenTree* Compiler::fgMorphModToSubMulDiv(GenTreeOp* tree) noway_assert(!"Illegal gtOper in fgMorphModToSubMulDiv"); } - var_types type = tree->gtType; - GenTree* denominator = tree->gtOp2; - GenTree* numerator = tree->gtOp1; - - if (!numerator->OperIsLeaf()) - { - numerator = fgMakeMultiUse(&tree->gtOp1); - } + var_types type = tree->gtType; - if (!denominator->OperIsLeaf()) - { - denominator = fgMakeMultiUse(&tree->gtOp2); - } + GenTree* const copyOfNumeratorValue = fgMakeMultiUse(&tree->gtOp1); + GenTree* const copyOfDenominatorValue = fgMakeMultiUse(&tree->gtOp2); + GenTree* const mul = gtNewOperNode(GT_MUL, type, tree, copyOfDenominatorValue); + GenTree* const sub = gtNewOperNode(GT_SUB, type, copyOfNumeratorValue, mul); - // The numerator and denominator may have been assigned to temps, in which case - // their defining assignments are in the current tree. Therefore, we need to - // set the execuction order accordingly on the nodes we create. - // That is, the "mul" will be evaluated in "normal" order, and the "sub" must - // be set to be evaluated in reverse order. + // Ensure "sub" does not evaluate "copyOfNumeratorValue" before it is defined by "mul". // - GenTree* mul = gtNewOperNode(GT_MUL, type, tree, gtCloneExpr(denominator)); - assert(!mul->IsReverseOp()); - GenTree* sub = gtNewOperNode(GT_SUB, type, gtCloneExpr(numerator), mul); sub->gtFlags |= GTF_REVERSE_OPS; #ifdef DEBUG @@ -15217,20 +15275,25 @@ DONE:; #endif } -/***************************************************************************** - * - * Check and fold blocks of type BBJ_COND and BBJ_SWITCH on constants - * Returns true if we modified the flow graph - */ - -bool Compiler::fgFoldConditional(BasicBlock* block) +//------------------------------------------------------------------------ +// fgFoldConditional: try and fold conditionals and optimize BBJ_COND or +// BBJ_SWITCH blocks. +// +// Argumetns: +// block - block to examine +// +// Returns: +// FoldResult indicating what changes were made, if any +// +Compiler::FoldResult Compiler::fgFoldConditional(BasicBlock* block) { - bool result = false; + FoldResult result = FoldResult::FOLD_DID_NOTHING; // We don't want to make any code unreachable + // if (opts.OptimizationDisabled()) { - return false; + return result; } if (block->bbJumpKind == BBJ_COND) @@ -15245,17 +15308,14 @@ bool Compiler::fgFoldConditional(BasicBlock* block) { noway_assert(fgRemoveRestOfBlock); - /* Unconditional throw - transform the basic block into a BBJ_THROW */ + // Unconditional throw - transform the basic block into a BBJ_THROW + // fgConvertBBToThrowBB(block); + result = FoldResult::FOLD_CHANGED_CONTROL_FLOW; + JITDUMP("\nConditional folded at " FMT_BB "\n", block->bbNum); + JITDUMP(FMT_BB " becomes a BBJ_THROW\n", block->bbNum); -#ifdef DEBUG - if (verbose) - { - printf("\nConditional folded at " FMT_BB "\n", block->bbNum); - printf(FMT_BB " becomes a BBJ_THROW\n", block->bbNum); - } -#endif - goto DONE_COND; + return result; } noway_assert(lastStmt->GetRootNode()->gtOper == GT_JTRUE); @@ -15281,11 +15341,13 @@ bool Compiler::fgFoldConditional(BasicBlock* block) // Preserve any side effects assert(condTree->OperIs(GT_COMMA)); lastStmt->SetRootNode(condTree); + result = FoldResult::FOLD_ALTERED_LAST_STMT; } else { // no side effects, remove the jump entirely fgRemoveStmt(block, lastStmt); + result = FoldResult::FOLD_REMOVED_LAST_STMT; } // block is a BBJ_COND that we are folding the conditional for. // bTaken is the path that will always be taken from block. @@ -15453,8 +15515,6 @@ bool Compiler::fgFoldConditional(BasicBlock* block) } } } - DONE_COND: - result = true; } } else if (block->bbJumpKind == BBJ_SWITCH) @@ -15469,17 +15529,14 @@ bool Compiler::fgFoldConditional(BasicBlock* block) { noway_assert(fgRemoveRestOfBlock); - /* Unconditional throw - transform the basic block into a BBJ_THROW */ + // Unconditional throw - transform the basic block into a BBJ_THROW + // fgConvertBBToThrowBB(block); + result = FoldResult::FOLD_CHANGED_CONTROL_FLOW; + JITDUMP("\nConditional folded at " FMT_BB "\n", block->bbNum); + JITDUMP(FMT_BB " becomes a BBJ_THROW\n", block->bbNum); -#ifdef DEBUG - if (verbose) - { - printf("\nConditional folded at " FMT_BB "\n", block->bbNum); - printf(FMT_BB " becomes a BBJ_THROW\n", block->bbNum); - } -#endif - goto DONE_SWITCH; + return result; } noway_assert(lastStmt->GetRootNode()->gtOper == GT_SWITCH); @@ -15504,11 +15561,13 @@ bool Compiler::fgFoldConditional(BasicBlock* block) // Preserve any side effects assert(condTree->OperIs(GT_COMMA)); lastStmt->SetRootNode(condTree); + result = FoldResult::FOLD_ALTERED_LAST_STMT; } else { // no side effects, remove the switch entirely fgRemoveStmt(block, lastStmt); + result = FoldResult::FOLD_REMOVED_LAST_STMT; } /* modify the flow graph */ @@ -15553,6 +15612,9 @@ bool Compiler::fgFoldConditional(BasicBlock* block) fgRemoveRefPred(curJump, block); } } + + assert(foundVal); + #ifdef DEBUG if (verbose) { @@ -15566,8 +15628,6 @@ bool Compiler::fgFoldConditional(BasicBlock* block) printf("\n"); } #endif - DONE_SWITCH: - result = true; } } return result; @@ -15653,13 +15713,8 @@ bool Compiler::fgMorphBlockStmt(BasicBlock* block, Statement* stmt DEBUGARG(cons // Or this is the last statement of a conditional branch that was just folded? if (!removedStmt && (stmt->GetNextStmt() == nullptr) && !fgRemoveRestOfBlock) { - if (fgFoldConditional(block)) - { - if (block->bbJumpKind != BBJ_THROW) - { - removedStmt = true; - } - } + FoldResult const fr = fgFoldConditional(block); + removedStmt = (fr == FoldResult::FOLD_REMOVED_LAST_STMT); } if (!removedStmt) @@ -15861,7 +15916,7 @@ void Compiler::fgMorphStmts(BasicBlock* block) /* Check if this block ends with a conditional branch that can be folded */ - if (fgFoldConditional(block)) + if (fgFoldConditional(block) != FoldResult::FOLD_DID_NOTHING) { continue; } @@ -17806,15 +17861,6 @@ void Compiler::fgAddFieldSeqForZeroOffset(GenTree* addr, FieldSeqNode* fieldSeqZ fieldSeqRecorded = true; break; - case GT_LCL_FLD: - { - GenTreeLclFld* lclFld = addr->AsLclFld(); - fieldSeqUpdate = GetFieldSeqStore()->Append(lclFld->GetFieldSeq(), fieldSeqZero); - lclFld->SetFieldSeq(fieldSeqUpdate); - fieldSeqRecorded = true; - break; - } - case GT_ADDR: if (addr->AsOp()->gtOp1->OperGet() == GT_LCL_FLD) { diff --git a/src/coreclr/jit/morphblock.cpp b/src/coreclr/jit/morphblock.cpp index d725923478433e..8f20520568b5ca 100644 --- a/src/coreclr/jit/morphblock.cpp +++ b/src/coreclr/jit/morphblock.cpp @@ -57,6 +57,7 @@ class MorphInitBlockHelper OneAsgBlock, StructBlock, SkipCallSrc, + SkipMultiRegIntrinsicSrc, Nop }; @@ -635,6 +636,16 @@ void MorphCopyBlockHelper::PrepareSrc() // void MorphCopyBlockHelper::TrySpecialCases() { +#ifdef FEATURE_HW_INTRINSICS + if (m_src->OperIsHWIntrinsic() && HWIntrinsicInfo::IsMultiReg(m_src->AsHWIntrinsic()->GetHWIntrinsicId())) + { + assert(m_src->IsMultiRegNode()); + JITDUMP("Not morphing a multireg intrinsic\n"); + m_transformationDecision = BlockTransformation::SkipMultiRegIntrinsicSrc; + m_result = m_asg; + } +#endif // FEATURE_HW_INTRINSICS + #if FEATURE_MULTIREG_RET // If this is a multi-reg return, we will not do any morphing of this node. if (m_src->IsMultiRegCall()) diff --git a/src/coreclr/jit/namedintrinsiclist.h b/src/coreclr/jit/namedintrinsiclist.h index 68ea721ae48180..d864c3f7baeda9 100644 --- a/src/coreclr/jit/namedintrinsiclist.h +++ b/src/coreclr/jit/namedintrinsiclist.h @@ -43,6 +43,7 @@ enum NamedIntrinsic : unsigned short NI_System_Math_Sqrt, NI_System_Math_Tan, NI_System_Math_Tanh, + NI_System_Math_Truncate, NI_SYSTEM_MATH_END, NI_System_Collections_Generic_Comparer_get_Default, diff --git a/src/coreclr/jit/rationalize.cpp b/src/coreclr/jit/rationalize.cpp index 72c1591c6d4251..5eacf657ad8b7b 100644 --- a/src/coreclr/jit/rationalize.cpp +++ b/src/coreclr/jit/rationalize.cpp @@ -803,8 +803,8 @@ Compiler::fgWalkResult Rationalizer::RewriteNode(GenTree** useEdge, Compiler::Ge #endif // FEATURE_HW_INTRINSICS default: - // These nodes should not be present in HIR. - assert(!node->OperIs(GT_CMP, GT_SETCC, GT_JCC, GT_JCMP, GT_LOCKADD)); + // Check that we don't have nodes not allowed in HIR here. + assert((node->DebugOperKind() & DBK_NOTHIR) == 0); break; } diff --git a/src/coreclr/jit/sideeffects.cpp b/src/coreclr/jit/sideeffects.cpp index fe6a8a7d6064c5..a5acc9935e0f9a 100644 --- a/src/coreclr/jit/sideeffects.cpp +++ b/src/coreclr/jit/sideeffects.cpp @@ -164,10 +164,18 @@ AliasSet::NodeInfo::NodeInfo(Compiler* compiler, GenTree* node) isWrite = true; node = node->gtGetOp1(); } - else if (node->OperIsStore()) + else if (node->OperIsStore() || node->OperIs(GT_MEMORYBARRIER)) { isWrite = true; } +#ifdef FEATURE_HW_INTRINSICS + else if (node->OperIsHWIntrinsic() && node->AsHWIntrinsic()->OperIsMemoryStore()) + { + isWrite = true; + } +#endif // FEATURE_HW_INTRINSICS + + assert(isWrite || !node->OperRequiresAsgFlag()); // `node` is the location being accessed. Determine whether or not it is a memory or local variable access, and if // it is the latter, get the number of the lclVar. diff --git a/src/coreclr/jit/sideeffects.h b/src/coreclr/jit/sideeffects.h index e7ffdb0a7311b8..9f28e5fe419d42 100644 --- a/src/coreclr/jit/sideeffects.h +++ b/src/coreclr/jit/sideeffects.h @@ -121,7 +121,18 @@ class AliasSet final inline bool WritesAnyLocation() const { - return (m_flags & (ALIAS_WRITES_ADDRESSABLE_LOCATION | ALIAS_WRITES_LCL_VAR)) != 0; + if ((m_flags & ALIAS_WRITES_ADDRESSABLE_LOCATION) != 0) + { + return true; + } + + if ((m_flags & ALIAS_WRITES_LCL_VAR) != 0) + { + LclVarDsc* const varDsc = m_compiler->lvaGetDesc(LclNum()); + return varDsc->IsAlwaysAliveInMemory(); + } + + return false; } }; diff --git a/src/coreclr/jit/targetamd64.h b/src/coreclr/jit/targetamd64.h index 77df2d8547355b..50ced88dcb88a3 100644 --- a/src/coreclr/jit/targetamd64.h +++ b/src/coreclr/jit/targetamd64.h @@ -390,6 +390,10 @@ // The registers trashed by the CORINFO_HELP_INIT_PINVOKE_FRAME helper. #define RBM_INIT_PINVOKE_FRAME_TRASH RBM_CALLEE_TRASH + #define RBM_VALIDATE_INDIRECT_CALL_TRASH (RBM_INT_CALLEE_TRASH & ~(RBM_R10 | RBM_RCX)) + #define REG_VALIDATE_INDIRECT_CALL_ADDR REG_RCX + #define REG_DISPATCH_INDIRECT_CALL_ADDR REG_RAX + // What sort of reloc do we use for [disp32] address mode #define IMAGE_REL_BASED_DISP32 IMAGE_REL_BASED_REL32 diff --git a/src/coreclr/jit/targetarm.h b/src/coreclr/jit/targetarm.h index f0545335231e8f..fd68c912955947 100644 --- a/src/coreclr/jit/targetarm.h +++ b/src/coreclr/jit/targetarm.h @@ -240,6 +240,9 @@ // The registers trashed by the CORINFO_HELP_INIT_PINVOKE_FRAME helper. #define RBM_INIT_PINVOKE_FRAME_TRASH (RBM_CALLEE_TRASH | RBM_PINVOKE_TCB | RBM_PINVOKE_SCRATCH) + #define RBM_VALIDATE_INDIRECT_CALL_TRASH (RBM_INT_CALLEE_TRASH) + #define REG_VALIDATE_INDIRECT_CALL_ADDR REG_R0 + #define REG_FPBASE REG_R11 #define RBM_FPBASE RBM_R11 #define STR_FPBASE "r11" diff --git a/src/coreclr/jit/targetarm64.h b/src/coreclr/jit/targetarm64.h index 4cc6b63f73009f..1901d21cef4fa6 100644 --- a/src/coreclr/jit/targetarm64.h +++ b/src/coreclr/jit/targetarm64.h @@ -15,6 +15,7 @@ #define CPBLK_LCL_UNROLL_LIMIT 128 // Upper bound to let the code generator to loop unroll CpBlk (when both srcAddr and dstAddr point to the stack) #define INITBLK_UNROLL_LIMIT 64 // Upper bound to let the code generator to loop unroll InitBlk #define INITBLK_LCL_UNROLL_LIMIT 128 // Upper bound to let the code generator to loop unroll InitBlk (when dstAddr points to the stack) + #define LCLHEAP_UNROLL_LIMIT 128 // Upper bound to let the code generator to loop unroll LclHeap (when zeroing is required) #ifdef FEATURE_SIMD #define ALIGN_SIMD_TYPES 1 // whether SIMD type locals are to be aligned @@ -250,6 +251,10 @@ // The registers trashed by the CORINFO_HELP_INIT_PINVOKE_FRAME helper. #define RBM_INIT_PINVOKE_FRAME_TRASH RBM_CALLEE_TRASH + #define RBM_VALIDATE_INDIRECT_CALL_TRASH (RBM_INT_CALLEE_TRASH & ~(RBM_R0 | RBM_R1 | RBM_R2 | RBM_R3 | RBM_R4 | RBM_R5 | RBM_R6 | RBM_R7 | RBM_R8 | RBM_R15)) + #define REG_VALIDATE_INDIRECT_CALL_ADDR REG_R15 + #define REG_DISPATCH_INDIRECT_CALL_ADDR REG_R9 + #define REG_FPBASE REG_FP #define RBM_FPBASE RBM_FP #define STR_FPBASE "fp" diff --git a/src/coreclr/jit/targetx86.h b/src/coreclr/jit/targetx86.h index 776c9deece36ef..ec85659d63cbc8 100644 --- a/src/coreclr/jit/targetx86.h +++ b/src/coreclr/jit/targetx86.h @@ -228,6 +228,9 @@ // convention that takes EDI as argument (but doesn't trash it), trashes EAX, and returns ESI. #define RBM_INIT_PINVOKE_FRAME_TRASH (RBM_PINVOKE_SCRATCH | RBM_PINVOKE_TCB) + #define RBM_VALIDATE_INDIRECT_CALL_TRASH (RBM_INT_CALLEE_TRASH & ~RBM_ECX) + #define REG_VALIDATE_INDIRECT_CALL_ADDR REG_ECX + #define REG_FPBASE REG_EBP #define RBM_FPBASE RBM_EBP #define STR_FPBASE "ebp" diff --git a/src/coreclr/jit/valuenum.cpp b/src/coreclr/jit/valuenum.cpp index 4be6e1a93a4cdb..8d0290cd4f36df 100644 --- a/src/coreclr/jit/valuenum.cpp +++ b/src/coreclr/jit/valuenum.cpp @@ -5294,6 +5294,10 @@ ValueNum ValueNumStore::EvalMathFuncUnary(var_types typ, NamedIntrinsic gtMathFN res = tanh(arg0Val); break; + case NI_System_Math_Truncate: + res = trunc(arg0Val); + break; + default: // the above are the only math intrinsics at the time of this writing. unreached(); @@ -5398,6 +5402,10 @@ ValueNum ValueNumStore::EvalMathFuncUnary(var_types typ, NamedIntrinsic gtMathFN res = tanhf(arg0Val); break; + case NI_System_Math_Truncate: + res = truncf(arg0Val); + break; + default: // the above are the only math intrinsics at the time of this writing. unreached(); @@ -5552,6 +5560,9 @@ ValueNum ValueNumStore::EvalMathFuncUnary(var_types typ, NamedIntrinsic gtMathFN case NI_System_Math_Tanh: vnf = VNF_Tanh; break; + case NI_System_Math_Truncate: + vnf = VNF_Truncate; + break; default: unreached(); // the above are the only math intrinsics at the time of this writing. } @@ -7480,59 +7491,29 @@ void Compiler::fgValueNumberAssignment(GenTreeOp* tree) { assert(tree->OperIs(GT_ASG) && varTypeIsEnregisterable(tree)); - GenTree* lhs = tree->AsOp()->gtOp1; - GenTree* rhs = tree->AsOp()->gtOp2; + GenTree* lhs = tree->gtGetOp1(); + GenTree* rhs = tree->gtGetOp2(); - ValueNumPair rhsVNPair = rhs->gtVNPair; + // Only normal values are to be stored in SSA defs, VN maps, etc. + ValueNumPair rhsExcSet; + ValueNumPair rhsVNPair; + vnStore->VNPUnpackExc(rhs->gtVNPair, &rhsVNPair, &rhsExcSet); // Is the type being stored different from the type computed by the rhs? - if ((rhs->TypeGet() != lhs->TypeGet()) && (lhs->OperGet() != GT_BLK)) - { - // This means that there is an implicit cast on the rhs value - // - // We will add a cast function to reflect the possible narrowing of the rhs value - // - var_types castToType = lhs->TypeGet(); - var_types castFromType = rhs->TypeGet(); - bool isUnsigned = varTypeIsUnsigned(castFromType); - - rhsVNPair = vnStore->VNPairForCast(rhsVNPair, castToType, castFromType, isUnsigned); - } - - if (tree->TypeGet() != TYP_VOID) - { - // Assignment operators, as expressions, return the value of the RHS. - tree->gtVNPair = rhsVNPair; - } - - // Now that we've labeled the assignment as a whole, we don't care about exceptions. - rhsVNPair = vnStore->VNPNormalPair(rhsVNPair); - - // Record the exception set for this 'tree' in vnExcSet. - // First we'll record the exception set for the rhs and - // later we will union in the exception set for the lhs. - // - ValueNum vnExcSet; - - // Unpack, Norm,Exc for 'rhsVNPair' - ValueNum vnRhsLibNorm; - vnStore->VNUnpackExc(rhsVNPair.GetLiberal(), &vnRhsLibNorm, &vnExcSet); - - // Now that we've saved the rhs exeception set, we we will use the normal values. - rhsVNPair = ValueNumPair(vnRhsLibNorm, vnStore->VNNormalValue(rhsVNPair.GetConservative())); - - // If the types of the rhs and lhs are different then we - // may want to change the ValueNumber assigned to the lhs. - // if (rhs->TypeGet() != lhs->TypeGet()) { if (rhs->TypeGet() == TYP_REF) { // If we have an unsafe IL assignment of a TYP_REF to a non-ref (typically a TYP_BYREF) - // then don't propagate this ValueNumber to the lhs, instead create a new unique VN - // + // then don't propagate this ValueNumber to the lhs, instead create a new unique VN. rhsVNPair.SetBoth(vnStore->VNForExpr(compCurBB, lhs->TypeGet())); } + else if (lhs->OperGet() != GT_BLK) + { + // This means that there is an implicit cast on the rhs value + // We will add a cast function to reflect the possible narrowing of the rhs value + rhsVNPair = vnStore->VNPairForCast(rhsVNPair, lhs->TypeGet(), rhs->TypeGet()); + } } // We have to handle the case where the LHS is a comma. In that case, we don't evaluate the comma, @@ -8002,6 +7983,12 @@ void Compiler::fgValueNumberAssignment(GenTreeOp* tree) default: unreached(); } + + // For exception sets, we need the contribution from COMMAs on the + // LHS. ASGs produce no values, and as such are given the "Void" VN. + ValueNumPair lhsExcSet = vnStore->VNPExceptionSet(tree->gtGetOp1()->gtVNPair); + ValueNumPair asgExcSet = vnStore->VNPExcSetUnion(lhsExcSet, rhsExcSet); + tree->gtVNPair = vnStore->VNPWithExc(vnStore->VNPForVoid(), asgExcSet); } //------------------------------------------------------------------------ @@ -8133,8 +8120,11 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree) fgMutateGcHeap(tree DEBUGARG("INITBLK/COPYBLK - non local")); } - // Assignments produce no values so we give them the "Void" VN. - tree->gtVNPair = vnStore->VNPForVoid(); + // Propagate the exception sets. Assignments produce no values so we give them the "Void" VN. + ValueNumPair vnpExcSet = ValueNumStore::VNPForEmptyExcSet(); + vnpExcSet = vnStore->VNPUnionExcSet(lhs->gtVNPair, vnpExcSet); + vnpExcSet = vnStore->VNPUnionExcSet(rhs->gtVNPair, vnpExcSet); + tree->gtVNPair = vnStore->VNPWithExc(vnStore->VNPForVoid(), vnpExcSet); } //------------------------------------------------------------------------ @@ -8449,6 +8439,17 @@ void Compiler::fgValueNumberTree(GenTree* tree) { ValueNumPair lclVNPair = varDsc->GetPerSsaData(ssaNum)->m_vnPair; tree->gtVNPair = vnStore->VNPairApplySelectors(lclVNPair, lclFld->GetFieldSeq(), indType); + + // If we have byref field, we may have a zero-offset sequence to add. + FieldSeqNode* zeroOffsetFldSeq = nullptr; + if ((typ == TYP_BYREF) && GetZeroOffsetFieldMap()->Lookup(lclFld, &zeroOffsetFldSeq)) + { + ValueNum addrExtended = vnStore->ExtendPtrVN(lclFld, zeroOffsetFldSeq); + if (addrExtended != ValueNumStore::NoVN) + { + lclFld->gtVNPair.SetBoth(addrExtended); + } + } } } else @@ -9062,10 +9063,6 @@ void Compiler::fgValueNumberTree(GenTree* tree) } break; - case GT_LOCKADD: // Binop - noway_assert("LOCKADD should not appear before lowering"); - break; - case GT_XORR: // Binop case GT_XAND: // Binop case GT_XADD: // Binop @@ -10025,7 +10022,7 @@ void Compiler::fgValueNumberCastHelper(GenTreeCall* call) unreached(); } - ValueNumPair argVNP = call->gtCallArgs->GetNode()->gtVNPair; + ValueNumPair argVNP = call->fgArgInfo->GetArgNode(0)->gtVNPair; ValueNumPair castVNP = vnStore->VNPairForCast(argVNP, castToType, castFromType, srcIsUnsigned, hasOverflowCheck); call->SetVNs(castVNP); @@ -10941,9 +10938,8 @@ void Compiler::fgDebugCheckExceptionSets() return GenTree::VisitResult::Continue; }); - // Currently, we fail to properly maintain the exception sets for trees with user - // calls or assignments. - if ((tree->gtFlags & (GTF_ASG | GTF_CALL)) != 0) + // Currently, we fail to properly maintain the exception sets for trees with user calls. + if ((tree->gtFlags & GTF_CALL) != 0) { return; } diff --git a/src/coreclr/jit/valuenumfuncs.h b/src/coreclr/jit/valuenumfuncs.h index f82c2ff603d07e..47135a0f734a3b 100644 --- a/src/coreclr/jit/valuenumfuncs.h +++ b/src/coreclr/jit/valuenumfuncs.h @@ -101,6 +101,7 @@ ValueNumFuncDef(Sinh, 1, false, false, false) ValueNumFuncDef(Sqrt, 1, false, false, false) ValueNumFuncDef(Tan, 1, false, false, false) ValueNumFuncDef(Tanh, 1, false, false, false) +ValueNumFuncDef(Truncate, 1, false, false, false) ValueNumFuncDef(ManagedThreadId, 0, false, false, false) diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.props b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.props index 4e8bbecff72873..ab8a85f74668a2 100644 --- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.props +++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.props @@ -36,6 +36,9 @@ The .NET Foundation licenses this file to you under the MIT license. $(CrossCompileArch)-linux-gnu $(CrossCompileArch)-alpine-linux-musl + + $ORIGIN + @executable_path @@ -57,7 +60,7 @@ The .NET Foundation licenses this file to you under the MIT license. - $(IlcFrameworkPath)lib%(Identity).a + $(IlcFrameworkNativePath)lib%(Identity).a @@ -75,8 +78,7 @@ The .NET Foundation licenses this file to you under the MIT license. - - + diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets index 529de6be54f554..1b1b747d8738f6 100644 --- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets +++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets @@ -23,6 +23,8 @@ The .NET Foundation licenses this file to you under the MIT license. $(IlcPath)\tools\ $(IlcPath)\sdk\ $(IlcPath)\framework\ + $(IlcPath)\framework\ + $(IlcFrameworkPath) $(IlcPath)\mibc\ windows OSX @@ -119,7 +121,7 @@ The .NET Foundation licenses this file to you under the MIT license. $(NativeIntermediateOutputPath)\%(Filename).ilc.rsp - $(NativeIntermediateOutputPath)\%(Filename).$(IlcOutputFileExt) + $(NativeIntermediateOutputPath)\%(Filename)$(IlcOutputFileExt) @@ -139,6 +141,7 @@ The .NET Foundation licenses this file to you under the MIT license. $(IlcHostPackagePath)\tools\ $(RuntimePackagePath)\sdk\ $(RuntimePackagePath)\framework\ + $(RuntimePackagePath)\framework\ $(RuntimePackagePath)\mibc\ diff --git a/src/coreclr/nativeaot/Directory.Build.props b/src/coreclr/nativeaot/Directory.Build.props index 9b732840b30907..939a9c4bc2548d 100644 --- a/src/coreclr/nativeaot/Directory.Build.props +++ b/src/coreclr/nativeaot/Directory.Build.props @@ -31,7 +31,7 @@ $(NoWarn),0419,0649,CA2249,CA1830 - $(NoWarn);CS8600;CS8602;CS8603;CS8604;CS8610;CS8618;CS8620;CS8625;CS8632;CS8765 + $(NoWarn);CS8600;CS8602;CS8603;CS8604;CS8618;CS8625;CS8632;CS8765 $(NoWarn);CA1810;CA1823;CA1825;CA2208;SA1129;SA1205;SA1400;SA1517 diff --git a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InternalCalls.cs b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InternalCalls.cs index 43754434469343..b38f3563d62f33 100644 --- a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InternalCalls.cs +++ b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InternalCalls.cs @@ -46,7 +46,7 @@ internal enum ClassLibFunctionId IDynamicCastableGetInterfaceImplementation = 9, } - internal static class InternalCalls + internal static partial class InternalCalls { // // internalcalls for System.GC. @@ -59,8 +59,9 @@ internal static void RhCollect(int generation, InternalGCCollectionMode mode) RhpCollect(generation, mode); } - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - private static extern void RhpCollect(int generation, InternalGCCollectionMode mode); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + private static partial void RhpCollect(int generation, InternalGCCollectionMode mode); [RuntimeExport("RhGetGcTotalMemory")] internal static long RhGetGcTotalMemory() @@ -68,8 +69,9 @@ internal static long RhGetGcTotalMemory() return RhpGetGcTotalMemory(); } - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - private static extern long RhpGetGcTotalMemory(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + private static partial long RhpGetGcTotalMemory(); [RuntimeExport("RhStartNoGCRegion")] internal static int RhStartNoGCRegion(long totalSize, bool hasLohSize, long lohSize, bool disallowFullBlockingGC) @@ -284,39 +286,49 @@ internal static extern unsafe bool RhpCallFilterFunclet( // Block the current thread until at least one object needs to be finalized (returns true) or // memory is low (returns false and the finalizer thread should initiate a garbage collection). - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern uint RhpWaitForFinalizerRequest(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial uint RhpWaitForFinalizerRequest(); // Indicate that the current round of finalizations is complete. - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern void RhpSignalFinalizationComplete(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhpSignalFinalizationComplete(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern void RhpAcquireCastCacheLock(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhpAcquireCastCacheLock(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern void RhpReleaseCastCacheLock(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhpReleaseCastCacheLock(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern ulong RhpGetTickCount64(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial ulong RhpGetTickCount64(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern void RhpAcquireThunkPoolLock(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhpAcquireThunkPoolLock(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern void RhpReleaseThunkPoolLock(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhpReleaseThunkPoolLock(); - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr RhAllocateThunksMapping(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial IntPtr RhAllocateThunksMapping(); // Enters a no GC region, possibly doing a blocking GC if there is not enough // memory available to satisfy the caller's request. - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern int RhpStartNoGCRegion(long totalSize, bool hasLohSize, long lohSize, bool disallowFullBlockingGC); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial int RhpStartNoGCRegion(long totalSize, bool hasLohSize, long lohSize, bool disallowFullBlockingGC); // Exits a no GC region, possibly doing a GC to clean up the garbage that // the caller allocated. - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - internal static extern int RhpEndNoGCRegion(); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial int RhpEndNoGCRegion(); } } diff --git a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs new file mode 100644 index 00000000000000..969312264b5b31 --- /dev/null +++ b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs @@ -0,0 +1,25 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Runtime.InteropServices +{ + /// + /// Provides an equivalent to for native + /// functions declared in .NET. + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + public sealed class UnmanagedCallConvAttribute : Attribute + { + public UnmanagedCallConvAttribute() + { + } + + /// + /// Types indicating calling conventions for the unmanaged target. + /// + /// + /// If null, the semantics are identical to CallingConvention.Winapi. + /// + public Type[]? CallConvs; + } +} diff --git a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/RuntimeExports.cs b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/RuntimeExports.cs index 53860b7cdaba04..84accea33ddd3b 100644 --- a/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/RuntimeExports.cs +++ b/src/coreclr/nativeaot/Runtime.Base/src/System/Runtime/RuntimeExports.cs @@ -14,7 +14,7 @@ namespace System.Runtime { - internal static class RuntimeExports + internal static partial class RuntimeExports { // // internal calls for allocation @@ -301,8 +301,9 @@ public static unsafe int RhGetCurrentThreadStackTrace(IntPtr[] outputBuffer) return RhpGetCurrentThreadStackTrace(pOutputBuffer, (uint)((outputBuffer != null) ? outputBuffer.Length : 0), new UIntPtr(&pOutputBuffer)); } - [DllImport(Redhawk.BaseName, CallingConvention = CallingConvention.Cdecl)] - private static extern unsafe int RhpGetCurrentThreadStackTrace(IntPtr* pOutputBuffer, uint outputBufferLength, UIntPtr addressInCurrentFrame); + [GeneratedDllImport(Redhawk.BaseName)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + private static unsafe partial int RhpGetCurrentThreadStackTrace(IntPtr* pOutputBuffer, uint outputBufferLength, UIntPtr addressInCurrentFrame); // Worker for RhGetCurrentThreadStackTrace. RhGetCurrentThreadStackTrace just allocates a transition // frame that will be used to seed the stack trace and this method does all the real work. diff --git a/src/coreclr/nativeaot/Runtime/EHHelpers.cpp b/src/coreclr/nativeaot/Runtime/EHHelpers.cpp index b888d530c4c5f9..85a6aed6dee861 100644 --- a/src/coreclr/nativeaot/Runtime/EHHelpers.cpp +++ b/src/coreclr/nativeaot/Runtime/EHHelpers.cpp @@ -195,7 +195,7 @@ EXTERN_C int32_t __stdcall RhpPInvokeExceptionGuard(PEXCEPTION_RECORD pExc // If the thread is currently in the "do not trigger GC" mode, we must not allocate, we must not reverse pinvoke, or // return from a pinvoke. All of these things will deadlock with the GC and they all become increasingly likely as - // exception dispatch kicks off. So we just nip this in the bud as early as possible with a FailFast. The most + // exception dispatch kicks off. So we just address this as early as possible with a FailFast. The most // likely case where this occurs is in our GC-callouts for Jupiter lifetime management -- in that case, we have // managed code that calls to native code (without pinvoking) which might have a bug that causes an AV. if (pThread->IsDoNotTriggerGcSet()) diff --git a/src/coreclr/nativeaot/Runtime/eventtrace.cpp b/src/coreclr/nativeaot/Runtime/eventtrace.cpp index 0f4646152165b1..fd10ac2874ac46 100644 --- a/src/coreclr/nativeaot/Runtime/eventtrace.cpp +++ b/src/coreclr/nativeaot/Runtime/eventtrace.cpp @@ -2496,8 +2496,8 @@ void ETW::TypeSystemLog::SendObjectAllocatedEvent(Object* pObject) // over 10K in size. if (size < 10000 && typeLoggingInfo.dwAllocsSkippedForSample < typeLoggingInfo.dwAllocsToSkipPerSample) { - // Update hash table's copy of type logging info with these values. Sucks that - // we're doing another hash table lookup here. Could instead have used LookupPtr() + // Update hash table's copy of type logging info with these values. Unfortunate that + // we're doing another hash table lookup here. Could instead have used LookupPtr() // if it gave us back a non-const pointer, and then we could have updated in-place AddOrReplaceTypeLoggingInfo(pLoggedTypesFromModule, &typeLoggingInfo); if (fCreatedNew) diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Reflection/Augments/ReflectionAugments.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Reflection/Augments/ReflectionAugments.cs index 2e4e1679f10f34..7eaa4134426d85 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Reflection/Augments/ReflectionAugments.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Reflection/Augments/ReflectionAugments.cs @@ -138,7 +138,7 @@ public abstract object ActivatorCreateInstance( Type type, bool nonPublic); public abstract object ActivatorCreateInstance( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes); + Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture, object?[]? activationAttributes); // V2 api: Creates open or closed delegates to static or instance methods - relaxed signature checking allowed. public abstract Delegate CreateDelegate(Type type, object? firstArgument, MethodInfo method, bool throwOnBindFailure); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/Augments/ReflectionExecutionDomainCallbacks.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/Augments/ReflectionExecutionDomainCallbacks.cs index 61938ed1bbd7be..ea5e80537ef917 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/Augments/ReflectionExecutionDomainCallbacks.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/Augments/ReflectionExecutionDomainCallbacks.cs @@ -26,7 +26,7 @@ namespace Internal.Runtime.Augments public abstract class ReflectionExecutionDomainCallbacks { // Api's that are exposed in System.Runtime but are really reflection apis. - public abstract Type GetType(string typeName, Func? assemblyResolver, Func? typeResolver, bool throwOnError, bool ignoreCase, string defaultAssembly); + public abstract Type GetType(string typeName, Func? assemblyResolver, Func? typeResolver, bool throwOnError, bool ignoreCase, string defaultAssembly); public abstract IntPtr TryGetStaticClassConstructionContext(RuntimeTypeHandle runtimeTypeHandle); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ReflectionHelpers.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ReflectionHelpers.cs index f84d0899ba2eca..16b96d5116abee 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ReflectionHelpers.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/Internal/Runtime/CompilerHelpers/ReflectionHelpers.cs @@ -22,7 +22,7 @@ public static Type GetType(string typeName, string callingAssemblyName, bool thr // This entry is used to implement Type.GetType()'s ability to detect the calling assembly and use it as // a default assembly name. - public static Type ExtensibleGetType(string typeName, string callingAssemblyName, Func assemblyResolver, Func typeResolver, bool throwOnError, bool ignoreCase) + public static Type ExtensibleGetType(string typeName, string callingAssemblyName, Func assemblyResolver, Func? typeResolver, bool throwOnError, bool ignoreCase) { return RuntimeAugments.Callbacks.GetType(typeName, assemblyResolver, typeResolver, throwOnError, ignoreCase, callingAssemblyName); } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Activator.CoreRT.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Activator.CoreRT.cs index 5b2170110f09cc..75d5217cc6101f 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Activator.CoreRT.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Activator.CoreRT.cs @@ -127,15 +127,15 @@ public static ObjectHandle CreateInstance(string assemblyName, bool ignoreCase, BindingFlags bindingAttr, Binder? binder, - object[]? args, + object?[]? args, CultureInfo? culture, - object[]? activationAttributes) + object?[]? activationAttributes) { throw new PlatformNotSupportedException(); // https://github.com/dotnet/corefx/issues/30845 } [RequiresUnreferencedCode("Type and its constructor could be removed")] - public static ObjectHandle CreateInstance(string assemblyName, string typeName, object[]? activationAttributes) + public static ObjectHandle CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes) { throw new PlatformNotSupportedException(); // https://github.com/dotnet/corefx/issues/30845 } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Delegate.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Delegate.cs index 95995bda41003f..da126c3ab28e32 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Delegate.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Delegate.cs @@ -278,12 +278,12 @@ internal bool IsDynamicDelegate() } [DebuggerGuidedStepThroughAttribute] - protected virtual object DynamicInvokeImpl(object[]? args) + protected virtual object DynamicInvokeImpl(object?[]? args) { if (IsDynamicDelegate()) { // DynamicDelegate case - object result = ((Func)m_helperObject)(args); + object result = ((Func)m_helperObject)(args); DebugAnnotations.PreviousCallContainsDebuggerStepInCode(); return result; } @@ -378,7 +378,7 @@ internal static bool InternalEqualTypes(object a, object b) // Returns a new delegate of the specified type whose implementation is provied by the // provided delegate. - internal static Delegate CreateObjectArrayDelegate(Type t, Func handler) + internal static Delegate CreateObjectArrayDelegate(Type t, Func handler) { EETypePtr delegateEEType; if (!t.TryGetEEType(out delegateEEType)) diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/InvokeUtils.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/InvokeUtils.cs index 6fa54fdf3b2085..8e697b583b39ae 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/InvokeUtils.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/InvokeUtils.cs @@ -352,7 +352,7 @@ internal static unsafe object CallDynamicInvokeMethod( IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, object targetMethodOrDelegate, - object[]? parameters, + object?[]? parameters, BinderBundle? binderBundle, bool wrapInTargetInvocationException, bool methodToCallIsThisCall = true) @@ -509,7 +509,7 @@ internal static ref IntPtr DynamicInvokeParamHelperRef(ref ArgSetupState argSetu } } - internal static object DynamicInvokeBoxedValuetypeReturn(out DynamicInvokeParamLookupType paramLookupType, object? boxedValuetype, object[]? parameters, int index, RuntimeTypeHandle type, DynamicInvokeParamType paramType, ref object[] nullableCopyBackObjects) + internal static object DynamicInvokeBoxedValuetypeReturn(out DynamicInvokeParamLookupType paramLookupType, object? boxedValuetype, object?[]? parameters, int index, RuntimeTypeHandle type, DynamicInvokeParamType paramType, ref object[] nullableCopyBackObjects) { object finalObjectToReturn = boxedValuetype; EETypePtr eeType = type.ToEETypePtr(); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index c4e70d9da995e3..1c9d3cefedf9e3 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -114,12 +114,12 @@ public override ParameterInfo[] GetParameters() return default; } - public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) + public override object? Invoke(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? parameters, CultureInfo? culture) { return default; } - public override object Invoke(BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) + public override object Invoke(BindingFlags invokeAttr, Binder? binder, object?[]? parameters, CultureInfo? culture) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index 87d4ab1f1135a5..9366554d5d5d20 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -194,7 +194,7 @@ public override ParameterInfo[] GetParameters() return default; } - public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) + public override object? Invoke(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? parameters, CultureInfo? culture) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index 58958a755267ba..1ebf2df1735877 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -280,7 +280,7 @@ protected override bool HasElementTypeImpl() } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters) + public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 38ad036dab2315..5adce89c2ab317 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -326,7 +326,7 @@ protected override bool HasElementTypeImpl() } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, Globalization.CultureInfo culture, string[] namedParameters) + public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 4f0a6262887782..4737d419ff150d 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -200,7 +200,7 @@ public override ParameterInfo[] GetParameters() return default; } - public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, Globalization.CultureInfo culture) + public override object? Invoke(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? parameters, Globalization.CultureInfo? culture) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 0407041f9c5704..940a21a42b88dd 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -108,12 +108,12 @@ public override MethodInfo GetSetMethod(bool nonPublic) return default; } - public override object GetValue(object obj, object[] index) + public override object? GetValue(object? obj, object?[]? index) { return default; } - public override object GetValue(object obj, BindingFlags invokeAttr, Binder binder, object[] index, Globalization.CultureInfo culture) + public override object? GetValue(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? index, Globalization.CultureInfo? culture) { return default; } @@ -143,11 +143,11 @@ public void SetSetMethod(MethodBuilder mdBuilder) { } - public override void SetValue(object obj, object value, object[] index) + public override void SetValue(object? obj, object? value, object?[]? index) { } - public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, Globalization.CultureInfo culture) + public override void SetValue(object? obj, object? value, BindingFlags invokeAttr, Binder? binder, object?[]? index, Globalization.CultureInfo? culture) { } } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 86ab332f749552..b95a4ce8e69ccf 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -543,7 +543,7 @@ protected override bool HasElementTypeImpl() } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, Globalization.CultureInfo culture, string[] namedParameters) + public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) { return default; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreRT.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreRT.cs index 06c7ce9fdc1f55..37a9a2e6c8fcb7 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreRT.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreRT.cs @@ -504,7 +504,7 @@ private unsafe bool TryGetOrCreateObjectForComInstanceInternal( if (_rcwCache.TryGetValue(externalComObject, out GCHandle handle)) { retValue = handle.Target; - return false; + return true; } } } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreRT.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreRT.cs index fbf56b62521ad1..3d838c77b86d48 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreRT.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/JitInfo.CoreRT.cs @@ -11,4 +11,4 @@ public static partial class JitInfo private static long GetCompilationTimeInTicks(bool currentThread = false) => 0; } -} \ No newline at end of file +} diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs index b0d2fad5792f37..6caa27646b3823 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/RuntimeImports.cs @@ -22,16 +22,18 @@ namespace System.Runtime // but if a class library wants to factor differently (such as putting the GCHandle methods in an // optional library, those methods can be moved to a different file/namespace/dll [ReflectionBlocked] - public static class RuntimeImports + public static partial class RuntimeImports { private const string RuntimeLibrary = "*"; - [DllImport(RuntimeLibrary, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] [SuppressGCTransition] - internal static extern ulong RhpGetTickCount64(); + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial ulong RhpGetTickCount64(); - [DllImport(RuntimeLibrary, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr RhpGetCurrentThread(); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial IntPtr RhpGetCurrentThread(); [MethodImpl(MethodImplOptions.InternalCall)] [RuntimeImport(RuntimeLibrary, "RhpInitiateThreadAbort")] @@ -67,8 +69,8 @@ internal static void RhReRegisterForFinalize(object obj) private static extern bool _RhReRegisterForFinalize(object obj); // Wait for all pending finalizers. This must be a p/invoke to avoid starving the GC. - [DllImport(RuntimeLibrary, ExactSpelling = true)] - private static extern void RhWaitForPendingFinalizers(int allowReentrantWait); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + private static partial void RhWaitForPendingFinalizers(int allowReentrantWait); // Temporary workaround to unblock shareable assembly bring-up - without shared interop, // we must prevent RhWaitForPendingFinalizers from using marshaling because it would @@ -80,8 +82,8 @@ internal static void RhWaitForPendingFinalizers(bool allowReentrantWait) RhWaitForPendingFinalizers(allowReentrantWait ? 1 : 0); } - [DllImport(RuntimeLibrary, ExactSpelling = true)] - internal static extern void RhInitializeFinalizerThread(); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + internal static partial void RhInitializeFinalizerThread(); // Get maximum GC generation number. [MethodImplAttribute(MethodImplOptions.InternalCall)] @@ -185,18 +187,19 @@ internal static void RhWaitForPendingFinalizers(bool allowReentrantWait) [RuntimeImport(RuntimeLibrary, "RhGetTotalAllocatedBytes")] internal static extern long RhGetTotalAllocatedBytes(); - [DllImport(RuntimeLibrary, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] - internal static extern long RhGetTotalAllocatedBytesPrecise(); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial long RhGetTotalAllocatedBytesPrecise(); [MethodImpl(MethodImplOptions.InternalCall)] [RuntimeImport(RuntimeLibrary, "RhGetMemoryInfo")] internal static extern void RhGetMemoryInfo(ref byte info, GCKind kind); - [DllImport(RuntimeLibrary, ExactSpelling = true)] - internal static unsafe extern void RhAllocateNewArray(IntPtr pArrayEEType, uint numElements, uint flags, void* pResult); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + internal static unsafe partial void RhAllocateNewArray(IntPtr pArrayEEType, uint numElements, uint flags, void* pResult); - [DllImport(RuntimeLibrary, ExactSpelling = true)] - internal static unsafe extern void RhAllocateNewObject(IntPtr pEEType, uint flags, void* pResult); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + internal static unsafe partial void RhAllocateNewObject(IntPtr pEEType, uint flags, void* pResult); [MethodImpl(MethodImplOptions.InternalCall)] [RuntimeImport(RuntimeLibrary, "RhCompareObjectContentsAndPadding")] @@ -365,23 +368,26 @@ internal static unsafe void RhUnbox(object? obj, ref byte data, EETypePtr pUnbox internal static extern object RhMemberwiseClone(object obj); // Busy spin for the given number of iterations. - [DllImport(RuntimeLibrary, EntryPoint = "RhSpinWait", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] + [GeneratedDllImport(RuntimeLibrary, EntryPoint = "RhSpinWait", ExactSpelling = true)] [SuppressGCTransition] - internal static extern void RhSpinWait(int iterations); + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhSpinWait(int iterations); // Yield the cpu to another thread ready to process, if one is available. - [DllImport(RuntimeLibrary, EntryPoint = "RhYield", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - private static extern int _RhYield(); + [GeneratedDllImport(RuntimeLibrary, EntryPoint = "RhYield", ExactSpelling = true)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + private static partial int _RhYield(); internal static bool RhYield() { return (_RhYield() != 0); } - [DllImport(RuntimeLibrary, EntryPoint = "RhFlushProcessWriteBuffers", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] - internal static extern void RhFlushProcessWriteBuffers(); + [GeneratedDllImport(RuntimeLibrary, EntryPoint = "RhFlushProcessWriteBuffers", ExactSpelling = true)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static partial void RhFlushProcessWriteBuffers(); #if !TARGET_UNIX // Wait for any object to be signalled, in a way that's compatible with the CLR's behavior in an STA. // ExactSpelling = 'true' to force MCG to resolve it to default - [DllImport(RuntimeLibrary, ExactSpelling = true)] - private static extern unsafe int RhCompatibleReentrantWaitAny(int alertable, int timeout, int count, IntPtr* handles); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + private static unsafe partial int RhCompatibleReentrantWaitAny(int alertable, int timeout, int count, IntPtr* handles); // Temporary workaround to unblock shareable assembly bring-up - without shared interop, // we must prevent RhCompatibleReentrantWaitAny from using marshaling because it would @@ -611,8 +617,8 @@ internal static IntPtr RhGetModuleSection(TypeManagerHandle module, ReadyToRunSe internal static extern void RhCallDescrWorker(IntPtr callDescr); // For Managed to Native calls - [DllImport(RuntimeLibrary, EntryPoint = "RhCallDescrWorker", ExactSpelling = true)] - internal static extern void RhCallDescrWorkerNative(IntPtr callDescr); + [GeneratedDllImport(RuntimeLibrary, EntryPoint = "RhCallDescrWorker", ExactSpelling = true)] + internal static partial void RhCallDescrWorkerNative(IntPtr callDescr); // Moves memory from smem to dmem. Size must be a positive value. // This copy uses an intrinsic to be safe for copying arbitrary bits of @@ -929,15 +935,16 @@ internal struct ConservativelyReportedRegionDesc [RuntimeImport(RuntimeLibrary, "modff")] internal static extern unsafe float modff(float x, float* intptr); - [DllImport(RuntimeImports.RuntimeLibrary, ExactSpelling = true)] - internal static extern unsafe void* memmove(byte* dmem, byte* smem, nuint size); + [GeneratedDllImport(RuntimeImports.RuntimeLibrary, ExactSpelling = true)] + internal static unsafe partial void* memmove(byte* dmem, byte* smem, nuint size); - [DllImport(RuntimeImports.RuntimeLibrary, ExactSpelling = true)] - internal static extern unsafe void* memset(byte* mem, int value, nuint size); + [GeneratedDllImport(RuntimeImports.RuntimeLibrary, ExactSpelling = true)] + internal static unsafe partial void* memset(byte* mem, int value, nuint size); #if TARGET_X86 || TARGET_AMD64 - [DllImport(RuntimeLibrary, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] - internal static extern unsafe void RhCpuIdEx(int* cpuInfo, int functionId, int subFunctionId); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(CallConvCdecl) })] + internal static unsafe partial void RhCpuIdEx(int* cpuInfo, int functionId, int subFunctionId); #endif internal static RhCorElementTypeInfo GetRhCorElementTypeInfo(CorElementType elementType) diff --git a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionCoreCallbacksImplementation.cs b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionCoreCallbacksImplementation.cs index 3a0b5667c67387..9f51a215b36bf0 100644 --- a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionCoreCallbacksImplementation.cs +++ b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionCoreCallbacksImplementation.cs @@ -26,7 +26,7 @@ public override object ActivatorCreateInstance( Type type, bool nonPublic) => throw new NotSupportedException(SR.Reflection_Disabled); public override object ActivatorCreateInstance( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - Type type, BindingFlags bindingAttr, Binder binder, object[] args, CultureInfo culture, object[] activationAttributes) => throw new NotSupportedException(SR.Reflection_Disabled); + Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture, object?[]? activationAttributes) => throw new NotSupportedException(SR.Reflection_Disabled); public override Delegate CreateDelegate(Type type, object firstArgument, MethodInfo method, bool throwOnBindFailure) => throw new NotSupportedException(SR.Reflection_Disabled); public override Delegate CreateDelegate(Type type, MethodInfo method, bool throwOnBindFailure) => throw new NotSupportedException(SR.Reflection_Disabled); [RequiresUnreferencedCode("The target method might be removed")] diff --git a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionExecutionDomainCallbacksImplementation.cs b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionExecutionDomainCallbacksImplementation.cs index 61c1574840b5c9..11b43056d60616 100644 --- a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionExecutionDomainCallbacksImplementation.cs +++ b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/ReflectionExecutionDomainCallbacksImplementation.cs @@ -22,7 +22,7 @@ internal class ReflectionExecutionDomainCallbacksImplementation : ReflectionExec public override MethodBase GetMethodBaseFromStartAddressIfAvailable(IntPtr methodStartAddress) => null; public override Type GetNamedTypeForHandle(RuntimeTypeHandle typeHandle, bool isGenericTypeDefinition) => RuntimeTypeInfo.GetRuntimeTypeInfo(typeHandle); public override Type GetPointerTypeForHandle(RuntimeTypeHandle typeHandle) => RuntimeTypeInfo.GetRuntimeTypeInfo(typeHandle); - public override Type GetType(string typeName, Func assemblyResolver, Func typeResolver, bool throwOnError, bool ignoreCase, string defaultAssembly) => throw new NotSupportedException(SR.Reflection_Disabled); + public override Type GetType(string typeName, Func assemblyResolver, Func? typeResolver, bool throwOnError, bool ignoreCase, string defaultAssembly) => throw new NotSupportedException(SR.Reflection_Disabled); public override RuntimeTypeHandle GetTypeHandleIfAvailable(Type type) => type.TypeHandle; public override bool IsReflectionBlocked(RuntimeTypeHandle typeHandle) => false; public override bool SupportsReflection(Type type) => false; diff --git a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/RuntimeTypeInfo.cs b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/RuntimeTypeInfo.cs index 5788e64c17540a..d4605c1a900131 100644 --- a/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/RuntimeTypeInfo.cs +++ b/src/coreclr/nativeaot/System.Private.DisabledReflection/src/Internal/Reflection/RuntimeTypeInfo.cs @@ -153,7 +153,7 @@ public override Type[] GetInterfaces() public override PropertyInfo[] GetProperties(BindingFlags bindingAttr) => throw new NotSupportedException(SR.Reflection_Disabled); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters) + public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, CultureInfo? culture, string[]? namedParameters) => throw new NotSupportedException(SR.Reflection_Disabled); public override bool IsDefined(Type attributeType, bool inherit) => throw new NotSupportedException(SR.Reflection_Disabled); diff --git a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/BindingFlagSupport/MethodPolicies.cs b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/BindingFlagSupport/MethodPolicies.cs index 41b6452300c4f1..a88d9b76b1cee8 100644 --- a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/BindingFlagSupport/MethodPolicies.cs +++ b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/BindingFlagSupport/MethodPolicies.cs @@ -38,7 +38,7 @@ public sealed override void GetMemberAttributes(MethodInfo member, out MethodAtt public sealed override bool ImplicitlyOverrides(MethodInfo baseMember, MethodInfo derivedMember) { - // TODO (https://github.com/dotnet/corert/issues/1896) Comparing signatures is lame. The runtime and/or toolchain should have a way of sharing this info. + // TODO (https://github.com/dotnet/corert/issues/1896) Comparing signatures is fragile. The runtime and/or toolchain should have a way of sharing this info. return AreNamesAndSignaturesEqual(baseMember, derivedMember); } diff --git a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs index fdbcf0b53685d3..3622630315ae33 100644 --- a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs +++ b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeNamedTypeInfo.cs @@ -129,8 +129,6 @@ public sealed override StructLayoutAttribute StructLayoutAttribute { get { - const int DefaultPackingSize = 8; - // Note: CoreClr checks HasElementType and IsGenericParameter in addition to IsInterface but those properties cannot be true here as this // RuntimeTypeInfo subclass is solely for TypeDef types.) if (IsInterface) @@ -156,15 +154,7 @@ public sealed override StructLayoutAttribute StructLayoutAttribute default: charSet = CharSet.None; break; } - int pack; - int size; - GetPackSizeAndSize(out pack, out size); - - // Metadata parameter checking should not have allowed 0 for packing size. - // The runtime later converts a packing size of 0 to 8 so do the same here - // because it's more useful from a user perspective. - if (pack == 0) - pack = DefaultPackingSize; + GetPackSizeAndSize(out int pack, out int size); return new StructLayoutAttribute(layoutKind) { diff --git a/src/coreclr/nativeaot/System.Private.TypeLoader/src/System.Private.TypeLoader.csproj b/src/coreclr/nativeaot/System.Private.TypeLoader/src/System.Private.TypeLoader.csproj index e41867788ef5a2..1cedf62b22b371 100644 --- a/src/coreclr/nativeaot/System.Private.TypeLoader/src/System.Private.TypeLoader.csproj +++ b/src/coreclr/nativeaot/System.Private.TypeLoader/src/System.Private.TypeLoader.csproj @@ -1,6 +1,7 @@ $(NoWarn),CS1574 + disable TYPE_LOADER_IMPLEMENTATION;$(DefineConstants) TYPE_LOADER_TRACE;$(DefineConstants) GVM_RESOLUTION_TRACE;$(DefineConstants) diff --git a/src/coreclr/nativeaot/Test.CoreLib/src/Internal/Runtime/IDynamicInterfaceCastableSupport.cs b/src/coreclr/nativeaot/Test.CoreLib/src/Internal/Runtime/IDynamicInterfaceCastableSupport.cs index c4b3a714299bd7..29003f87df966c 100644 --- a/src/coreclr/nativeaot/Test.CoreLib/src/Internal/Runtime/IDynamicInterfaceCastableSupport.cs +++ b/src/coreclr/nativeaot/Test.CoreLib/src/Internal/Runtime/IDynamicInterfaceCastableSupport.cs @@ -21,4 +21,4 @@ internal static IntPtr IDynamicCastableGetInterfaceImplementation(object instanc return default; } } -} \ No newline at end of file +} diff --git a/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs b/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs index bcf47e47fc5ca2..a4785f4d8643c5 100644 --- a/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs +++ b/src/coreclr/nativeaot/Test.CoreLib/src/System/Runtime/RuntimeImports.cs @@ -18,7 +18,7 @@ namespace System.Runtime // but if a class library wants to factor differently (such as putting the GCHandle methods in an // optional library, those methods can be moved to a different file/namespace/dll - public static class RuntimeImports + public static partial class RuntimeImports { private const string RuntimeLibrary = "*"; @@ -85,8 +85,8 @@ internal static unsafe object RhNewObject(EETypePtr pEEType) internal static unsafe Array RhNewArray(EETypePtr pEEType, int length) => RhNewArray(pEEType.ToPointer(), length); - [DllImport(RuntimeLibrary, ExactSpelling = true)] - internal static unsafe extern void RhAllocateNewObject(IntPtr pEEType, uint flags, void* pResult); + [GeneratedDllImport(RuntimeLibrary, ExactSpelling = true)] + internal static unsafe partial void RhAllocateNewObject(IntPtr pEEType, uint flags, void* pResult); [MethodImpl(MethodImplOptions.InternalCall)] [RuntimeImport(RuntimeLibrary, "RhpFallbackFailFast")] diff --git a/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj b/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj index 29a54764b2f69b..3f602c8f677cee 100644 --- a/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj +++ b/src/coreclr/nativeaot/Test.CoreLib/src/Test.CoreLib.csproj @@ -3,6 +3,11 @@ false false netstandard2.0 + true + + $(NoWarn);DLLIMPORTGEN003 FEATURE_GC_STRESS;$(DefineConstants) @@ -184,6 +189,9 @@ System\Runtime\InteropServices\LayoutKind.cs + + System\Runtime\InteropServices\UnmanagedCallConvAttribute.cs + System\Runtime\InteropServices\UnmanagedCallersOnlyAttribute.cs diff --git a/src/coreclr/nativeaot/docs/README.md b/src/coreclr/nativeaot/docs/README.md new file mode 100644 index 00000000000000..08ddb342ad5ccc --- /dev/null +++ b/src/coreclr/nativeaot/docs/README.md @@ -0,0 +1,11 @@ +# Using Native AOT + +- [Limitations](limitations.md) +- [Compiling applications](compiling.md) +- [Debugging applications](debugging.md) +- [Optimizing applications](optimizing.md) +- [Reflection Free Mode](reflection-free-mode.md) +- [Reflection In AOT](reflection-in-aot-mode.md) +- [Managed/Native Interop in AOT](interop.md) +- [Troubleshooting](troubleshooting.md) +- [RD.xml Documentation](rd-xml-format.md) diff --git a/src/coreclr/nativeaot/docs/compiling.md b/src/coreclr/nativeaot/docs/compiling.md new file mode 100644 index 00000000000000..de52e49ef606b7 --- /dev/null +++ b/src/coreclr/nativeaot/docs/compiling.md @@ -0,0 +1,68 @@ +# Compiling with Native AOT + +This document explains how to compile and publish your project using Native AOT toolchain. First, please _ensure that [pre-requisites](prerequisites.md) are installed_. If you are starting a new project, you may find the [HelloWorld sample](https://github.com/dotnet/samples/tree/main/core/nativeaot/HelloWorld/README.md) directions useful. + +## Add ILCompiler package reference + +To use Native AOT with your project, you need to add a reference to the ILCompiler NuGet package containing the Native AOT compiler and runtime. Make sure the `nuget.config` file for your project contains the following package sources under the `` element: +```xml + + +``` + +If your project has no `nuget.config` file, it may be created by running +```bash +> dotnet new nugetconfig +``` + +from the project's root directory. New package sources must be added after the `` element if you decide to keep it. + +Once you have added the package sources, add a reference to the ILCompiler package either by running +```bash +> dotnet add package Microsoft.DotNet.ILCompiler -v 7.0.0-* +``` + +or by adding the following element to the project file: +```xml + + + +``` + +## Compile and publish your app + +Use the `dotnet publish` command to compile and publish your app: +```bash +> dotnet publish -r -c +``` + +where `` is your project configuration (such as Debug or Release) and `` is the runtime identifier reflecting your host OS and architecture (one of win-x64, linux-x64, osx-x64). For example, to publish the Release build of your app for Windows x64, run the following command: +```bash +> dotnet publish -r win-x64 -c Release +``` + +If the compilation succeeds, the native executable will be placed under the `bin//net6.0//publish/` path relative to your project's root directory. + +## Cross-architecture compilation + +Native AOT toolchain allows targeting ARM64 on an x64 host and vice versa for both Windows and Linux. Cross-OS compilation, such as targeting Linux on a Windows host, is not supported. To target win-arm64 on a Windows x64 host, in addition to the `Microsoft.DotNet.ILCompiler` package reference, also add the `runtime.win-x64.Microsoft.DotNet.ILCompiler` package reference to get the x64-hosted compiler: +```xml + +``` + +Note that it is important to use _the same version_ for both packages to avoid potential hard-to-debug issues (use the latest version from the [dotnet7](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet7/NuGet/Microsoft.DotNet.ILCompiler/7.0.0-preview.2.22103.2/versions)). After adding the package reference, you may publish for win-arm64 as usual: +```bash +> dotnet publish -r win-arm64 -c Release +``` + +Similarly, to target linux-arm64 on a Linux x64 host, in addition to the `Microsoft.DotNet.ILCompiler` package reference, also add the `runtime.linux-x64.Microsoft.DotNet.ILCompiler` package reference to get the x64-hosted compiler: +```xml + +``` + +You also need to specify the sysroot directory for Clang using the `SysRoot` property. For example, assuming you are using one of ARM64-targeting [Docker images](../../../../docs/workflow/building/coreclr/linux-instructions.md#Docker-Images) employed for cross-compilation by this repo, you may publish for linux-arm64 with the following command: +```bash +> dotnet publish -r linux-arm64 -c Release -p:CppCompilerAndLinker=clang-9 -p:SysRoot=/crossrootfs/arm64 +``` + +You may also follow [cross-building instructions](../../../../docs/workflow/building/coreclr/cross-building.md) to create your own sysroot directory. diff --git a/src/coreclr/nativeaot/docs/debugging.md b/src/coreclr/nativeaot/docs/debugging.md new file mode 100644 index 00000000000000..8b9fed76668aa2 --- /dev/null +++ b/src/coreclr/nativeaot/docs/debugging.md @@ -0,0 +1,15 @@ +# Debugging NativeAOT programs + +The NativeAOT ahead of time compiler generates fully native executable files that can be debugged by native debuggers on your platform of choice (e.g. WinDbg or Visual Studio on Windows, and gdb or lldb on Unix-like systems). + +The NativeAOT compiler generates information about line numbers, types, locals and parameters. The native debugger will let you inspect stack trace and variables, step into/over source lines, or set line breakpoints. + +To debug managed exceptions, set a breakpoint on the `RhThrowEx` method - this method is called whenever a managed exception is thrown. + +## Visual Studio-specific notes + +You can launch a NativeAOT-compiled executable under the VS debugger by opening it in the Visual Studio IDE. In the `File` menu, choose `Open Project/Solution...` and navigate to the native executable. You can set breakpoints as needed. To start debugging the EXE, choose the `Start Debugging` option from the `Debug` menu. + +To set a breakpoint that breaks whenever an exception is thrown, choose the `Breakpoints` option from the `Debug` -> `Windows` menu. In the new window, select `New` -> `Function breakpoint`. Specify `RhThrowEx` as the Function Name and leave the Language option at "All Languages" (do not select C#). + +To see what exception was thrown, start debugging (`Debug` -> `Start Debugging` or `F5`), open the Watches window (`Debug` -> `Windows` -> `Watch`) and add following expression as one of the watches: `(S_P_CoreLib_System_Exception*)@rcx`. This leverages the fact that at the time `RhThrowEx` is called, the x64 CPU register RCX contains the thrown exception. You can also paste the expression into the `Immediate Window`; the syntax is the same as for watches. diff --git a/src/coreclr/nativeaot/docs/interop.md b/src/coreclr/nativeaot/docs/interop.md new file mode 100644 index 00000000000000..f1c5c66c1d87c9 --- /dev/null +++ b/src/coreclr/nativeaot/docs/interop.md @@ -0,0 +1,57 @@ +# Managed/Native Interop in AOT + +## Direct PInvoke Calls + +The PInvoke calls in AOT compiled binaries are bound lazily at runtime by default for better compatibility. The AOT compiler +can be configured to generate direct calls for selected PInvoke methods that are bound during startup. The unmanaged libraries +and entrypoints referenced via direct calls have to be always available at runtime, otherwise the native binary fails to start. + +The benefits of direct PInvoke calls are: +- Direct PInvoke calls have *better steady state performance* +- Direct PInvoke calls make it possible to *link the unmanaged dependencies statically* + +The direct PInvoke generation can be configured using `` items in your .csproj file. The item name can be either `modulename` +that enables direct calls for all module entrypoints, or `modulename!entrypointname` that enables direct call for specific module and entrypoint +only. + +`filename` items in your .csproj file allow specifying a list in external file. It is useful when +specification of PInvoke direct calls is long and it is not practical to specify it using individual `` items. The file can +contain empty lines and comments starting with `#`. + +Examples: + +```xml + + + + + + + + + + + +``` + +### Linking + +To statically link against a unmanaged library, you'll need to specify `` pointing to `.lib` file on Windows and `.a` file on Unix + +Examples: + +```xml + + + + + + + +``` + +## Native Exports + +The native AOT compiler will export methods annotated with `UnmanagedCallersOnlyAttribute` and explicitly specified name as +public C entrypoints. It makes it possible to either dynamically or statically link the AOT compiled modules into external +programs. More details are in [NativeLibrary Sample](https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrary/README.md). diff --git a/src/coreclr/nativeaot/docs/limitations.md b/src/coreclr/nativeaot/docs/limitations.md new file mode 100644 index 00000000000000..0a7a9bced6685a --- /dev/null +++ b/src/coreclr/nativeaot/docs/limitations.md @@ -0,0 +1,12 @@ +# Limitations of Native AOT Runtime + +The native AOT .NET runtime form factor comes with a number of fundamental limitations and compatibility issues. The reasons +behind them are discussed in length in +the [.NET Runtime Form Factors](https://github.com/dotnet/designs/blob/main/accepted/2020/form-factors.md) roadmap. + +The key limitations include: + +- No dynamic loading (e.g. `Assembly.LoadFile`) +- No runtime code generation (e.g. `System.Reflection.Emit`) +- No C++/CLI, no built-in COM and WinRT interop support +- No [unconstrained reflection](reflection-in-aot-mode.md) diff --git a/src/coreclr/nativeaot/docs/optimizing.md b/src/coreclr/nativeaot/docs/optimizing.md new file mode 100644 index 00000000000000..394574c0db5560 --- /dev/null +++ b/src/coreclr/nativeaot/docs/optimizing.md @@ -0,0 +1,50 @@ +# Optimizing programs targeting Native AOT + +The Native AOT compiler provides multiple switches to influence the compilation process. These switches control the code and metadata that the compiler generates and affect the runtime behavior of the compiled program. + +To specify a switch, add a new property to your project file with one or more of the values below. For example, to specify the invariant globalization mode, add + +```xml + + true + +``` + +under the `` node of your project file. + +## Options related to library features + +Native AOT supports enabling and disabling all [documented framework library features](https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming-options#trimming-framework-library-features). For example, to remove globalization specific code and data, add a `true` property to your project. Disabling a framework feature (or enabling a minimal mode of the feature) can result in significant size savings. + +🛈 Native AOT difference: The `EnableUnsafeBinaryFormatterSerialization` framework switch is already set to the optimal value of `false` (removing the support for [obsolete](https://github.com/dotnet/designs/blob/21b274dbc21e4ae54b7e4c5dbd5ef31e439e78db/accepted/2020/better-obsoletion/binaryformatter-obsoletion.md) binary serialization). + +## Options related to trimming + +The Native AOT compiler supports the [documented options](https://docs.microsoft.com/en-us/dotnet/core/deploying/trim-self-contained) for removing unused code (trimming). By default, the compiler tries to very conservatively remove some of the unused code. + +🛈 Native AOT difference: The documented `PublishTrimmed` property is implied to be `true` when Native AOT is active. + +By default, the compiler tries to maximize compatibility with existing .NET code at the expense of compilation speed and size of the output executable. This allows people to use their existing code that worked well in a fully dynamic mode without hitting issues caused by trimming. To read more about reflection, see the [Reflection in AOT mode](reflection-in-aot-mode.md) document. + +🛈 Native AOT difference: the `TrimMode` of framework assemblies is set to `link` by default. To compile entire framework assemblies, use `TrimmerRootAssembly` to root the selected assemblies. It's not recommended to root the entire framework. + +To enable more aggressive removal of unreferenced code, set the `` property to `link`. + +To aid in troubleshooting some of the most common problems related to trimming add `true` to your project. This ensures types are preserved in their entirety, but the extra members that would otherwise be trimmed cannot be used in runtime reflection. This mode can turn some spurious `NullReferenceExceptions` (caused by reflection APIs returning a null) caused by trimming into more actionable exceptions. + +## Options related to metadata generation + +* `false`: this disables generation of stack trace metadata that provides textual names in stack traces. This is for example the text string one gets by calling `Exception.ToString()` on a caught exception. With this option disabled, stack traces will still be generated, but will be based on reflection metadata alone (they might be less complete). +* `true`: allows the compiler to remove reflection metadata from things that were not visible targets of reflection. By default, the compiler keeps metadata for everything that was compiled. With this option turned on, reflection metadata (and therefore reflection) will only be available for visible targets of reflection. Visible targets of reflection are things like assemblies rooted from the project file, RD.XML, ILLinkTrim descriptors, DynamicallyAccessedMembers annotations or DynamicDependency annotations. +* `true`: this completely disables the reflection metadata generation. Very basic reflection will still work (you can still use `typeof`, call `Object.GetType()`, compare the results, and query for basic properties such as `Type.IsValueType` or `Type.BaseType`), but most of the reflection stack will no longer work (no way to query/access methods and fields on types, or get names of types). This mode is experimental - more details in the [Reflection free mode](reflection-free-mode.md) document. + +## Options related to code generation +* `Speed`: when generating optimized code, favor code execution speed. +* `Size`: when generating optimized code, favor smaller code size. +* `true`: folds method bodies with identical bytes (method body deduplication). This makes your app smaller, but the stack traces might sometimes look nonsensical (unexpected methods might show up in the stack trace because the expected method had the same bytes as the unexpected method). Note: the current implementation of deduplication doesn't attempt to make the folding unobservable to managed code: delegates pointing to two logically different methods that ended up being folded together will compare equal. + +## Special considerations for Linux/macOS + +Debugging symbols (data about your program required for debugging) is by default part of native executable files on Unix-like operating systems. To minimize the size of your CoreRT-compiled executable, you can run the `strip` tool to remove the debugging symbols. + +No action is needed on Windows since the platform convention is to generate debug information into a separate file (`*.pdb`). diff --git a/src/coreclr/nativeaot/docs/prerequisites.md b/src/coreclr/nativeaot/docs/prerequisites.md new file mode 100644 index 00000000000000..69292d3b8433c2 --- /dev/null +++ b/src/coreclr/nativeaot/docs/prerequisites.md @@ -0,0 +1,51 @@ +If you're new to .NET, make sure to visit the [official starting page](http://dotnet.github.io). It will guide you through installing pre-requisites and building your first app. +If you're already familiar with .NET, make sure you've [downloaded and installed the .NET 6 SDK](https://www.microsoft.com/net/download/core). + +The following pre-requisites need to be installed for building .NET 6 projects with Native AOT. + +# Windows + +* Install [Visual Studio 2022](https://visualstudio.microsoft.com/vs/community/), including Desktop development with C++ workload. + +## Advanced Alternative: Minimum Visual C++ Build Tools Installation +If you wish to save disk space and do not need Visual Studio IDE, you may use the [Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) +edition instead. First download the [bootstrapper](https://aka.ms/vs/17/release/vs_buildtools.exe) executable. +On Windows 10 version 1803 or later you may use the `curl` tool: + +```cmd +curl -L https://aka.ms/vs/17/release/vs_buildtools.exe -o vs_buildtools.exe +``` + +Then launch the bootstrapper passing the installation path and the two required components (requires elevation): +```cmd +vs_buildtools.exe --installPath C:\VS2022 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.Windows10SDK.19041 --passive --norestart --nocache +``` +Alternatively you may launch the bootstrapper without any options and use Visual Studio Installer UI to enable C++ x64/x86 build tools and Windows 10 SDK individual components. + +Notes: +- You may skip the `Windows10SDK.19041` component if you already have Windows 10 SDK installed on your machine. +- To target Windows ARM64, you need to add the `Microsoft.VisualStudio.Component.VC.Tools.ARM64` (C++ ARM64 build tools) component instead. +- The `--installPath` option affects Build Tools installation only. Visual Studio Installer is always installed into +the `%ProgramFiles(x86)%\Microsoft Visual Studio\Installer` directory. + +# Fedora (31+) + +* Install `clang` and developer packages for libraries that .NET Core depends on: + +```sh +sudo dnf install clang zlib-devel krb5-libs krb5-devel ncurses-compat-libs +``` + +This was tested on Fedora 31, but will most likely work on lower versions too. + +# Ubuntu (16.04+) + +* Install `clang` and developer packages for libraries that .NET Core depends on: + +```sh +sudo apt-get install clang zlib1g-dev libkrb5-dev +``` + +# macOS (10.13+) + +* Install latest [Command Line Tools for XCode](https://developer.apple.com/xcode/download/). diff --git a/src/coreclr/nativeaot/docs/rd-xml-format.md b/src/coreclr/nativeaot/docs/rd-xml-format.md new file mode 100644 index 00000000000000..35d7880d4ab275 --- /dev/null +++ b/src/coreclr/nativeaot/docs/rd-xml-format.md @@ -0,0 +1,185 @@ +Rd.xml File Format +================== + +The CoreRT ahead of time compiler discovers methods to compile and types to generate by compiling the application entry point and its transitive dependencies. The compiler may miss types if an application uses reflection. For more information about the problem see [Reflection in AOT mode](reflection-in-aot-mode.md). +An rd.xml file can be supplemented to help ILCompiler find types that should be analyzed. This file is similar but more limited than the rd.xml file used by .NET Native. + +Minimal Rd.xml configuration + +```xml + + + + + +``` + +ILCompiler supports 2 top level directives `Application` or `Library`. Right now both of them can be used interchangeably and just define area where actual assembly configuration happens. +You can put multiple `` tags inside the `` directive to configure each assembly individually. + +## Assembly directive + +There are 3 forms how assembly can be configured +- Module metadata only; +- All types; +- Module metadata and selected types. + +Module metadata only just need simple `` tag with short name of the assembly. +```xml + + + + + +``` + +All types in the assembly require adding `Dynamic` attribute with value `Required All`. *NOTE*: This is the only available value for this attribute. +```xml + + + + + +``` +Note that if you have generic types in the assembly, then specific instantiation would not be present in generated code, and if you need one to be included, +then you should include these instantiation using nested `` tag. + +Module metadata and selected types option based on module metadata only mode with added `` tags inside ``. +```xml + + + + + + + +``` + +## Types directives. +Type directive provides a way to specify what types are needed. Developer has two options here: +- Take all type methods; +- Select which methods should be rooted. + +Take all type methods: +```xml + +``` + +Example how specify typenames +```c# +// just int +System.Int32 +// string[] +System.String[] +// string[][] +System.String[][] +// string[,] +System.String[,] +// List +System.Collections.Generic.List`1[[System.Int32,System.Private.CoreLib]] +// Dictionary.KeyCollection - notice all the generic arguments go to the nested type +System.Collections.Generic.Dictionary`2+KeyCollection[[System.Int32,System.Private.CoreLib],[System.String,System.Private.CoreLib]] +``` + +Note that it likely does not make sense to have generic type to be placed here, since code generated over specific instantiation of the generic type. +Example of invalid scenario: +```c# +// List +System.Collections.Generic.List`1 +``` + +To select which methods should be rooted add nested `` tags. +```xml + + + + + + + + + +``` + +Alternatively you can specify optional `` tag, if you want only specific overload. For example: +```xml + + + + + + + + + + + +``` + +or if you want instantiate generic method you can pass ``. +```xml + + + + + + + + + + + +``` + +Take note that methods are distinguished by their method name and parameters. The return value's type is not used in the method signature. + +## Rooting structure marshalling data + +The `Type` directive additionally support a `MarshalStructure` attribute. The only supported value for `MarshalStructure` is `Required All`. Specifying `MarshalStructure="Required All"` will ensure struct marshalling data structures get pregenerated. + +This can fix code like: + +```csharp +using System; +using System.Runtime.InteropServices; + +Console.WriteLine(GetTypeSize(typeof(MyClass))); + +// This is in a separate method since the compiler would be able to analyze `Marshal.SizeOf(typeof(MyClass))`, +// but since a method call is involved, the compiler will lose track of the specific type. +static int GetTypeSize(Type t) => Marshal.SizeOf(t); + +[StructLayout(LayoutKind.Sequential)] +public class MyClass +{ + public string Field; +} +``` + +The above code would throw a "System.Runtime.InteropServices.MissingInteropDataException: MyClass is missing structure marshalling data. To enable structure marshalling data, add a MarshalStructure directive to the application rd.xml file.". To fix this exception, one would use following RD.XML: + +```xml + + + + + + + +``` + +## Rooting delegate marshalling data + +Similarly to the structure marshalling data above, the `Type` directive also supports a `MarshalDelegate` attribute. The only supported value for `MarshalDelegate` is `Required All`. Specifying `MarshalDelegate="Required All"` will ensure delegate marshalling data structures get pregenerated. + +```xml + + + + + + + +``` + +The above XML will force generation of delegate marshalling data for delegate type `MyDelegate` in assembly `repro`. diff --git a/src/coreclr/nativeaot/docs/reflection-free-mode.md b/src/coreclr/nativeaot/docs/reflection-free-mode.md new file mode 100644 index 00000000000000..6e3c003fb9be32 --- /dev/null +++ b/src/coreclr/nativeaot/docs/reflection-free-mode.md @@ -0,0 +1,94 @@ +# Reflection-free mode + +Reflection-free mode is a mode of the NativeAOT compiler and runtime that greatly reduces the functionality of the reflection APIs and brings a couple interesting benefits as a result. The benefits of this mode are: + +* Greatly reduced size of self contained deployments - a fully self-contained "Hello world" style app compiles to a 1 MB file (on x64) with _no dependencies_. +* Reduced working set and better code locality - parts of the program are more tightly packed together. +* Less metadata for people to reverese engineer - apps compiled in reflection-free mode are as hard to reverse engineer as apps written in e.g. C++. + +Of course the benefits come with a drawback: not all .NET code can work in such environment. In fact, most of the existing code probably won't. Use this mode with caution. + +To enable reflection-free mode in a project that is already using CoreRT, add the following property to a `PropertyGroup` in your project file: + +```xml + + true + +``` + +(More switches are documented in the [Optimizing NativeAOT](optimizing.md) document.) + +## What's different at compile time with reflection disabled + +When reflection is disabled, the AOT compiler stops emitting data structures that are required to make reflection work at runtime and stops enforcing policies that makes the code more reflection friendly. + +Think of: +* Names of methods, types, parameters are no longer generated into the executable. +* Additional metadata, like list of method parameter types, is no longer generated. +* The compiler no longer generates standalone method bodies that would be suitable for reflection invoke. +* Mapping tables that map method names to native code are no longer generated. +* The implementation of reflection is no longer compiled. + +## Reflection APIs that work in reflection-free mode + +Reflection-free mode **supports a limited set of reflection APIs** that keep their expected semantics. + +* `typeof(SomeType)` will return a `System.Type` that can be compared with results of other `typeof` expressions or results of `Object.GetType()` calls. The patterns commonly used in perf optimizations of generic code (e.g. `typeof(T) == typeof(byte)`) will work fine, and so will `obj.GetType() == typeof(SomeType)`. +* Following APIs on `System.Type` work: `TypeHandle`, `UnderlyingSystemType`, `BaseType`, `IsByRefLike`, `IsValueType`, `GetTypeCode`, `GetHashCode`, `GetElementType`, `GetInterfaces`, `HasElementType`, `IsArray`, `IsByRef`, `IsPointer`, `IsPrimitive`. +* `Activator.CreateInstance()` will work. The compiler statically analyzes and expands this to efficient code at compile time. No reflection is involved at runtime. +* `Assembly.GetExecutingAssembly()` will return a `System.Reflection.Assembly` that can be compared with other runtime `Assembly` instances. This is mostly to make it possible to use the `NativeLibrary.SetDllImportResolver` API. + +## Reflection APIs that are up for discussion + +We might be able to add support for the following APIs without sacrificing too much of the goals of the reflection-free mode: + +* `Enum.Parse` and `Enum.ToString`. These methods currently only work with integers (`ToString` returns an integer, and `Parse` can parse integers). Note that `Enum.GetValues` would still not work. +* Type names (`Type.Name`, `Type.Namespace`, `Type.FullName`): We could probably add this back if there's good use cases in an otherwise reflection-free mode. +* `Delegate.DynamicInvoke` can be made to work if there's a good use case too. + +## APIs that don't work and will not work + +* APIs that require dynamic code generation: `Reflection.Emit`, `Assembly.Load` and friends +* Obvious program introspection APIs: APIs on `Type` and `Assembly` not mentioned above, `MethodBase`, `MethodInfo`, `ConstructorInfo`, `FieldInfo`, `PropertyInfo`, `EventInfo`. These APIs will throw at runtime. +* APIs building on top of reflection APIs. Too many to enumerate. + +## Shimming + +Sometimes reflection is used in non-critical paths to retrieve type names. In reflection-free mode, accessing type names throws an exception. To help moving such code to reflection-free mode, we have an AppContext switch to generate fake names and namespaces for types. With this mode enabled, accessing the `Name` and `Namespace` property will not throw, but won't return the actual name either. + +To enable this mode, add following item to an `ItemGroup` in your project file: + +```xml + + + +``` + +To achieve similar result for when querying for ``Assembly`` (will instead give the ExecutingAssembly): + +```xml + + + +``` + +And here for CustomAttributes (will return an empty array): + + +```xml + + + +``` + +Note: + +To make ``NativeLibrary`` API, and on the same occasion``Socket``, to work, you'll need: + +```xml + + + + +``` + diff --git a/src/coreclr/nativeaot/docs/reflection-in-aot-mode.md b/src/coreclr/nativeaot/docs/reflection-in-aot-mode.md new file mode 100644 index 00000000000000..fd7cb34263b001 --- /dev/null +++ b/src/coreclr/nativeaot/docs/reflection-in-aot-mode.md @@ -0,0 +1,95 @@ +# Reflection in AOT mode # + +When .NET code is compiled ahead of time, a typical problem the ahead of time compiler faces is deciding what code to compile and what data structures to generate. + +For static languages such as C or C++, the problem of deciding what to include in the final executable is quite simple: one starts with including `main()` and establishing what other methods and data structures `main()` references. One then includes those references, the references of the references and so on, until there's no reference left to include. This concept is easy to understand and works great for languages like C or C++. Nice side effect of this approach is that the generated program is small. If the code doesn't call into e.g. the `printf` function, the `printf` function is not generated in the final executable. + +Problems with such approach start to show up on platforms that allow unconstrained reflection. Reflection is a mechanism .NET provides that allows developers to inspect the structure of the program at runtime and access/invoke types and their members. With unconstrained reflection, the definition of "program" includes "everything that one would have access to at the time of compiling the program". + +As a motivating example, consider this program: + +```csharp +class Program +{ + public static void Main() + { + Console.Write("Name of type: "); + string typeName = Console.ReadLine(); + + // Allow to exit the program peacefully + if (String.IsNullOrEmpty(typeName)) + return; + + Console.Write("Name of method: "); + string methodName = Console.ReadLine(); + + Type.GetType(typeName).GetMethod(methodName).Invoke(null, null); + } + + public static void SayHello() + { + Console.WriteLine("Hello!"); + } +} +``` + +The above program lets the user invoke any parameterless public static method on any type. For the naive compilation algorithm above, this program would work great for input strings `Program` and `Main` because the algorithm included method `Main` in the final executable. The program wouldn't work so great for inputs `Program` and `SayHello`†, because method `SayHello` wasn't called from anywhere. For the naive algorithm, the only way to fix the program for inputs `Program` and `SayHello` is to add a call to `SayHello` in `Main`. + +> † The behavior for `Type.GetMethod` on type `Program` and method `SayHello` would be to return `null` if `SayHello` wasn't compiled. The reason for this is that `Type.GetMethod` is documented to return `null` if there's no method with a given name, and for the purposes of the program, `SayHello` doesn't exist. The compiler could remember there used to be such method and write the information in the executable, but that would raise additional questions about whether the uncompiled method should be included in the list of methods returned from a `Type.GetMethods` call. + +While the example program above is not practical in reality, similar patterns exist in e.g. reflection based serialization and deserialization libraries that access members based on their names that could be literally downloaded from the internet. + +The dynamic nature of reflection doesn't pose a problem just for fully AOT .NET Runtimes. It's also a problem when tools such as [IL linker](https://github.com/dotnet/core/blob/master/samples/linker-instructions.md) are used to remove unnecessary code. The desire to remove unused code is stronger in fully AOT mode, since native code comes with a greater multiplicative factor (IL instructions are more compact than native instructions). + +## Solving reflection in full AOT mode ## + +The solution to reflection is about establishing what parts of the program can be reached dynamically and making sure their metadata and code is available at runtime. + +### Assume everything is accessed dynamically ### + +The compiler can simply assume that everything can be accessed dynamically. This means that everything will be compiled and available at runtime. This is the safest possible option, but results in big executables and long compilation times. "Everything" includes all of .NET Core framework code, including things like support for FTP or WCF. An app is unlikely to be relying on all of that. + +### Assume non-framework code is accessed dynamically ### + +The compiler can make an assumption that everything that is not part of .NET framework can be accessed dynamically. Unused parts of the framework will not be available for reflection, but real world programs rarely reflect on them. This option still produces executables that are pretty big (especially with many NuGet packages referenced), but their size is more practical. + +### Assume statically reachable code is accessed dynamically ### + +This is the algorithm we discussed above - only things that are reachable through the static callgraph will be available for reflection. + +### Assume code computed by static analysis is accessed dynamically ### + +The compiler can build insights into how reflection is used by analyzing the use of reflection APIs within the compiled program and using data flow analysis to see what elements are reflected on. This is effective for a lot of patterns (such as `typeof(Foo).GetMethod("Bar")`), but can also miss a lot of reflection use in practice. Currently, the .NET Native compiler used to build Universal Windows Apps can do this analysis. The CoreRT compiler is structured so that it can consume these inputs, but there's no component to provide them right now. + +### Assume nothing is accessed dynamically ### + +In NativeAOT, reflection metadata (names of types, list of their methods, fields, signatures, etc.) is _optional_. The NativeAOT runtime has its own minimal version of the metadata that represents the minimum required to execute managed code (think: base type and list of interfaces, offsets to GC pointers within an instance of the type, pointer to the finalizer, etc.). The metadata used by the reflection subsystem within the base class libraries is only used by the reflection stack and is not necessary to execute non-reflection code. For a .NET app that doesn't use reflection, the compiler can skip generating the reflection metadata completely. People who would like to totally minimize the size of their applications or obfuscate their code could be interested in this option, although not much existing real world code would be expected to work with this (including a lot of the framework code). + +## Providing hints to the compiler externally ## + +If compiler cannot detect types used by the aplication, an rd.xml file can be supplemented to help ILCompiler find types that should be analyzed. +For that, file `rd.xml` should be created and following lines added to project file +```xml + + + +``` + +Format of the file described [here](rd-xml-format.md) + +## Shimming + +Native AOT libraries have configuration settings (shims) that enable replacing some of frequently used reflection patterns that are incompatible with Native AOT with compatible equivalents that approximate their functionality, without changing the source code. The shim settings documented in this section are meant to be used as temporary unreliable workarounds until the permanent source code fix can be made. They are not guaranteed to make the application work correctly. + +### Simulated calling assembly + +`Assembly.GetCallingAssembly` is not supported in Native AOT and throws `PlatformNotSupportedException` by default. + +`Assembly.GetCallingAssembly` can be in certain situations simulated by `Assembly.GetEntryAssembly`. + +To enable simulated `Assembly.GetCallingAssembly`, you will need: + +```xml + + + diff --git a/src/coreclr/nativeaot/docs/troubleshooting.md b/src/coreclr/nativeaot/docs/troubleshooting.md new file mode 100644 index 00000000000000..07793b46a2323a --- /dev/null +++ b/src/coreclr/nativeaot/docs/troubleshooting.md @@ -0,0 +1,9 @@ +# Troubleshooting NativeAOT compiler + +Sometimes you want to have more information how CoreRT work. ILC Compiler provide couple switches for that: + +* `true`: Enable generation of metadata log. This class is CSV format with following structure: `Handle, Kind, Name, Children`. +* `true`: Generates log files `ProjectName.codegen.dgml.xml` and `ProjectName.scan.dgml.xml` in DGML format. +* `true`: Generates log files `ProjectName.map.xml` which describe layout of objects how CoreRT sees them. +* `true`: Perform compilation on single thread. +* `true`: Dump IL for method bodies the compiler generated on the fly into `ProjectName.il`. This can be helpful when debugging IL generation - e.g. marshalling. The compiler maps debug information to this file, so it's possible to step in it and set breakpoints. diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h index db22c68fde053a..6c25d6c769ca35 100644 --- a/src/coreclr/pal/inc/pal.h +++ b/src/coreclr/pal/inc/pal.h @@ -4222,6 +4222,7 @@ PALIMPORT double __cdecl sinh(double); PALIMPORT double __cdecl sqrt(double); PALIMPORT double __cdecl tan(double); PALIMPORT double __cdecl tanh(double); +PALIMPORT double __cdecl trunc(double); PALIMPORT int __cdecl _finitef(float); PALIMPORT int __cdecl _isnanf(float); @@ -4254,6 +4255,7 @@ PALIMPORT float __cdecl sinhf(float); PALIMPORT float __cdecl sqrtf(float); PALIMPORT float __cdecl tanf(float); PALIMPORT float __cdecl tanhf(float); +PALIMPORT float __cdecl truncf(float); #endif // !PAL_STDCPP_COMPAT #ifndef PAL_STDCPP_COMPAT diff --git a/src/coreclr/pal/src/include/pal/palinternal.h b/src/coreclr/pal/src/include/pal/palinternal.h index ff3703c6ae4f7f..e9c4129f1798c0 100644 --- a/src/coreclr/pal/src/include/pal/palinternal.h +++ b/src/coreclr/pal/src/include/pal/palinternal.h @@ -221,6 +221,7 @@ function_name() to call the system's implementation #define sqrt DUMMY_sqrt #define tan DUMMY_tan #define tanh DUMMY_tanh +#define trunc DUMMY_trunc #define ceilf DUMMY_ceilf #define cosf DUMMY_cosf #define coshf DUMMY_coshf @@ -233,6 +234,7 @@ function_name() to call the system's implementation #define sqrtf DUMMY_sqrtf #define tanf DUMMY_tanf #define tanhf DUMMY_tanhf +#define truncf DUMMY_truncf /* RAND_MAX needed to be renamed to avoid duplicate definition when including stdlib.h header files. PAL_RAND_MAX should have the same value as RAND_MAX @@ -464,6 +466,7 @@ function_name() to call the system's implementation #undef sqrt #undef tan #undef tanh +#undef trunc #undef acosf #undef acoshf #undef asinf @@ -492,6 +495,7 @@ function_name() to call the system's implementation #undef sqrtf #undef tanf #undef tanhf +#undef truncf #undef rand #undef srand #undef errno diff --git a/src/coreclr/scripts/genRuntimeEventSources.py b/src/coreclr/scripts/genRuntimeEventSources.py index af3b340801f877..1279d7effe3a1b 100644 --- a/src/coreclr/scripts/genRuntimeEventSources.py +++ b/src/coreclr/scripts/genRuntimeEventSources.py @@ -400,7 +400,7 @@ def generateEventSources(manifestFullPath, intermediatesDirFullPath, runtimeFlav decreaseTabLevel() writeOutput(outputFile, "}\n") decreaseTabLevel() - writeOutput(outputFile, "}") + writeOutput(outputFile, "}\n") def main(argv): diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoHelpFunc.cs b/src/coreclr/tools/Common/JitInterface/CorInfoHelpFunc.cs index 6d8a5ec684f523..0e5f836ff21102 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoHelpFunc.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoHelpFunc.cs @@ -295,6 +295,14 @@ which is the right helper to use to allocate an object of a given type. */ CORINFO_HELP_STACK_PROBE, // Probes each page of the allocated stack frame + CORINFO_HELP_PATCHPOINT, // Notify runtime that code has reached a patchpoint + CORINFO_HELP_CLASSPROFILE32, // Update 32-bit class profile for a call site + CORINFO_HELP_CLASSPROFILE64, // Update 64-bit class profile for a call site + CORINFO_HELP_PARTIAL_COMPILATION_PATCHPOINT, // Notify runtime that code has reached a part of the method that wasn't originally jitted. + + CORINFO_HELP_VALIDATE_INDIRECT_CALL, // CFG: Validate function pointer + CORINFO_HELP_DISPATCH_INDIRECT_CALL, // CFG: Validate and dispatch to pointer + CORINFO_HELP_COUNT, } } diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs index 3e348263103855..6274c55c859968 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs @@ -1324,7 +1324,7 @@ public enum CorJitFlag : uint CORJIT_FLAG_DEBUG_EnC = 3, // We are in Edit-n-Continue mode CORJIT_FLAG_DEBUG_INFO = 4, // generate line and local-var info CORJIT_FLAG_MIN_OPT = 5, // disable all jit optimizations (not necesarily debuggable code) - CORJIT_FLAG_UNUSED1 = 6, + CORJIT_FLAG_ENABLE_CFG = 6, // generate CFG enabled code CORJIT_FLAG_MCJIT_BACKGROUND = 7, // Calling from multicore JIT background thread, do not call JitComplete CORJIT_FLAG_UNUSED2 = 8, CORJIT_FLAG_UNUSED3 = 9, diff --git a/src/coreclr/tools/Common/TypeSystem/Common/NotFoundBehavior.cs b/src/coreclr/tools/Common/TypeSystem/Common/NotFoundBehavior.cs index 1403bb8e0863e6..d84d2dca1936e6 100644 --- a/src/coreclr/tools/Common/TypeSystem/Common/NotFoundBehavior.cs +++ b/src/coreclr/tools/Common/TypeSystem/Common/NotFoundBehavior.cs @@ -9,4 +9,4 @@ public enum NotFoundBehavior ReturnNull, ReturnResolutionFailure } -} \ No newline at end of file +} diff --git a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs index e9a889f8233e10..4c11c0570637dc 100644 --- a/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs +++ b/src/coreclr/tools/Common/TypeSystem/Interop/IL/MarshalHelpers.cs @@ -872,26 +872,28 @@ private static MarshallerKind GetArrayElementMarshallerKind( internal static MarshallerKind GetDisabledMarshallerKind( TypeDesc type) { - if (type.Category == TypeFlags.Void) + // Get the underlying type for enum types. + TypeDesc underlyingType = type.UnderlyingType; + if (underlyingType.Category == TypeFlags.Void) { return MarshallerKind.VoidReturn; } - else if (type.IsByRef) + else if (underlyingType.IsByRef) { // Managed refs are not supported when runtime marshalling is disabled. return MarshallerKind.Invalid; } - else if (type.IsPrimitive) + else if (underlyingType.IsPrimitive) { return MarshallerKind.BlittableValue; } - else if (type.IsPointer || type.IsFunctionPointer) + else if (underlyingType.IsPointer || underlyingType.IsFunctionPointer) { return MarshallerKind.BlittableValue; } - else if (type.IsValueType) + else if (underlyingType.IsValueType) { - var defType = (DefType)type; + var defType = (DefType)underlyingType; if (!defType.ContainsGCPointers && !defType.IsAutoLayoutOrHasAutoLayoutFields) { return MarshallerKind.BlittableValue; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs index 39a6bf3490beb0..beba5d59dc8528 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/CompilerTypeSystemContext.BoxedTypes.cs @@ -278,7 +278,7 @@ public BoxedValueType(ModuleDesc owningModule, MetadataType valuetype) { // BoxedValueType has the same genericness as the valuetype it's wrapping. // Making BoxedValueType wrap the genericness (and be itself nongeneric) would - // require a crazy name mangling scheme to allow generating stable and unique names + // require a name mangling scheme to allow generating stable and unique names // for the wrappers. Debug.Assert(valuetype.IsTypeDefinition); @@ -390,7 +390,7 @@ public GenericUnboxingThunk(BoxedValueType owningType, MethodDesc targetMethod) { Debug.Assert(targetMethod.OwningType.IsValueType); Debug.Assert(!targetMethod.Signature.IsStatic); - + _owningType = owningType; _targetMethod = targetMethod; _nakedTargetMethod = new ValueTypeInstanceMethodWithHiddenParameter(targetMethod); @@ -574,7 +574,7 @@ public ValueTypeInstanceMethodWithHiddenParameter(MethodDesc methodRepresented) { Debug.Assert(methodRepresented.OwningType.IsValueType); Debug.Assert(!methodRepresented.Signature.IsStatic); - + _methodRepresented = methodRepresented; } diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ExternSymbolNode.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ExternSymbolNode.cs index 8f0e239fc1fb67..721e983ef56401 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ExternSymbolNode.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ExternSymbolNode.cs @@ -14,22 +14,24 @@ namespace ILCompiler.DependencyAnalysis /// Represents a symbol that is defined externally and statically linked to the output obj file. /// public class ExternSymbolNode : SortableDependencyNode, ISortableSymbolNode - { - private Utf8String _name; + { + private readonly Utf8String _name; + private readonly bool _isIndirection; - public ExternSymbolNode(Utf8String name) + public ExternSymbolNode(Utf8String name, bool isIndirection = false) { _name = name; + _isIndirection = isIndirection; } - protected override string GetName(NodeFactory factory) => $"ExternSymbol {_name.ToString()}"; + protected override string GetName(NodeFactory factory) => $"ExternSymbol {_name.ToString()}{(_isIndirection ? " (indirected)" : "")}"; public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb) { sb.Append(_name); } public int Offset => 0; - public virtual bool RepresentsIndirectionCell => false; + public virtual bool RepresentsIndirectionCell => _isIndirection; public override bool InterestingForDynamicDependencyAnalysis => false; public override bool HasDynamicDependencies => false; diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/NodeFactory.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/NodeFactory.cs index 67469a0f55cc68..24b45f2f1c7ed2 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/NodeFactory.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/NodeFactory.cs @@ -245,6 +245,10 @@ private void CreateNodeCaches() { return new ExternSymbolNode(name); }); + _externIndirectSymbols = new NodeCache((string name) => + { + return new ExternSymbolNode(name, isIndirection: true); + }); _pInvokeModuleFixups = new NodeCache((PInvokeModuleData moduleData) => { @@ -741,6 +745,13 @@ public ISortableSymbolNode ExternSymbol(string name) return _externSymbols.GetOrAdd(name); } + private NodeCache _externIndirectSymbols; + + public ISortableSymbolNode ExternIndirectSymbol(string name) + { + return _externIndirectSymbols.GetOrAdd(name); + } + private NodeCache _pInvokeModuleFixups; public ISymbolNode PInvokeModuleFixup(PInvokeModuleData moduleData) diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs index 5462b8fedc11ba..18e9e2b90221e7 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/ObjectWriter.cs @@ -795,7 +795,7 @@ public int EmitSymbolReference(ISymbolNode target, int delta, RelocType relocTyp // For now consider all method symbols address taken. // We could restrict this in the future to those that are referenced from // reflection tables, EH tables, were actually address taken in code, or are referenced from vtables. - if ((_options & ObjectWritingOptions.ControlFlowGuard) != 0 && target is IMethodNode) + if ((_options & ObjectWritingOptions.ControlFlowGuard) != 0 && (target is IMethodNode || target is AssemblyStubNode)) { flags |= SymbolRefFlags.AddressTakenFunction; } diff --git a/src/coreclr/tools/aot/ILCompiler.RyuJit/Compiler/RyuJitCompilationBuilder.cs b/src/coreclr/tools/aot/ILCompiler.RyuJit/Compiler/RyuJitCompilationBuilder.cs index bc29c680363f04..9f6f6eb400e33d 100644 --- a/src/coreclr/tools/aot/ILCompiler.RyuJit/Compiler/RyuJitCompilationBuilder.cs +++ b/src/coreclr/tools/aot/ILCompiler.RyuJit/Compiler/RyuJitCompilationBuilder.cs @@ -115,7 +115,10 @@ public override ICompilation ToCompilation() options |= RyuJitCompilationOptions.MethodBodyFolding; if ((_mitigationOptions & SecurityMitigationOptions.ControlFlowGuardAnnotations) != 0) + { + jitFlagBuilder.Add(CorJitFlag.CORJIT_FLAG_ENABLE_CFG); options |= RyuJitCompilationOptions.ControlFlowGuardAnnotations; + } if (_useDwarf5) options |= RyuJitCompilationOptions.UseDwarf5; diff --git a/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs b/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs index 4706aaa7f7901c..00c3ff26cf0762 100644 --- a/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs +++ b/src/coreclr/tools/aot/ILCompiler.RyuJit/JitInterface/CorInfoImpl.RyuJit.cs @@ -692,6 +692,11 @@ private ISymbolNode GetHelperFtnUncached(CorInfoHelpFunc ftnNum) id = ReadyToRunHelper.GetCurrentManagedThreadId; break; + case CorInfoHelpFunc.CORINFO_HELP_VALIDATE_INDIRECT_CALL: + return _compilation.NodeFactory.ExternIndirectSymbol("__guard_check_icall_fptr"); + case CorInfoHelpFunc.CORINFO_HELP_DISPATCH_INDIRECT_CALL: + return _compilation.NodeFactory.ExternIndirectSymbol("__guard_dispatch_icall_fptr"); + default: throw new NotImplementedException(ftnNum.ToString()); } diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj b/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj index 6c5a4a6d377d85..52845889902af5 100644 --- a/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj +++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj @@ -1,126 +1,7 @@  - ilc - true - Exe - $(NetCoreAppToolCurrent) - 8002,NU1701 - x64;x86 - AnyCPU - false - true - $(RuntimeBinDir)ilc - true - false - Debug;Release;Checked - true - true - false + $(RuntimeBinDir)ilc/ + $(OutputRid) - - - true - false - $(ToolsRID) - - - - osx.10.12-x64 - osx.11.0-arm64 - $(RuntimeIdentifier) - - $(runtimelinuxarm64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimelinuxx64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimelinuxmuslarm64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimewinarm64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimewinx64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimeosx110arm64MicrosoftNETCoreRuntimeObjWriterVersion) - $(runtimeosx1012x64MicrosoftNETCoreRuntimeObjWriterVersion) - - - true - - - - - - - $(ObjWriterVersion) - - - - PreserveNewest - false - false - - - - - - PreserveNewest - false - false - - - - PreserveNewest - false - false - - - - PreserveNewest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - Internal.CommandLine.Strings - - - - - - - - - unix - win - $(TargetOSComponent)_$(TargetArchitecture)_$(TargetArchitecture) - - - - - - - + diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler.props b/src/coreclr/tools/aot/ILCompiler/ILCompiler.props new file mode 100644 index 00000000000000..936823572cb95c --- /dev/null +++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler.props @@ -0,0 +1,138 @@ + + + ilc + true + Exe + $(NetCoreAppToolCurrent) + 8002,NU1701 + x64;x86 + AnyCPU + false + true + true + false + Debug;Release;Checked + true + false + + + + true + false + true + + + + + <_objWriterRidPlatformIndex>$(RuntimeIdentifier.LastIndexOf('-')) + $(RuntimeIdentifier.Substring(0, $(_objWriterRidPlatformIndex))) + $(RuntimeIdentifier.Substring($(_objWriterRidPlatformIndex)).TrimStart('-')) + + + linux + + + osx.10.12 + osx.11.0 + + $(ObjWriterRidWithoutPlatform)-$(ObjWriterRidPlatform) + + $(runtimelinuxarm64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimelinuxx64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimelinuxmuslarm64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimewinarm64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimewinx64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimeosx110arm64MicrosoftNETCoreRuntimeObjWriterVersion) + $(runtimeosx1012x64MicrosoftNETCoreRuntimeObjWriterVersion) + + + true + + + + + + + $(ObjWriterVersion) + + + + PreserveNewest + false + false + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + Internal.CommandLine.Strings + + + + + + + + + unix + win + unix_osx + + $(TargetArchitecture) + $(CrossHostArch) + arm + + $(TargetArchitecture) + arm + + $(TargetOSComponent)_$(TargetArchitectureForLocalJitBuild)_$(TargetArchitectureForSharedLibraries) + + $(LibPrefix)jitinterface_$(TargetArchitectureForSharedLibraries)$(LibSuffix) + + + + + + + + diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler_crossarch.csproj b/src/coreclr/tools/aot/ILCompiler/ILCompiler_crossarch.csproj new file mode 100644 index 00000000000000..9ed97b693e6dd1 --- /dev/null +++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler_crossarch.csproj @@ -0,0 +1,8 @@ + + + $(BuildArchitecture) + $(RuntimeBinDir)/$(CrossHostArch)/ilc/ + $(ToolsRID) + + + diff --git a/src/coreclr/tools/aot/crossgen2/crossgen2_crossarch.csproj b/src/coreclr/tools/aot/crossgen2/crossgen2_crossarch.csproj index ccea99b3211c1a..544b4271117b5f 100644 --- a/src/coreclr/tools/aot/crossgen2/crossgen2_crossarch.csproj +++ b/src/coreclr/tools/aot/crossgen2/crossgen2_crossarch.csproj @@ -1,6 +1,6 @@ - x64 + $(BuildArchitecture) $(RuntimeBinDir)/$(CrossHostArch)/crossgen2 false diff --git a/src/coreclr/vm/amd64/JitHelpers_Fast.asm b/src/coreclr/vm/amd64/JitHelpers_Fast.asm index 219597eb350c2f..0060ff036d3b0a 100644 --- a/src/coreclr/vm/amd64/JitHelpers_Fast.asm +++ b/src/coreclr/vm/amd64/JitHelpers_Fast.asm @@ -436,4 +436,17 @@ ProbeLoop: LEAF_END_MARKED JIT_StackProbe, _TEXT +LEAF_ENTRY JIT_ValidateIndirectCall, _TEXT + ret +LEAF_END JIT_ValidateIndirectCall, _TEXT + +LEAF_ENTRY JIT_DispatchIndirectCall, _TEXT +ifdef _DEBUG + mov r10, 0CDCDCDCDCDCDCDCDh ; The real helper clobbers these registers, so clobber them too in the fake helper + mov r11, 0CDCDCDCDCDCDCDCDh +endif + rexw jmp rax +LEAF_END JIT_DispatchIndirectCall, _TEXT + + end diff --git a/src/coreclr/vm/amd64/jithelpers_fast.S b/src/coreclr/vm/amd64/jithelpers_fast.S index 8109886d0c9696..63167ae2ae0d85 100644 --- a/src/coreclr/vm/amd64/jithelpers_fast.S +++ b/src/coreclr/vm/amd64/jithelpers_fast.S @@ -447,3 +447,13 @@ LOCAL_LABEL(ProbeLoop): ret LEAF_END_MARKED JIT_StackProbe, _TEXT + +LEAF_ENTRY JIT_ValidateIndirectCall, _TEST + ret +LEAF_END JIT_ValidateIndirectCall, _TEST + +LEAF_ENTRY JIT_DispatchIndirectCall, _TEST + movabs r10, 0xCDCDCDCDCDCDCDCD // The real helper clobbers these registers, so clobber them too in the fake helper + movabs r11, 0xCDCDCDCDCDCDCDCD + rex64 jmp rax +LEAF_END JIT_DispatchIndirectCall, _TEST diff --git a/src/coreclr/vm/appdomainnative.cpp b/src/coreclr/vm/appdomainnative.cpp index cafda33dd69e0c..49374e80767e6b 100644 --- a/src/coreclr/vm/appdomainnative.cpp +++ b/src/coreclr/vm/appdomainnative.cpp @@ -16,7 +16,7 @@ using namespace clr::fs; // static -extern "C" void QCALLTYPE AppDomain_CreateDynamicAssembly(QCall::ObjectHandleOnStack assemblyName, QCall::StackCrawlMarkHandle stackMark, INT32 access, QCall::ObjectHandleOnStack assemblyLoadContext, QCall::ObjectHandleOnStack retAssembly) +extern "C" void QCALLTYPE AppDomain_CreateDynamicAssembly(QCall::ObjectHandleOnStack assemblyName, INT32 access, QCall::ObjectHandleOnStack assemblyLoadContext, QCall::ObjectHandleOnStack retAssembly) { QCALL_CONTRACT; @@ -36,16 +36,14 @@ extern "C" void QCALLTYPE AppDomain_CreateDynamicAssembly(QCall::ObjectHandleOnS args.loaderAllocator = NULL; args.access = access; - args.stackMark = stackMark; Assembly* pAssembly = nullptr; AssemblyBinder* pBinder = nullptr; - if (assemblyLoadContext.Get() != NULL) - { - INT_PTR nativeAssemblyBinder = ((ASSEMBLYLOADCONTEXTREF)assemblyLoadContext.Get())->GetNativeAssemblyBinder(); - pBinder = reinterpret_cast(nativeAssemblyBinder); - } + _ASSERTE(assemblyLoadContext.Get() != NULL); + + INT_PTR nativeAssemblyBinder = ((ASSEMBLYLOADCONTEXTREF)assemblyLoadContext.Get())->GetNativeAssemblyBinder(); + pBinder = reinterpret_cast(nativeAssemblyBinder); pAssembly = Assembly::CreateDynamic(GetAppDomain(), pBinder, &args); diff --git a/src/coreclr/vm/appdomainnative.hpp b/src/coreclr/vm/appdomainnative.hpp index 4e3b114be30b1e..8bc9f753a63387 100644 --- a/src/coreclr/vm/appdomainnative.hpp +++ b/src/coreclr/vm/appdomainnative.hpp @@ -23,6 +23,6 @@ class AppDomainNative static FCDECL1(Object*, GetOrInternString, StringObject* pStringUNSAFE); static FCDECL1(Object*, IsStringInterned, StringObject* pString); }; -extern "C" void QCALLTYPE AppDomain_CreateDynamicAssembly(QCall::ObjectHandleOnStack assemblyName, QCall::StackCrawlMarkHandle stackMark, INT32 access, QCall::ObjectHandleOnStack assemblyLoadContext, QCall::ObjectHandleOnStack retAssembly); +extern "C" void QCALLTYPE AppDomain_CreateDynamicAssembly(QCall::ObjectHandleOnStack assemblyName, INT32 access, QCall::ObjectHandleOnStack assemblyLoadContext, QCall::ObjectHandleOnStack retAssembly); #endif diff --git a/src/coreclr/vm/arm64/asmhelpers.S b/src/coreclr/vm/arm64/asmhelpers.S index e7725cd16e63b6..941af8f3d00cae 100644 --- a/src/coreclr/vm/arm64/asmhelpers.S +++ b/src/coreclr/vm/arm64/asmhelpers.S @@ -1020,3 +1020,11 @@ NESTED_ENTRY OnCallCountThresholdReachedStub, _TEXT, NoHandler NESTED_END OnCallCountThresholdReachedStub, _TEXT #endif // FEATURE_TIERED_COMPILATION + +LEAF_ENTRY JIT_ValidateIndirectCall, _TEXT + ret lr +LEAF_END JIT_ValidateIndirectCall, _TEXT + +LEAF_ENTRY JIT_DispatchIndirectCall, _TEXT + br x15 +LEAF_END JIT_DispatchIndirectCall, _TEXT diff --git a/src/coreclr/vm/arm64/asmhelpers.asm b/src/coreclr/vm/arm64/asmhelpers.asm index 6bbdef2c2d936b..d73b8f5ff6ff7d 100644 --- a/src/coreclr/vm/arm64/asmhelpers.asm +++ b/src/coreclr/vm/arm64/asmhelpers.asm @@ -1435,5 +1435,13 @@ __HelperNakedFuncName SETS "$helper":CC:"Naked" #endif ; FEATURE_TIERED_COMPILATION + LEAF_ENTRY JIT_ValidateIndirectCall + ret lr + LEAF_END + + LEAF_ENTRY JIT_DispatchIndirectCall + br x15 + LEAF_END + ; Must be at very end of file END diff --git a/src/coreclr/vm/assembly.cpp b/src/coreclr/vm/assembly.cpp index 83840af5b51387..70dc1da724298e 100644 --- a/src/coreclr/vm/assembly.cpp +++ b/src/coreclr/vm/assembly.cpp @@ -393,15 +393,6 @@ Assembly *Assembly::CreateDynamic(AppDomain *pDomain, AssemblyBinder* pBinder, C Assembly *pRetVal = NULL; - MethodDesc *pmdEmitter = SystemDomain::GetCallersMethod(args->stackMark); - - // Called either from interop or async delegate invocation. Rejecting because we don't - // know how to set the correct permission on the new dynamic assembly. - if (!pmdEmitter) - COMPlusThrow(kInvalidOperationException); - - Assembly *pCallerAssembly = pmdEmitter->GetAssembly(); - // First, we set up a pseudo-manifest file for the assembly. // Set up the assembly name @@ -510,48 +501,10 @@ Assembly *Assembly::CreateDynamic(AppDomain *pDomain, AssemblyBinder* pBinder, C IfFailThrow(pAssemblyEmit->DefineAssembly(publicKey, publicKey.GetSize(), ulHashAlgId, name, &assemData, dwFlags, &ma)); - pPEAssembly = PEAssembly::Create(pCallerAssembly->GetPEAssembly(), pAssemblyEmit); - - AssemblyBinder* pFallbackBinder = pBinder; - - // If ALC is not specified - if (pFallbackBinder == nullptr) - { - // Dynamically created modules (aka RefEmit assemblies) do not have a LoadContext associated with them since they are not bound - // using an actual binder. As a result, we will assume the same binding/loadcontext information for the dynamic assembly as its - // caller/creator to ensure that any assembly loads triggered by the dynamic assembly are resolved using the intended load context. - // - // If the creator assembly has a HostAssembly associated with it, then use it for binding. Otherwise, the creator is dynamic - // and will have a fallback load context binder associated with it. - - // There is always a manifest file - wehther working with static or dynamic assemblies. - PEAssembly* pCallerAssemblyManifestFile = pCallerAssembly->GetPEAssembly(); - _ASSERTE(pCallerAssemblyManifestFile != NULL); - - if (!pCallerAssemblyManifestFile->IsDynamic()) - { - // Static assemblies with do not have fallback load context - _ASSERTE(pCallerAssemblyManifestFile->GetFallbackBinder() == nullptr); - - // Fetch the binder from the host assembly - PTR_BINDER_SPACE_Assembly pCallerAssemblyHostAssembly = pCallerAssemblyManifestFile->GetHostAssembly(); - _ASSERTE(pCallerAssemblyHostAssembly != nullptr); - - pFallbackBinder = pCallerAssemblyHostAssembly->GetBinder(); - } - else - { - // Creator assembly is dynamic too, so use its fallback load context for the one - // we are creating. - pFallbackBinder = pCallerAssemblyManifestFile->GetFallbackBinder(); - } - } - - // At this point, we should have a fallback load context binder to work with - _ASSERTE(pFallbackBinder != nullptr); + pPEAssembly = PEAssembly::Create(pAssemblyEmit); // Set it as the fallback load context binder for the dynamic assembly being created - pPEAssembly->SetFallbackBinder(pFallbackBinder); + pPEAssembly->SetFallbackBinder(pBinder); } NewHolder pDomainAssembly; @@ -620,8 +573,6 @@ Assembly *Assembly::CreateDynamic(AppDomain *pDomain, AssemblyBinder* pBinder, C pAssem = Assembly::Create(pDomain, pPEAssembly, pDomainAssembly->GetDebuggerInfoBits(), pLoaderAllocator->IsCollectible(), pamTracker, pLoaderAllocator); ReflectionModule* pModule = (ReflectionModule*) pAssem->GetModule(); - pModule->SetCreatingAssembly( pCallerAssembly ); - if (createdNewAssemblyLoaderAllocator) { diff --git a/src/coreclr/vm/assembly.hpp b/src/coreclr/vm/assembly.hpp index 8c72128f3e4f6c..9da7d368b52021 100644 --- a/src/coreclr/vm/assembly.hpp +++ b/src/coreclr/vm/assembly.hpp @@ -53,7 +53,6 @@ struct CreateDynamicAssemblyArgsGC struct CreateDynamicAssemblyArgs : CreateDynamicAssemblyArgsGC { INT32 access; - StackCrawlMark* stackMark; }; // An assembly is the unit of deployment for managed code. diff --git a/src/coreclr/vm/assemblynative.cpp b/src/coreclr/vm/assemblynative.cpp index dba5110590717c..b2663d4b310cba 100644 --- a/src/coreclr/vm/assemblynative.cpp +++ b/src/coreclr/vm/assemblynative.cpp @@ -142,7 +142,6 @@ Assembly* AssemblyNative::LoadFromPEImage(AssemblyBinder* pBinder, PEImage *pIma // Set the caller's assembly to be CoreLib DomainAssembly *pCallersAssembly = SystemDomain::System()->SystemAssembly()->GetDomainAssembly(); - PEAssembly *pParentAssembly = pCallersAssembly->GetPEAssembly(); // Initialize the AssemblySpec AssemblySpec spec; @@ -168,7 +167,7 @@ Assembly* AssemblyNative::LoadFromPEImage(AssemblyBinder* pBinder, PEImage *pIma COMPlusThrowHR(COR_E_FILELOAD, dwMessageID, name); } - PEAssemblyHolder pPEAssembly(PEAssembly::Open(pParentAssembly, pAssembly->GetPEImage(), pAssembly)); + PEAssemblyHolder pPEAssembly(PEAssembly::Open(pAssembly->GetPEImage(), pAssembly)); bindOperation.SetResult(pPEAssembly.GetValue()); DomainAssembly *pDomainAssembly = pCurDomain->LoadDomainAssembly(&spec, pPEAssembly, FILE_LOADED); diff --git a/src/coreclr/vm/ceeload.cpp b/src/coreclr/vm/ceeload.cpp index 5344eb22dc9144..3349107bdf5ca6 100644 --- a/src/coreclr/vm/ceeload.cpp +++ b/src/coreclr/vm/ceeload.cpp @@ -6925,7 +6925,6 @@ ReflectionModule::ReflectionModule(Assembly *pAssembly, mdFile token, PEAssembly m_pInMemoryWriter = NULL; m_sdataSection = NULL; - m_pCreatingAssembly = NULL; m_pCeeFileGen = NULL; m_pDynamicMetadata = NULL; } diff --git a/src/coreclr/vm/ceeload.h b/src/coreclr/vm/ceeload.h index a97be226fb9fba..9c2adf378c866f 100644 --- a/src/coreclr/vm/ceeload.h +++ b/src/coreclr/vm/ceeload.h @@ -2174,7 +2174,6 @@ class ReflectionModule : public Module protected: ICeeGenInternal * m_pCeeFileGen; private: - Assembly *m_pCreatingAssembly; RefClassWriter *m_pInMemoryWriter; @@ -2211,20 +2210,6 @@ class ReflectionModule : public Module virtual TADDR GetIL(RVA target); virtual PTR_VOID GetRvaField(RVA rva); - Assembly* GetCreatingAssembly( void ) - { - LIMITED_METHOD_CONTRACT; - - return m_pCreatingAssembly; - } - - void SetCreatingAssembly( Assembly* assembly ) - { - LIMITED_METHOD_CONTRACT; - - m_pCreatingAssembly = assembly; - } - ICeeGenInternal *GetCeeGen() {LIMITED_METHOD_CONTRACT; return m_pCeeFileGen; } RefClassWriter *GetClassWriter() diff --git a/src/coreclr/vm/codeman.cpp b/src/coreclr/vm/codeman.cpp index fe68c6a0f0d175..633c135b60a95e 100644 --- a/src/coreclr/vm/codeman.cpp +++ b/src/coreclr/vm/codeman.cpp @@ -1731,9 +1731,10 @@ CORINFO_OS getClrVmOs(); // is used to help understand problems we see with JIT loading that come in via Watson dumps. Since we don't throw // an exception immediately upon failure, we can lose information about what the failure was if we don't store this // information in a way that persists into a process dump. +// targetOs - Target OS for JIT // -static void LoadAndInitializeJIT(LPCWSTR pwzJitName, OUT HINSTANCE* phJit, OUT ICorJitCompiler** ppICorJitCompiler, IN OUT JIT_LOAD_DATA* pJitLoadData) +static void LoadAndInitializeJIT(LPCWSTR pwzJitName, OUT HINSTANCE* phJit, OUT ICorJitCompiler** ppICorJitCompiler, IN OUT JIT_LOAD_DATA* pJitLoadData, CORINFO_OS targetOs) { STANDARD_VM_CONTRACT; @@ -1823,7 +1824,7 @@ static void LoadAndInitializeJIT(LPCWSTR pwzJitName, OUT HINSTANCE* phJit, OUT I pJitLoadData->jld_status = JIT_LOAD_STATUS_DONE_VERSION_CHECK; // Specify to the JIT that it is working with the OS that we are compiled against - pICorJitCompiler->setTargetOS(getClrVmOs()); + pICorJitCompiler->setTargetOS(targetOs); // The JIT has loaded and passed the version identifier test, so publish the JIT interface to the caller. *ppICorJitCompiler = pICorJitCompiler; @@ -1907,7 +1908,7 @@ BOOL EEJitManager::LoadJIT() #endif g_JitLoadData.jld_id = JIT_LOAD_MAIN; - LoadAndInitializeJIT(ExecutionManager::GetJitName(), &m_JITCompiler, &newJitCompiler, &g_JitLoadData); + LoadAndInitializeJIT(ExecutionManager::GetJitName(), &m_JITCompiler, &newJitCompiler, &g_JitLoadData, getClrVmOs()); #endif // !FEATURE_MERGE_JIT_AND_ENGINE #ifdef ALLOW_SXS_JIT @@ -1938,26 +1939,47 @@ BOOL EEJitManager::LoadJIT() altJitName = MAKEDLLNAME_W(W("clrjit_win_x86_x86")); #elif defined(TARGET_AMD64) altJitName = MAKEDLLNAME_W(W("clrjit_win_x64_x64")); -#elif defined(TARGET_ARM) - altJitName = MAKEDLLNAME_W(W("clrjit_win_arm_arm")); -#elif defined(TARGET_ARM64) - altJitName = MAKEDLLNAME_W(W("clrjit_win_arm64_arm64")); #endif #else // TARGET_WINDOWS #ifdef TARGET_X86 altJitName = MAKEDLLNAME_W(W("clrjit_unix_x86_x86")); #elif defined(TARGET_AMD64) altJitName = MAKEDLLNAME_W(W("clrjit_unix_x64_x64")); -#elif defined(TARGET_ARM) - altJitName = MAKEDLLNAME_W(W("clrjit_unix_arm_arm")); -#elif defined(TARGET_ARM64) - altJitName = MAKEDLLNAME_W(W("clrjit_unix_arm64_arm64")); #endif #endif // TARGET_WINDOWS + +#if defined(TARGET_ARM) + altJitName = MAKEDLLNAME_W(W("clrjit_universal_arm_arm")); +#elif defined(TARGET_ARM64) + altJitName = MAKEDLLNAME_W(W("clrjit_universal_arm64_arm64")); +#endif // TARGET_ARM } + CORINFO_OS targetOs = getClrVmOs(); + LPWSTR altJitOsConfig; + IfFailThrow(CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_AltJitOs, &altJitOsConfig)); + if (altJitOsConfig != NULL) + { + // We have some inconsistency all over the place with osx vs macos, let's handle both here + if ((_wcsicmp(altJitOsConfig, W("macos")) == 0) || (_wcsicmp(altJitOsConfig, W("osx")) == 0)) + { + targetOs = CORINFO_MACOS; + } + else if ((_wcsicmp(altJitOsConfig, W("linux")) == 0) || (_wcsicmp(altJitOsConfig, W("unix")) == 0)) + { + targetOs = CORINFO_UNIX; + } + else if (_wcsicmp(altJitOsConfig, W("windows")) == 0) + { + targetOs = CORINFO_WINNT; + } + else + { + _ASSERTE(!"Unknown AltJitOS, it has to be either Windows, Linux or macOS"); + } + } g_JitLoadData.jld_id = JIT_LOAD_ALTJIT; - LoadAndInitializeJIT(altJitName, &m_AltJITCompiler, &newAltJitCompiler, &g_JitLoadData); + LoadAndInitializeJIT(altJitName, &m_AltJITCompiler, &newAltJitCompiler, &g_JitLoadData, targetOs); } #endif // ALLOW_SXS_JIT diff --git a/src/coreclr/vm/dacenumerablehash.inl b/src/coreclr/vm/dacenumerablehash.inl index 049329bbfbc67d..f2351d221446f9 100644 --- a/src/coreclr/vm/dacenumerablehash.inl +++ b/src/coreclr/vm/dacenumerablehash.inl @@ -499,7 +499,7 @@ DPTR(VALUE) DacEnumerableHashTable::BaseIterator::Next() DPTR(PTR_VolatileEntry) curBuckets = m_pTable->GetBuckets(); DWORD cBuckets = GetLength(curBuckets); - while (m_dwBucket < cBuckets) + while (m_dwBucket < cBuckets + SKIP_SPECIAL_SLOTS) { if (m_pEntry == NULL) { diff --git a/src/coreclr/vm/dllimport.cpp b/src/coreclr/vm/dllimport.cpp index 3a35a8e108fa45..35446a502ae958 100644 --- a/src/coreclr/vm/dllimport.cpp +++ b/src/coreclr/vm/dllimport.cpp @@ -3349,6 +3349,7 @@ BOOL NDirect::MarshalingRequired( // any types that contain gc pointers, but all "unmanaged" types are treated as blittable // as long as they aren't auto-layout and don't have any auto-layout fields. if (!runtimeMarshallingEnabled && + !hndArgType.IsEnum() && (hndArgType.GetMethodTable()->ContainsPointers() || hndArgType.GetMethodTable()->IsAutoLayoutOrHasAutoLayoutField())) { diff --git a/src/coreclr/vm/genericdict.cpp b/src/coreclr/vm/genericdict.cpp index c74e16b00d9970..56a40b0495972a 100644 --- a/src/coreclr/vm/genericdict.cpp +++ b/src/coreclr/vm/genericdict.cpp @@ -1081,10 +1081,11 @@ Dictionary::PopulateEntry( #if FEATURE_DEFAULT_INTERFACES // If we resolved the constrained call on a value type into a method on a reference type, this is a // default interface method implementation. + // If the method is a static method, this is ok, but for instance methods there are boxing issues. // In such case we would need to box the value type before we can dispatch to the implementation. // This would require us to make a "boxing stub". For now we leave the boxing stubs unimplemented. // It's not clear if anyone would need them and the implementation complexity is not worth it at this time. - if (!pResolvedMD->GetMethodTable()->IsValueType() && constraintType.GetMethodTable()->IsValueType()) + if (!pResolvedMD->IsStatic() && !pResolvedMD->GetMethodTable()->IsValueType() && constraintType.GetMethodTable()->IsValueType()) { SString assemblyName; diff --git a/src/coreclr/vm/jithelpers.cpp b/src/coreclr/vm/jithelpers.cpp index cd8ab0933e9229..11b9ff7bf7f5d7 100644 --- a/src/coreclr/vm/jithelpers.cpp +++ b/src/coreclr/vm/jithelpers.cpp @@ -5669,6 +5669,10 @@ HCIMPL1_RAW(void, JIT_ReversePInvokeExit, ReversePInvokeFrame* frame) } HCIMPLEND_RAW +// These two do take args but have a custom calling convention. +EXTERN_C void JIT_ValidateIndirectCall(); +EXTERN_C void JIT_DispatchIndirectCall(); + //======================================================================== // // JIT HELPERS INITIALIZATION diff --git a/src/coreclr/vm/methodtable.cpp b/src/coreclr/vm/methodtable.cpp index a81000cb0d0b24..873db55f9422d4 100644 --- a/src/coreclr/vm/methodtable.cpp +++ b/src/coreclr/vm/methodtable.cpp @@ -7580,7 +7580,6 @@ MethodTable::ResolveVirtualStaticMethod(MethodTable* pInterfaceType, MethodDesc* { canonicalEquivalentFound = true; break; - return NULL; } } } @@ -7644,6 +7643,12 @@ MethodTable::ResolveVirtualStaticMethod(MethodTable* pInterfaceType, MethodDesc* } } } + + // Default implementation logic, which only kicks in for default implementations when lookin up on an exact interface target + if (!pInterfaceMD->IsAbstract() && !(this == g_pCanonMethodTableClass) && !IsSharedByGenericInstantiations()) + { + return pInterfaceMD->FindOrCreateAssociatedMethodDesc(pInterfaceMD, pInterfaceType, FALSE, pInterfaceMD->GetMethodInstantiation(), FALSE); + } } if (allowNullResult) @@ -7818,7 +7823,7 @@ MethodTable::VerifyThatAllVirtualStaticMethodsAreImplemented() MethodDesc *pMD = it.GetMethodDesc(); if (pMD->IsVirtual() && pMD->IsStatic() && - !ResolveVirtualStaticMethod(pInterfaceMT, pMD, /* allowNullResult */ TRUE, /* verifyImplemented */ TRUE, /* allowVariantMatches */ FALSE)) + (pMD->IsAbstract() && !ResolveVirtualStaticMethod(pInterfaceMT, pMD, /* allowNullResult */ TRUE, /* verifyImplemented */ TRUE, /* allowVariantMatches */ FALSE))) { IMDInternalImport* pInternalImport = GetModule()->GetMDImport(); GetModule()->GetAssembly()->ThrowTypeLoadException(pInternalImport, GetCl(), pMD->GetName(), IDS_CLASSLOAD_STATICVIRTUAL_NOTIMPL); diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index 19a63dd9255443..479bf176691485 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -5076,7 +5076,7 @@ MethodTableBuilder::ValidateMethods() // Virtual static methods are only allowed on interfaces and they must be abstract. if (IsMdStatic(it.Attrs()) && IsMdVirtual(it.Attrs())) { - if (!IsInterface() || !IsMdAbstract(it.Attrs())) + if (!IsInterface()) { BuildMethodTableThrowException(IDS_CLASSLOAD_STATICVIRTUAL, it.Token()); } diff --git a/src/coreclr/vm/mlinfo.cpp b/src/coreclr/vm/mlinfo.cpp index 5a071c2b9f8f99..81ae1ab78468f7 100644 --- a/src/coreclr/vm/mlinfo.cpp +++ b/src/coreclr/vm/mlinfo.cpp @@ -1065,65 +1065,79 @@ namespace MethodTable** pMTOut, UINT* errorResIDOut) { - switch (sig.PeekElemTypeNormalized(pModule, pTypeContext)) + while (true) { - case ELEMENT_TYPE_BOOLEAN: - case ELEMENT_TYPE_U1: - return MarshalInfo::MARSHAL_TYPE_GENERIC_U1; - case ELEMENT_TYPE_I1: - return MarshalInfo::MARSHAL_TYPE_GENERIC_1; - case ELEMENT_TYPE_CHAR: - case ELEMENT_TYPE_U2: - return MarshalInfo::MARSHAL_TYPE_GENERIC_U2; - case ELEMENT_TYPE_I2: - return MarshalInfo::MARSHAL_TYPE_GENERIC_2; - case ELEMENT_TYPE_U4: - return MarshalInfo::MARSHAL_TYPE_GENERIC_U4; - case ELEMENT_TYPE_I4: - return MarshalInfo::MARSHAL_TYPE_GENERIC_4; - case ELEMENT_TYPE_U8: - case ELEMENT_TYPE_I8: - return MarshalInfo::MARSHAL_TYPE_GENERIC_8; -#ifdef TARGET_64BIT - case ELEMENT_TYPE_U: - case ELEMENT_TYPE_PTR: - case ELEMENT_TYPE_FNPTR: - case ELEMENT_TYPE_I: - return MarshalInfo::MARSHAL_TYPE_GENERIC_8; -#else - case ELEMENT_TYPE_U: - return MarshalInfo::MARSHAL_TYPE_GENERIC_U4; - case ELEMENT_TYPE_PTR: - case ELEMENT_TYPE_FNPTR: - case ELEMENT_TYPE_I: - return MarshalInfo::MARSHAL_TYPE_GENERIC_4; -#endif - case ELEMENT_TYPE_R4: - return MarshalInfo::MARSHAL_TYPE_FLOAT; - case ELEMENT_TYPE_R8: - return MarshalInfo::MARSHAL_TYPE_DOUBLE; - case ELEMENT_TYPE_VAR: - case ELEMENT_TYPE_VALUETYPE: - { - TypeHandle sigTH = sig.GetTypeHandleThrowing(pModule, pTypeContext); - MethodTable* pMT = sigTH.GetMethodTable(); - - if (!pMT->IsValueType() || pMT->ContainsPointers()) + switch (sig.PeekElemTypeNormalized(pModule, pTypeContext)) { - *errorResIDOut = IDS_EE_BADMARSHAL_MARSHAL_DISABLED; - return MarshalInfo::MARSHAL_TYPE_UNKNOWN; + // Skip modreqs and modopts in the signature. + case ELEMENT_TYPE_CMOD_OPT: + case ELEMENT_TYPE_CMOD_REQD: + { + if(FAILED(sig.GetElemType(NULL))) + { + *errorResIDOut = IDS_EE_BADMARSHAL_MARSHAL_DISABLED; + return MarshalInfo::MARSHAL_TYPE_UNKNOWN; + } + break; } - if (pMT->IsAutoLayoutOrHasAutoLayoutField()) + case ELEMENT_TYPE_BOOLEAN: + case ELEMENT_TYPE_U1: + return MarshalInfo::MARSHAL_TYPE_GENERIC_U1; + case ELEMENT_TYPE_I1: + return MarshalInfo::MARSHAL_TYPE_GENERIC_1; + case ELEMENT_TYPE_CHAR: + case ELEMENT_TYPE_U2: + return MarshalInfo::MARSHAL_TYPE_GENERIC_U2; + case ELEMENT_TYPE_I2: + return MarshalInfo::MARSHAL_TYPE_GENERIC_2; + case ELEMENT_TYPE_U4: + return MarshalInfo::MARSHAL_TYPE_GENERIC_U4; + case ELEMENT_TYPE_I4: + return MarshalInfo::MARSHAL_TYPE_GENERIC_4; + case ELEMENT_TYPE_U8: + case ELEMENT_TYPE_I8: + return MarshalInfo::MARSHAL_TYPE_GENERIC_8; + #ifdef TARGET_64BIT + case ELEMENT_TYPE_U: + case ELEMENT_TYPE_PTR: + case ELEMENT_TYPE_FNPTR: + case ELEMENT_TYPE_I: + return MarshalInfo::MARSHAL_TYPE_GENERIC_8; + #else + case ELEMENT_TYPE_U: + return MarshalInfo::MARSHAL_TYPE_GENERIC_U4; + case ELEMENT_TYPE_PTR: + case ELEMENT_TYPE_FNPTR: + case ELEMENT_TYPE_I: + return MarshalInfo::MARSHAL_TYPE_GENERIC_4; + #endif + case ELEMENT_TYPE_R4: + return MarshalInfo::MARSHAL_TYPE_FLOAT; + case ELEMENT_TYPE_R8: + return MarshalInfo::MARSHAL_TYPE_DOUBLE; + case ELEMENT_TYPE_VAR: + case ELEMENT_TYPE_VALUETYPE: { - *errorResIDOut = IDS_EE_BADMARSHAL_AUTOLAYOUT; + TypeHandle sigTH = sig.GetTypeHandleThrowing(pModule, pTypeContext); + MethodTable* pMT = sigTH.GetMethodTable(); + + if (!pMT->IsValueType() || pMT->ContainsPointers()) + { + *errorResIDOut = IDS_EE_BADMARSHAL_MARSHAL_DISABLED; + return MarshalInfo::MARSHAL_TYPE_UNKNOWN; + } + if (pMT->IsAutoLayoutOrHasAutoLayoutField()) + { + *errorResIDOut = IDS_EE_BADMARSHAL_AUTOLAYOUT; + return MarshalInfo::MARSHAL_TYPE_UNKNOWN; + } + *pMTOut = pMT; + return MarshalInfo::MARSHAL_TYPE_BLITTABLEVALUECLASS; + } + default: + *errorResIDOut = IDS_EE_BADMARSHAL_MARSHAL_DISABLED; return MarshalInfo::MARSHAL_TYPE_UNKNOWN; } - *pMTOut = pMT; - return MarshalInfo::MARSHAL_TYPE_BLITTABLEVALUECLASS; - } - default: - *errorResIDOut = IDS_EE_BADMARSHAL_MARSHAL_DISABLED; - return MarshalInfo::MARSHAL_TYPE_UNKNOWN; } } } diff --git a/src/coreclr/vm/peassembly.cpp b/src/coreclr/vm/peassembly.cpp index 7926fa8b85bf8c..95ceb1564a19b1 100644 --- a/src/coreclr/vm/peassembly.cpp +++ b/src/coreclr/vm/peassembly.cpp @@ -658,7 +658,6 @@ ULONG PEAssembly::GetPEImageTimeDateStamp() PEAssembly::PEAssembly( BINDER_SPACE::Assembly* pBindResultInfo, IMetaDataEmit* pEmit, - PEAssembly *creator, BOOL isSystem, PEImage * pPEImage /*= NULL*/, BINDER_SPACE::Assembly * pHostAssembly /*= NULL*/) @@ -667,13 +666,11 @@ PEAssembly::PEAssembly( { CONSTRUCTOR_CHECK; PRECONDITION(CheckPointer(pEmit, NULL_OK)); - PRECONDITION(CheckPointer(creator, NULL_OK)); PRECONDITION(pBindResultInfo == NULL || pPEImage == NULL); STANDARD_VM_CHECK; } CONTRACTL_END; - m_creator = clr::SafeAddRef(creator); #if _DEBUG m_pDebugName = NULL; #endif @@ -747,7 +744,6 @@ PEAssembly::PEAssembly( PEAssembly *PEAssembly::Open( - PEAssembly * pParent, PEImage * pPEImageIL, BINDER_SPACE::Assembly * pHostAssembly) { @@ -756,7 +752,6 @@ PEAssembly *PEAssembly::Open( PEAssembly * pPEAssembly = new PEAssembly( nullptr, // BindResult nullptr, // IMetaDataEmit - pParent, // PEAssembly creator FALSE, // isSystem pPEImageIL, pHostAssembly); @@ -777,8 +772,6 @@ PEAssembly::~PEAssembly() CONTRACTL_END; GCX_PREEMP(); - if (m_creator != NULL) - m_creator->Release(); if (m_pImporter != NULL) { @@ -844,21 +837,19 @@ PEAssembly *PEAssembly::DoOpenSystem() ReleaseHolder pBoundAssembly; IfFailThrow(GetAppDomain()->GetDefaultBinder()->BindToSystem(&pBoundAssembly)); - RETURN new PEAssembly(pBoundAssembly, NULL, NULL, TRUE); + RETURN new PEAssembly(pBoundAssembly, NULL, TRUE); } PEAssembly* PEAssembly::Open(BINDER_SPACE::Assembly* pBindResult) { - return new PEAssembly(pBindResult,NULL,NULL, /*isSystem*/ false); + return new PEAssembly(pBindResult,NULL,/*isSystem*/ false); }; /* static */ -PEAssembly *PEAssembly::Create(PEAssembly *pParentAssembly, - IMetaDataAssemblyEmit *pAssemblyEmit) +PEAssembly *PEAssembly::Create(IMetaDataAssemblyEmit *pAssemblyEmit) { CONTRACT(PEAssembly *) { - PRECONDITION(CheckPointer(pParentAssembly)); PRECONDITION(CheckPointer(pAssemblyEmit)); STANDARD_VM_CHECK; POSTCONDITION(CheckPointer(RETVAL)); @@ -869,7 +860,7 @@ PEAssembly *PEAssembly::Create(PEAssembly *pParentAssembly, // we have.) SafeComHolder pEmit; pAssemblyEmit->QueryInterface(IID_IMetaDataEmit, (void **)&pEmit); - RETURN new PEAssembly(NULL, pEmit, pParentAssembly, FALSE); + RETURN new PEAssembly(NULL, pEmit, FALSE); } #endif // #ifndef DACCESS_COMPILE @@ -877,41 +868,7 @@ PEAssembly *PEAssembly::Create(PEAssembly *pParentAssembly, #ifndef DACCESS_COMPILE -// ------------------------------------------------------------ -// Descriptive strings -// ------------------------------------------------------------ - -// Effective path is the path of nearest parent (creator) assembly which has a nonempty path. - -const SString &PEAssembly::GetEffectivePath() -{ - CONTRACTL - { - INSTANCE_CHECK; - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - } - CONTRACTL_END; - - PEAssembly* pPEAssembly = this; - - while (pPEAssembly->m_PEImage == NULL - || pPEAssembly->m_PEImage->GetPath().IsEmpty()) - { - if (pPEAssembly->m_creator) - pPEAssembly = pPEAssembly->m_creator; - else // Unmanaged exe which loads byte[]/IStream assemblies - return SString::Empty(); - } - - return pPEAssembly->m_PEImage->GetPath(); -} - - -// Codebase is the fusion codebase or path for the assembly. It is in URL format. -// Note this may be obtained from the parent PEAssembly if we don't have a path or fusion -// assembly. +// Supports implementation of the legacy Assembly.CodeBase property. // Returns false if the assembly was loaded from a bundle, true otherwise BOOL PEAssembly::GetCodeBase(SString &result) { @@ -926,10 +883,10 @@ BOOL PEAssembly::GetCodeBase(SString &result) CONTRACTL_END; PEImage* ilImage = GetPEImage(); - if (ilImage == NULL || !ilImage->IsInBundle()) + if (ilImage != NULL && !ilImage->IsInBundle()) { // All other cases use the file path. - result.Set(GetEffectivePath()); + result.Set(ilImage->GetPath()); if (!result.IsEmpty()) PathToUrl(result); @@ -1092,11 +1049,6 @@ void PEAssembly::EnumMemoryRegions(CLRDataEnumMemoryFlags flags) { m_PEImage->EnumMemoryRegions(flags); } - - if (m_creator.IsValid()) - { - m_creator->EnumMemoryRegions(flags); - } } #endif // #ifdef DACCESS_COMPILE diff --git a/src/coreclr/vm/peassembly.h b/src/coreclr/vm/peassembly.h index a051343f2e1fd9..b63709bb7aa548 100644 --- a/src/coreclr/vm/peassembly.h +++ b/src/coreclr/vm/peassembly.h @@ -124,10 +124,6 @@ class PEAssembly final LPCWSTR GetPathForErrorMessages(); - // This returns a non-empty path representing the source of the assembly; it may - // be the parent assembly for dynamic or memory assemblies - const SString& GetEffectivePath(); - // Codebase is the fusion codebase or path for the assembly. It is in URL format. // Note this may be obtained from the parent PEAssembly if we don't have a path or fusion // assembly. @@ -339,9 +335,7 @@ class PEAssembly final // Creation entry points // ------------------------------------------------------------ - // CoreCLR's PrivBinder PEAssembly creation entrypoint static PEAssembly* Open( - PEAssembly* pParent, PEImage* pPEImageIL, BINDER_SPACE::Assembly* pHostAssembly); @@ -350,9 +344,7 @@ class PEAssembly final static PEAssembly* Open(BINDER_SPACE::Assembly* pBindResult); - static PEAssembly* Create( - PEAssembly* pParentAssembly, - IMetaDataAssemblyEmit* pEmit); + static PEAssembly* Create(IMetaDataAssemblyEmit* pEmit); // ------------------------------------------------------------ // Utility functions @@ -382,7 +374,6 @@ class PEAssembly final PEAssembly( BINDER_SPACE::Assembly* pBindResultInfo, IMetaDataEmit* pEmit, - PEAssembly* creator, BOOL isSystem, PEImage* pPEImageIL = NULL, BINDER_SPACE::Assembly* pHostAssembly = NULL @@ -409,7 +400,6 @@ class PEAssembly final // IL image, NULL if dynamic PTR_PEImage m_PEImage; - PTR_PEAssembly m_creator; // This flag is not updated atomically with m_pMDImport. Its fine for debugger usage // but don't rely on it in the runtime. In runtime try QI'ing the m_pMDImport for // IID_IMDInternalImportENC diff --git a/src/coreclr/vm/syncblk.h b/src/coreclr/vm/syncblk.h index ff674963b6db22..a57809c5f8cff1 100644 --- a/src/coreclr/vm/syncblk.h +++ b/src/coreclr/vm/syncblk.h @@ -621,6 +621,11 @@ class InteropSyncBlockInfo { LIMITED_METHOD_CONTRACT; ZeroMemory(this, sizeof(InteropSyncBlockInfo)); + +#if defined(FEATURE_COMWRAPPERS) + // The GC thread does enumerate these objects so add CRST_UNSAFE_COOPGC. + m_managedObjectComWrapperLock.Init(CrstManagedObjectWrapperMap, CRST_UNSAFE_COOPGC); +#endif // FEATURE_COMWRAPPERS } #ifndef DACCESS_COMPILE ~InteropSyncBlockInfo(); @@ -799,8 +804,6 @@ class InteropSyncBlockInfo if (FastInterlockCompareExchangePointer((ManagedObjectComWrapperByIdMap**)&m_managedObjectComWrapperMap, (ManagedObjectComWrapperByIdMap *)map, NULL) == NULL) { map.SuppressRelease(); - // The GC thread does enumerate these objects so add CRST_UNSAFE_COOPGC. - m_managedObjectComWrapperLock.Init(CrstManagedObjectWrapperMap, CRST_UNSAFE_COOPGC); } _ASSERTE(m_managedObjectComWrapperMap != NULL); diff --git a/src/coreclr/vm/typedesc.cpp b/src/coreclr/vm/typedesc.cpp index 67818c5053fe1c..3b1a1c90ce0825 100644 --- a/src/coreclr/vm/typedesc.cpp +++ b/src/coreclr/vm/typedesc.cpp @@ -1613,7 +1613,7 @@ BOOL TypeVarTypeDesc::SatisfiesConstraints(SigTypeContext *pTypeContextOfConstra MethodDesc *pMD = it.GetMethodDesc(); if (pMD->IsVirtual() && pMD->IsStatic() && - !thElem.AsMethodTable()->ResolveVirtualStaticMethod(pInterfaceMT, pMD, /* allowNullResult */ TRUE, /* verifyImplemented */ TRUE)) + (pMD->IsAbstract() && !thElem.AsMethodTable()->ResolveVirtualStaticMethod(pInterfaceMT, pMD, /* allowNullResult */ TRUE, /* verifyImplemented */ TRUE))) { virtualStaticResolutionCheckFailed = true; break; diff --git a/src/installer/managed/Microsoft.NET.HostModel/HostModelUtils.cs b/src/installer/managed/Microsoft.NET.HostModel/HostModelUtils.cs index 9b2d79ca98770c..85724bef64c026 100644 --- a/src/installer/managed/Microsoft.NET.HostModel/HostModelUtils.cs +++ b/src/installer/managed/Microsoft.NET.HostModel/HostModelUtils.cs @@ -33,4 +33,4 @@ public static (int ExitCode, string StdErr) RunCodesign(string args, string appH } } } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/DisableRuntimeMarshalling.cs b/src/libraries/Common/src/DisableRuntimeMarshalling.cs new file mode 100644 index 00000000000000..9a6bc544e558f1 --- /dev/null +++ b/src/libraries/Common/src/DisableRuntimeMarshalling.cs @@ -0,0 +1,5 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Used to indicate that runtime marshalling should be disabled. +[assembly: System.Runtime.CompilerServices.DisableRuntimeMarshalling] diff --git a/src/libraries/Common/src/Extensions/NonCapturingTimer/NonCapturingTimer.cs b/src/libraries/Common/src/Extensions/NonCapturingTimer/NonCapturingTimer.cs index e07d90ca32211a..2a5f10d009ec91 100644 --- a/src/libraries/Common/src/Extensions/NonCapturingTimer/NonCapturingTimer.cs +++ b/src/libraries/Common/src/Extensions/NonCapturingTimer/NonCapturingTimer.cs @@ -11,13 +11,8 @@ namespace Microsoft.Extensions.Internal // everywhere we use timers to avoid rooting any values stored in asynclocals. internal static class NonCapturingTimer { - public static Timer Create(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period) + public static Timer Create(TimerCallback callback!!, object state, TimeSpan dueTime, TimeSpan period) { - if (callback == null) - { - throw new ArgumentNullException(nameof(callback)); - } - // Don't capture the current ExecutionContext and its AsyncLocals onto the timer bool restoreFlow = false; try diff --git a/src/libraries/Common/src/Extensions/ParameterDefaultValue/ParameterDefaultValue.netstandard.cs b/src/libraries/Common/src/Extensions/ParameterDefaultValue/ParameterDefaultValue.netstandard.cs index 21e9fdf849a9f7..5ba7bf3753d860 100644 --- a/src/libraries/Common/src/Extensions/ParameterDefaultValue/ParameterDefaultValue.netstandard.cs +++ b/src/libraries/Common/src/Extensions/ParameterDefaultValue/ParameterDefaultValue.netstandard.cs @@ -29,4 +29,4 @@ public static bool CheckHasDefaultValue(ParameterInfo parameter, out bool tryToG } } } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/Internal/Cryptography/HashProvider.cs b/src/libraries/Common/src/Internal/Cryptography/HashProvider.cs index 97814426e84f6d..b233d28b30b740 100644 --- a/src/libraries/Common/src/Internal/Cryptography/HashProvider.cs +++ b/src/libraries/Common/src/Internal/Cryptography/HashProvider.cs @@ -12,15 +12,13 @@ namespace Internal.Cryptography internal abstract class HashProvider : IDisposable { // Adds new data to be hashed. This can be called repeatedly in order to hash data from noncontiguous sources. - public void AppendHashData(byte[] data, int offset, int count) + public void AppendHashData(byte[] data!!, int offset, int count) { // AppendHashData can be called via exposed APIs (e.g. a type that derives from // HMACSHA1 and calls HashCore) and could be passed bad data from there. It could // also receive a bad count from HashAlgorithm reading from a Stream that returns // an invalid number of bytes read. Since our implementations of AppendHashDataCore // end up using unsafe code, we want to be sure the arguments are valid. - if (data == null) - throw new ArgumentNullException(nameof(data)); if (offset < 0) throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) diff --git a/src/libraries/Common/src/Internal/Cryptography/SymmetricPadding.cs b/src/libraries/Common/src/Internal/Cryptography/SymmetricPadding.cs index 1a2ae3d984bd9d..70350cfdf464ca 100644 --- a/src/libraries/Common/src/Internal/Cryptography/SymmetricPadding.cs +++ b/src/libraries/Common/src/Internal/Cryptography/SymmetricPadding.cs @@ -150,7 +150,7 @@ public static bool DepaddingRequired(PaddingMode padding) public static int GetPaddingLength(ReadOnlySpan block, PaddingMode paddingMode, int blockSize) { - int padBytes = 0; + int padBytes; // See PadBlock for a description of the padding modes. switch (paddingMode) diff --git a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoDecryptor.cs b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoDecryptor.cs index 5cb5b6cd1081ae..9fabe5a6b606be 100644 --- a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoDecryptor.cs +++ b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoDecryptor.cs @@ -173,64 +173,6 @@ protected sealed override void Dispose(bool disposing) base.Dispose(disposing); } - public override unsafe bool TransformOneShot(ReadOnlySpan input, Span output, out int bytesWritten) - { - if (input.Length % PaddingSizeBytes != 0) - throw new CryptographicException(SR.Cryptography_PartialBlock); - - // If there is no padding that needs to be removed, and the output buffer is large enough to hold - // the resulting plaintext, we can decrypt directly in to the output buffer. - // We do not do this for modes that require padding removal. - // - // This is not done for padded ciphertexts because we don't know if the padding is valid - // until it's been decrypted. We don't want to decrypt in to a user-supplied buffer and then throw - // a padding exception after we've already filled the user buffer with plaintext. We should only - // release the plaintext to the caller once we know the padding is valid. - if (!SymmetricPadding.DepaddingRequired(PaddingMode)) - { - if (output.Length >= input.Length) - { - bytesWritten = BasicSymmetricCipher.TransformFinal(input, output); - return true; - } - - // If no padding is going to be removed, we know the buffer is too small and we can bail out. - bytesWritten = 0; - return false; - } - - byte[] rentedBuffer = CryptoPool.Rent(input.Length); - Span buffer = rentedBuffer.AsSpan(0, input.Length); - Span decryptedBuffer = default; - - fixed (byte* pBuffer = buffer) - { - try - { - int transformWritten = BasicSymmetricCipher.TransformFinal(input, buffer); - decryptedBuffer = buffer.Slice(0, transformWritten); - - // validates padding - int unpaddedLength = SymmetricPadding.GetPaddingLength(decryptedBuffer, PaddingMode, InputBlockSize); - - if (unpaddedLength > output.Length) - { - bytesWritten = 0; - return false; - } - - decryptedBuffer.Slice(0, unpaddedLength).CopyTo(output); - bytesWritten = unpaddedLength; - return true; - } - finally - { - CryptographicOperations.ZeroMemory(decryptedBuffer); - CryptoPool.Return(rentedBuffer, clearSize: 0); // ZeroMemory clears the part of the buffer that was written to. - } - } - } - private void Reset() { if (_heldoverCipher != null) diff --git a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoEncryptor.cs b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoEncryptor.cs index f81e3075458ca2..236abbb37e6735 100644 --- a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoEncryptor.cs +++ b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoEncryptor.cs @@ -51,32 +51,5 @@ protected override byte[] UncheckedTransformFinalBlock(byte[] inputBuffer, int i Debug.Assert(written == buffer.Length); return buffer; } - - public override bool TransformOneShot(ReadOnlySpan input, Span output, out int bytesWritten) - { - int ciphertextLength = SymmetricPadding.GetCiphertextLength(input.Length, PaddingSizeBytes, PaddingMode); - - if (output.Length < ciphertextLength) - { - bytesWritten = 0; - return false; - } - - // Copy the input to the output, and apply padding if required. This will not throw since the - // output length has already been checked, and PadBlock will not copy from input to output - // until it has checked that it will be able to apply padding correctly. - int padWritten = SymmetricPadding.PadBlock(input, output, PaddingSizeBytes, PaddingMode); - - // Do an in-place encrypt. All of our implementations support this, either natively - // or making a temporary buffer themselves if in-place is not supported by the native - // implementation. - Span paddedOutput = output.Slice(0, padWritten); - bytesWritten = BasicSymmetricCipher.TransformFinal(paddedOutput, paddedOutput); - - // After padding, we should have an even number of blocks, and the same applies - // to the transform. - Debug.Assert(padWritten == bytesWritten); - return true; - } } } diff --git a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoOneShot.cs b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoOneShot.cs index ea2fe9ddf2d3d3..c1a1e35ac68276 100644 --- a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoOneShot.cs +++ b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoOneShot.cs @@ -50,6 +50,11 @@ public static unsafe bool OneShotDecrypt( { int transformWritten = cipher.TransformFinal(input, buffer); decryptedBuffer = buffer.Slice(0, transformWritten); + + // This intentionally passes in BlockSizeInBytes instead of PaddingSizeInBytes. This is so that + // "extra padded" CFB data can still be decrypted. The .NET Framework always padded CFB8 to the + // block size, not the feedback size. We want the one-shot to be able to continue to decrypt + // those ciphertexts, so for CFB8 we are more lenient on the number of allowed padding bytes. int unpaddedLength = SymmetricPadding.GetPaddingLength(decryptedBuffer, paddingMode, cipher.BlockSizeInBytes); // validates padding if (unpaddedLength > output.Length) diff --git a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoTransform.cs b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoTransform.cs index bd12894e5156cd..6a8f3b804df371 100644 --- a/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoTransform.cs +++ b/src/libraries/Common/src/Internal/Cryptography/UniversalCryptoTransform.cs @@ -91,10 +91,8 @@ public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, b return numBytesWritten; } - public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount) + public byte[] TransformFinalBlock(byte[] inputBuffer!!, int inputOffset, int inputCount) { - if (inputBuffer == null) - throw new ArgumentNullException(nameof(inputBuffer)); if (inputOffset < 0) throw new ArgumentOutOfRangeException(nameof(inputOffset)); if (inputCount < 0) @@ -108,8 +106,6 @@ public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int input return output; } - public abstract bool TransformOneShot(ReadOnlySpan input, Span output, out int bytesWritten); - protected virtual void Dispose(bool disposing) { if (disposing) diff --git a/src/libraries/Common/src/Interop/FreeBSD/Interop.Process.GetProcInfo.cs b/src/libraries/Common/src/Interop/FreeBSD/Interop.Process.GetProcInfo.cs index 09f7c97d302237..2d1861e4ee9c71 100644 --- a/src/libraries/Common/src/Interop/FreeBSD/Interop.Process.GetProcInfo.cs +++ b/src/libraries/Common/src/Interop/FreeBSD/Interop.Process.GetProcInfo.cs @@ -34,30 +34,30 @@ internal static partial class Process // From sys/_sigset.h [StructLayout(LayoutKind.Sequential)] - internal unsafe struct sigset_t + internal unsafe struct @sigset_t { private fixed int bits[4]; } [StructLayout(LayoutKind.Sequential)] - internal struct uid_t + internal struct @uid_t { public uint id; } [StructLayout(LayoutKind.Sequential)] - internal struct gid_t + internal struct @gid_t { public uint id; } [StructLayout(LayoutKind.Sequential)] - public struct timeval + public struct @timeval { public IntPtr tv_sec; public IntPtr tv_usec; } [StructLayout(LayoutKind.Sequential)] - private struct vnode + private struct @vnode { public long tv_sec; public long tv_usec; @@ -65,7 +65,7 @@ private struct vnode // sys/resource.h [StructLayout(LayoutKind.Sequential)] - internal struct rusage + internal struct @rusage { public timeval ru_utime; /* user time used */ public timeval ru_stime; /* system time used */ @@ -87,7 +87,7 @@ internal struct rusage // From sys/user.h [StructLayout(LayoutKind.Sequential)] - public unsafe struct kinfo_proc + public unsafe struct @kinfo_proc { public int ki_structsize; /* size of this structure */ private int ki_layout; /* reserved: layout identifier */ diff --git a/src/libraries/Common/src/Interop/Interop.HostPolicy.cs b/src/libraries/Common/src/Interop/Interop.HostPolicy.cs index b5e3a2109f4ae8..d808de7bea1f63 100644 --- a/src/libraries/Common/src/Interop/Interop.HostPolicy.cs +++ b/src/libraries/Common/src/Interop/Interop.HostPolicy.cs @@ -8,12 +8,12 @@ internal static partial class Interop { internal static partial class HostPolicy { - [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Auto)] - internal delegate void corehost_resolve_component_dependencies_result_fn(string assemblyPaths, - string nativeSearchPaths, string resourceSearchPaths); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate void corehost_resolve_component_dependencies_result_fn(IntPtr assemblyPaths, + IntPtr nativeSearchPaths, IntPtr resourceSearchPaths); - [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Auto)] - internal delegate void corehost_error_writer_fn(string message); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate void corehost_error_writer_fn(IntPtr message); #pragma warning disable CS3016 // Arrays as attribute arguments is not CLS-compliant [GeneratedDllImport(Libraries.HostPolicy, CharSet = CharSet.Auto)] diff --git a/src/libraries/Common/src/Interop/Interop.Ldap.cs b/src/libraries/Common/src/Interop/Interop.Ldap.cs index c62e99f4b4f285..a48640d1e46197 100644 --- a/src/libraries/Common/src/Interop/Interop.Ldap.cs +++ b/src/libraries/Common/src/Interop/Interop.Ldap.cs @@ -1,7 +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.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Security.Authentication; internal static partial class Interop { @@ -15,7 +17,7 @@ internal static partial class Interop namespace System.DirectoryServices.Protocols { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal sealed class Luid + internal readonly struct Luid { private readonly int _lowPart; private readonly int _highPart; @@ -24,8 +26,11 @@ internal sealed class Luid public int HighPart => _highPart; } +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#endif [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal sealed class SEC_WINNT_AUTH_IDENTITY_EX + internal struct SEC_WINNT_AUTH_IDENTITY_EX { public int version; public int length; @@ -38,6 +43,45 @@ internal sealed class SEC_WINNT_AUTH_IDENTITY_EX public int flags; public string packageList; public int packageListLength; + + [StructLayout(LayoutKind.Sequential)] + internal struct Native + { + public int version; + public int length; + public IntPtr user; + public int userLength; + public IntPtr domain; + public int domainLength; + public IntPtr password; + public int passwordLength; + public int flags; + public IntPtr packageList; + public int packageListLength; + + public Native(SEC_WINNT_AUTH_IDENTITY_EX managed) + { + version = managed.version; + length = managed.length; + user = Marshal.StringToCoTaskMemUni(managed.user); + userLength = managed.userLength; + domain = Marshal.StringToCoTaskMemUni(managed.domain); + domainLength = managed.domainLength; + password = Marshal.StringToCoTaskMemUni(managed.password); + passwordLength = managed.passwordLength; + flags = managed.flags; + packageList = Marshal.StringToCoTaskMemUni(managed.packageList); + packageListLength = managed.packageListLength; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(user); + Marshal.FreeCoTaskMem(domain); + Marshal.FreeCoTaskMem(password); + Marshal.FreeCoTaskMem(packageList); + } + } } internal enum BindMethod : uint // Not Supported in Linux @@ -113,19 +157,35 @@ internal enum ResultAll } [StructLayout(LayoutKind.Sequential)] - internal sealed class LDAP_TIMEVAL + internal struct LDAP_TIMEVAL { public int tv_sec; public int tv_usec; } +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(PinningMarshaller))] +#endif [StructLayout(LayoutKind.Sequential)] internal sealed class BerVal { public int bv_len; public IntPtr bv_val = IntPtr.Zero; - public BerVal() { } +#if NET7_0_OR_GREATER + internal unsafe struct PinningMarshaller + { + private readonly BerVal _managed; + public PinningMarshaller(BerVal managed) + { + _managed = managed; + } + + public ref int GetPinnableReference() => ref (_managed is null ? ref Unsafe.NullRef() : ref _managed.bv_len); + + public void* Value => Unsafe.AsPointer(ref GetPinnableReference()); + } +#endif } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] @@ -138,13 +198,64 @@ internal sealed class LdapControl public LdapControl() { } } - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Marshaller))] +#endif + [StructLayout(LayoutKind.Sequential)] internal struct LdapReferralCallback { public int sizeofcallback; public QUERYFORCONNECTIONInternal query; public NOTIFYOFNEWCONNECTIONInternal notify; public DEREFERENCECONNECTIONInternal dereference; +#if NET7_0_OR_GREATER + public static readonly unsafe int Size = sizeof(Marshaller.Native); + + public unsafe struct Marshaller + { + public unsafe struct Native + { + public int sizeofcallback; + public IntPtr query; + public IntPtr notify; + public IntPtr dereference; + } + + private LdapReferralCallback _managed; + private Native _native; + + public Marshaller(LdapReferralCallback managed) + : this() + { + _managed = managed; + _native.sizeofcallback = sizeof(Native); + _native.query = managed.query is not null ? Marshal.GetFunctionPointerForDelegate(managed.query) : IntPtr.Zero; + _native.notify = managed.notify is not null ? Marshal.GetFunctionPointerForDelegate(managed.notify) : IntPtr.Zero; + _native.dereference = managed.dereference is not null ? Marshal.GetFunctionPointerForDelegate(managed.dereference) : IntPtr.Zero; + } + + public Native Value + { + get => _native; + set => _native = value; + } + + public LdapReferralCallback ToManaged() + { + return new LdapReferralCallback() + { + sizeofcallback = _native.sizeofcallback, + query = _native.query != IntPtr.Zero ? Marshal.GetDelegateForFunctionPointer(_native.query) : null, + notify = _native.notify != IntPtr.Zero ? Marshal.GetDelegateForFunctionPointer(_native.notify) : null, + dereference = _native.dereference != IntPtr.Zero ? Marshal.GetDelegateForFunctionPointer(_native.dereference) : null + }; + } + + public void FreeNative() => GC.KeepAlive(_managed); + } +#else + public static readonly unsafe int Size = Marshal.SizeOf(); +#endif } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] diff --git a/src/libraries/Common/src/Interop/Interop.Odbc.cs b/src/libraries/Common/src/Interop/Interop.Odbc.cs index 0b30095146989e..cad9bcab346841 100644 --- a/src/libraries/Common/src/Interop/Interop.Odbc.cs +++ b/src/libraries/Common/src/Interop/Interop.Odbc.cs @@ -5,6 +5,9 @@ using System.Data.Odbc; using System.Runtime.ConstrainedExecution; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif using System.Runtime.Versioning; using System.Security; using System.Text; @@ -29,12 +32,16 @@ internal static partial ODBC32.SQLRETURN SQLAllocHandle( /*SQLHANDLE*/OdbcHandle InputHandle, /*SQLHANDLE* */out IntPtr OutputHandle); - [DllImport(Interop.Libraries.Odbc32)] - internal static extern /*SQLRETURN*/ODBC32.SQLRETURN SQLBindCol( + [GeneratedDllImport(Interop.Libraries.Odbc32)] + internal static partial /*SQLRETURN*/ODBC32.SQLRETURN SQLBindCol( /*SQLHSTMT*/OdbcStatementHandle StatementHandle, /*SQLUSMALLINT*/ushort ColumnNumber, /*SQLSMALLINT*/ODBC32.SQL_C TargetType, - /*SQLPOINTER*/HandleRef TargetValue, + /*SQLPOINTER*/ +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef TargetValue, /*SQLLEN*/IntPtr BufferLength, /*SQLLEN* */IntPtr StrLen_or_Ind); @@ -47,8 +54,8 @@ internal static partial ODBC32.SQLRETURN SQLBindCol( /*SQLLEN*/IntPtr BufferLength, /*SQLLEN* */IntPtr StrLen_or_Ind); - [DllImport(Interop.Libraries.Odbc32)] - internal static extern /*SQLRETURN*/ODBC32.SQLRETURN SQLBindParameter( + [GeneratedDllImport(Interop.Libraries.Odbc32)] + internal static partial /*SQLRETURN*/ODBC32.SQLRETURN SQLBindParameter( /*SQLHSTMT*/OdbcStatementHandle StatementHandle, /*SQLUSMALLINT*/ushort ParameterNumber, /*SQLSMALLINT*/short ParamDirection, @@ -56,9 +63,17 @@ internal static partial ODBC32.SQLRETURN SQLBindCol( /*SQLSMALLINT*/short SQLType, /*SQLULEN*/IntPtr cbColDef, /*SQLSMALLINT*/IntPtr ibScale, - /*SQLPOINTER*/HandleRef rgbValue, + /*SQLPOINTER*/ +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef rgbValue, /*SQLLEN*/IntPtr BufferLength, - /*SQLLEN* */HandleRef StrLen_or_Ind); + /*SQLLEN* */ +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef StrLen_or_Ind); [GeneratedDllImport(Interop.Libraries.Odbc32)] internal static partial ODBC32.SQLRETURN SQLCancel( @@ -176,24 +191,24 @@ internal static partial ODBC32.SQLRETURN SQLGetDescFieldW( /*SQLINTEGER*/int BufferLength, /*SQLINTEGER* */out int StringLength); - [DllImport(Interop.Libraries.Odbc32, CharSet = CharSet.Unicode)] - internal static extern /*SQLRETURN*/ODBC32.SQLRETURN SQLGetDiagRecW( + [GeneratedDllImport(Interop.Libraries.Odbc32, CharSet = CharSet.Unicode)] + internal static partial ODBC32.SQLRETURN SQLGetDiagRecW( /*SQLSMALLINT*/ODBC32.SQL_HANDLE HandleType, /*SQLHANDLE*/OdbcHandle Handle, /*SQLSMALLINT*/short RecNumber, - /*SQLCHAR* */ [Out] StringBuilder rchState, + /*SQLCHAR* */ char[] rchState, /*SQLINTEGER* */out int NativeError, - /*SQLCHAR* */ [Out] StringBuilder MessageText, + /*SQLCHAR* */ char[] MessageText, /*SQLSMALLINT*/short BufferLength, /*SQLSMALLINT* */out short TextLength); - [DllImport(Interop.Libraries.Odbc32, CharSet = CharSet.Unicode)] - internal static extern /*SQLRETURN*/ODBC32.SQLRETURN SQLGetDiagFieldW( + [GeneratedDllImport(Interop.Libraries.Odbc32, CharSet = CharSet.Unicode)] + internal static partial ODBC32.SQLRETURN SQLGetDiagFieldW( /*SQLSMALLINT*/ ODBC32.SQL_HANDLE HandleType, /*SQLHANDLE*/ OdbcHandle Handle, /*SQLSMALLINT*/ short RecNumber, /*SQLSMALLINT*/ short DiagIdentifier, - /*SQLPOINTER*/ [Out] StringBuilder rchState, + /*SQLPOINTER*/ char[] rchState, /*SQLSMALLINT*/ short BufferLength, /*SQLSMALLINT* */ out short StringLength); @@ -305,12 +320,16 @@ internal static partial ODBC32.SQLRETURN SQLSetConnectAttrW( /*SQLPOINTER*/IntPtr Value, /*SQLINTEGER*/int StringLength); - [DllImport(Interop.Libraries.Odbc32)] - internal static extern /*SQLRETURN*/ODBC32.SQLRETURN SQLSetDescFieldW( + [GeneratedDllImport(Interop.Libraries.Odbc32)] + internal static partial /*SQLRETURN*/ODBC32.SQLRETURN SQLSetDescFieldW( /*SQLHSTMT*/OdbcDescriptorHandle StatementHandle, /*SQLSMALLINT*/short ColumnNumber, /*SQLSMALLINT*/ODBC32.SQL_DESC FieldIdentifier, - /*SQLPOINTER*/HandleRef CharacterAttribute, + /*SQLPOINTER*/ +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef CharacterAttribute, /*SQLINTEGER*/int BufferLength); [GeneratedDllImport(Interop.Libraries.Odbc32)] diff --git a/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ber.cs b/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ber.cs index 468b73fe4962c7..2521b4082e78ef 100644 --- a/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ber.cs +++ b/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ber.cs @@ -15,11 +15,8 @@ internal static partial class Ldap [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ber_alloc_t", CharSet = CharSet.Ansi)] public static partial IntPtr ber_alloc(int option); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ber_init", CharSet = CharSet.Ansi)] - public static extern IntPtr ber_init(BerVal value); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ber_init", CharSet = CharSet.Ansi)] + public static partial IntPtr ber_init(BerVal value); [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ber_free", CharSet = CharSet.Ansi)] public static partial IntPtr ber_free(IntPtr berelement, int option); diff --git a/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ldap.cs b/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ldap.cs index 8a8d3b01b0bdf8..263d49c91e2af5 100644 --- a/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ldap.cs +++ b/src/libraries/Common/src/Interop/Linux/OpenLdap/Interop.Ldap.cs @@ -88,11 +88,8 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_get_option", CharSet = CharSet.Ansi)] public static partial int ldap_get_option_bool(ConnectionHandle ldapHandle, LdapOption option, ref bool outValue); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] We need to manually convert SecurityPackageContextConnectionInformation to marshal differently as layout classes are not supported in generated interop. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_get_option", CharSet = CharSet.Ansi)] - public static extern int ldap_get_option_secInfo(ConnectionHandle ldapHandle, LdapOption option, [In, Out] SecurityPackageContextConnectionInformation outValue); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_get_option", CharSet = CharSet.Ansi)] + public static unsafe partial int ldap_get_option_secInfo(ConnectionHandle ldapHandle, LdapOption option, void* outValue); [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_get_option", CharSet = CharSet.Ansi)] public static partial int ldap_get_option_sechandle(ConnectionHandle ldapHandle, LdapOption option, ref SecurityHandle outValue); @@ -109,11 +106,8 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_get_values_len", CharSet = CharSet.Ansi)] public static partial IntPtr ldap_get_values_len(ConnectionHandle ldapHandle, IntPtr result, string name); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_result", CharSet = CharSet.Ansi, SetLastError = true)] - public static extern int ldap_result(ConnectionHandle ldapHandle, int messageId, int all, LDAP_TIMEVAL timeout, ref IntPtr Mesage); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_result", CharSet = CharSet.Ansi, SetLastError = true)] + public static partial int ldap_result(ConnectionHandle ldapHandle, int messageId, int all, in LDAP_TIMEVAL timeout, ref IntPtr Mesage); [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_result2error", CharSet = CharSet.Ansi)] public static partial int ldap_result2error(ConnectionHandle ldapHandle, IntPtr result, int freeIt); @@ -139,11 +133,8 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_set_option", CharSet = CharSet.Ansi)] public static partial int ldap_set_option_string(ConnectionHandle ldapHandle, LdapOption option, string inValue); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_set_option", CharSet = CharSet.Ansi)] - public static extern int ldap_set_option_referral(ConnectionHandle ldapHandle, LdapOption option, ref LdapReferralCallback outValue); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_set_option", CharSet = CharSet.Ansi)] + public static partial int ldap_set_option_referral(ConnectionHandle ldapHandle, LdapOption option, ref LdapReferralCallback outValue); // Note that ldap_start_tls_s has a different signature across Windows LDAP and OpenLDAP [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_start_tls_s", CharSet = CharSet.Ansi)] @@ -161,11 +152,8 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_parse_reference", CharSet = CharSet.Ansi)] public static partial int ldap_parse_reference(ConnectionHandle ldapHandle, IntPtr result, ref IntPtr referrals, IntPtr ServerControls, byte freeIt); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_sasl_bind_s", CharSet = CharSet.Ansi)] - internal static extern int ldap_sasl_bind(ConnectionHandle ld, string dn, string mechanism, BerVal cred, IntPtr serverctrls, IntPtr clientctrls, IntPtr servercredp); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_sasl_bind_s", CharSet = CharSet.Ansi)] + internal static partial int ldap_sasl_bind(ConnectionHandle ld, string dn, string mechanism, in BerVal cred, IntPtr serverctrls, IntPtr clientctrls, IntPtr servercredp); [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_sasl_interactive_bind_s", CharSet = CharSet.Ansi)] internal static partial int ldap_sasl_interactive_bind(ConnectionHandle ld, string dn, string mechanism, IntPtr serverctrls, IntPtr clientctrls, uint flags, LDAP_SASL_INTERACT_PROC proc, IntPtr defaults); @@ -173,11 +161,8 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_err2string", CharSet = CharSet.Ansi)] public static partial IntPtr ldap_err2string(int err); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_extended_operation", CharSet = CharSet.Ansi)] - public static extern int ldap_extended_operation(ConnectionHandle ldapHandle, string oid, BerVal data, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_extended_operation", CharSet = CharSet.Ansi)] + public static partial int ldap_extended_operation(ConnectionHandle ldapHandle, string oid, in BerVal data, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_first_attribute", CharSet = CharSet.Ansi)] public static partial IntPtr ldap_first_attribute(ConnectionHandle ldapHandle, IntPtr result, ref IntPtr address); @@ -233,10 +218,7 @@ static Ldap() [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_rename", CharSet = CharSet.Ansi)] public static partial int ldap_rename(ConnectionHandle ldapHandle, string dn, string newRdn, string newParentDn, int deleteOldRdn, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.OpenLdap, EntryPoint = "ldap_compare_ext", CharSet = CharSet.Ansi)] - public static extern int ldap_compare(ConnectionHandle ldapHandle, string dn, string attributeName, BerVal binaryValue, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.OpenLdap, EntryPoint = "ldap_compare_ext", CharSet = CharSet.Ansi)] + public static partial int ldap_compare(ConnectionHandle ldapHandle, string dn, string attributeName, in BerVal binaryValue, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); } } diff --git a/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.ParseMapModules.cs b/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.ParseMapModules.cs index 0f2287ce4164bd..4d4c23f6140ffe 100644 --- a/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.ParseMapModules.cs +++ b/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.ParseMapModules.cs @@ -11,7 +11,7 @@ internal static partial class Interop { - internal static partial class procfs + internal static partial class @procfs { private const string MapsFileName = "/maps"; diff --git a/src/libraries/Common/src/Interop/OSX/Interop.libc.cs b/src/libraries/Common/src/Interop/OSX/Interop.libc.cs index 973dc0109842bb..51cf2ac16b7ace 100644 --- a/src/libraries/Common/src/Interop/OSX/Interop.libc.cs +++ b/src/libraries/Common/src/Interop/OSX/Interop.libc.cs @@ -6,7 +6,7 @@ internal static partial class Interop { - internal static partial class libc + internal static partial class @libc { [StructLayout(LayoutKind.Sequential)] internal struct AttrList @@ -23,11 +23,8 @@ internal struct AttrList public const uint ATTR_CMN_CRTIME = 0x00000200; } -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like CULong) - [DllImport(Libraries.libc, EntryPoint = "setattrlist", SetLastError = true)] - internal static unsafe extern int setattrlist(string path, AttrList* attrList, void* attrBuf, nint attrBufSize, CULong options); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Libraries.libc, EntryPoint = "setattrlist", CharSet = CharSet.Ansi, SetLastError = true)] + internal static unsafe partial int setattrlist(string path, AttrList* attrList, void* attrBuf, nint attrBufSize, CULong options); internal const uint FSOPT_NOFOLLOW = 0x00000001; } diff --git a/src/libraries/Common/src/Interop/OSX/Interop.libobjc.cs b/src/libraries/Common/src/Interop/OSX/Interop.libobjc.cs index 175b8abd3d790c..c338e87bfc0635 100644 --- a/src/libraries/Common/src/Interop/OSX/Interop.libobjc.cs +++ b/src/libraries/Common/src/Interop/OSX/Interop.libobjc.cs @@ -6,7 +6,7 @@ internal static partial class Interop { - internal static partial class libobjc + internal static partial class @libobjc { [StructLayout(LayoutKind.Sequential)] private struct NSOperatingSystemVersion diff --git a/src/libraries/Common/src/Interop/OSX/Interop.libproc.GetProcessInfoById.cs b/src/libraries/Common/src/Interop/OSX/Interop.libproc.GetProcessInfoById.cs index f667641d27c996..ccac9c97439596 100644 --- a/src/libraries/Common/src/Interop/OSX/Interop.libproc.GetProcessInfoById.cs +++ b/src/libraries/Common/src/Interop/OSX/Interop.libproc.GetProcessInfoById.cs @@ -8,7 +8,7 @@ internal static partial class Interop { - internal static partial class libproc + internal static partial class @libproc { // Constants from sys\param.h private const int MAXCOMLEN = 16; diff --git a/src/libraries/Common/src/Interop/OSX/Interop.libproc.cs b/src/libraries/Common/src/Interop/OSX/Interop.libproc.cs index a51adbb79c0835..929eb9acca871e 100644 --- a/src/libraries/Common/src/Interop/OSX/Interop.libproc.cs +++ b/src/libraries/Common/src/Interop/OSX/Interop.libproc.cs @@ -11,7 +11,7 @@ internal static partial class Interop { - internal static partial class libproc + internal static partial class @libproc { // Constants from sys\param.h private const int MAXPATHLEN = 1024; diff --git a/src/libraries/Common/src/Interop/OSX/System.Native/Interop.SearchPath.iOS.cs b/src/libraries/Common/src/Interop/OSX/System.Native/Interop.SearchPath.iOS.cs index 8d73184ca4d50a..3b113c29c945c8 100644 --- a/src/libraries/Common/src/Interop/OSX/System.Native/Interop.SearchPath.iOS.cs +++ b/src/libraries/Common/src/Interop/OSX/System.Native/Interop.SearchPath.iOS.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal static partial class Sys { - [DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_SearchPath_TempDirectory")] - internal static extern string SearchPathTempDirectory(); + [GeneratedDllImport(Libraries.SystemNative, EntryPoint = "SystemNative_SearchPath_TempDirectory", CharSet = CharSet.Ansi)] + internal static partial string SearchPathTempDirectory(); } } diff --git a/src/libraries/Common/src/Interop/SunOS/procfs/Interop.ProcFsStat.TryReadProcessStatusInfo.cs b/src/libraries/Common/src/Interop/SunOS/procfs/Interop.ProcFsStat.TryReadProcessStatusInfo.cs index bbfa14b3f7b12b..2a71db0aa82c9c 100644 --- a/src/libraries/Common/src/Interop/SunOS/procfs/Interop.ProcFsStat.TryReadProcessStatusInfo.cs +++ b/src/libraries/Common/src/Interop/SunOS/procfs/Interop.ProcFsStat.TryReadProcessStatusInfo.cs @@ -5,7 +5,7 @@ internal static partial class Interop { - internal static partial class procfs + internal static partial class @procfs { /// /// Attempts to get status info for the specified process ID. diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Abort.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Abort.cs index 3d040c31545840..c8abb85f00b226 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Abort.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Abort.cs @@ -10,7 +10,7 @@ internal static partial class Interop internal unsafe partial class Sys { [DoesNotReturn] - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_Abort")] - internal static extern void Abort(); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_Abort")] + internal static partial void Abort(); } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.DynamicLoad.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.DynamicLoad.cs index 6fd3ab2bba6aed..a6ccd9121d84f6 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.DynamicLoad.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.DynamicLoad.cs @@ -8,16 +8,16 @@ internal static partial class Interop { internal unsafe partial class Sys { - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_LoadLibrary")] - internal static extern IntPtr LoadLibrary(string filename); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_LoadLibrary", CharSet = CharSet.Ansi)] + internal static partial IntPtr LoadLibrary(string filename); - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_GetProcAddress")] - internal static extern IntPtr GetProcAddress(IntPtr handle, byte* symbol); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_GetProcAddress")] + internal static partial IntPtr GetProcAddress(IntPtr handle, byte* symbol); - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_GetProcAddress")] - internal static extern IntPtr GetProcAddress(IntPtr handle, string symbol); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_GetProcAddress", CharSet = CharSet.Ansi)] + internal static partial IntPtr GetProcAddress(IntPtr handle, string symbol); - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_FreeLibrary")] - internal static extern void FreeLibrary(IntPtr handle); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_FreeLibrary")] + internal static partial void FreeLibrary(IntPtr handle); } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Exit.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Exit.cs index a1e4d94149b6ff..69d57113aeac3d 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Exit.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Exit.cs @@ -10,7 +10,7 @@ internal static partial class Interop internal unsafe partial class Sys { [DoesNotReturn] - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_Exit")] - internal static extern void Exit(int exitCode); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_Exit")] + internal static partial void Exit(int exitCode); } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnv.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnv.cs index 13b578053820c1..467ea92ba20cd3 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnv.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnv.cs @@ -11,4 +11,4 @@ internal unsafe partial class Sys [GeneratedDllImport(Interop.Libraries.SystemNative, CharSet = CharSet.Ansi, EntryPoint = "SystemNative_GetEnv")] internal static unsafe partial IntPtr GetEnv(string name); } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnviron.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnviron.cs index b88c2560838b82..deefc74f3d16b9 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnviron.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.GetEnviron.cs @@ -14,4 +14,4 @@ internal unsafe partial class Sys [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_FreeEnviron")] internal static unsafe partial void FreeEnviron(IntPtr environ); } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Rename.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Rename.cs index 8670f15a7ba40b..741f4000627c00 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Rename.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Rename.cs @@ -3,6 +3,7 @@ using System; using System.Runtime.InteropServices; +using System.Text; internal static partial class Interop { @@ -18,5 +19,20 @@ internal static partial class Sys /// [GeneratedDllImport(Libraries.SystemNative, EntryPoint = "SystemNative_Rename", CharSet = CharSet.Ansi, SetLastError = true)] internal static partial int Rename(string oldPath, string newPath); + + [GeneratedDllImport(Libraries.SystemNative, EntryPoint = "SystemNative_Rename", SetLastError = true)] + internal static partial int Rename(ref byte oldPath, ref byte newPath); + + internal static int Rename(ReadOnlySpan oldPath, ReadOnlySpan newPath) + { + ValueUtf8Converter converterNewPath = new(stackalloc byte[DefaultPathBufferSize]); + ValueUtf8Converter converterOldPath = new(stackalloc byte[DefaultPathBufferSize]); + int result = Rename( + ref MemoryMarshal.GetReference(converterOldPath.ConvertAndTerminateString(oldPath)), + ref MemoryMarshal.GetReference(converterNewPath.ConvertAndTerminateString(newPath))); + converterNewPath.Dispose(); + converterOldPath.Dispose(); + return result; + } } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.SchedGetCpu.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.SchedGetCpu.cs index afc91ab8a733cb..464dc333e07651 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.SchedGetCpu.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.SchedGetCpu.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal unsafe partial class Sys { - [DllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_SchedGetCpu")] - internal static extern int SchedGetCpu(); + [GeneratedDllImport(Interop.Libraries.SystemNative, EntryPoint = "SystemNative_SchedGetCpu")] + internal static partial int SchedGetCpu(); } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Threading.cs b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Threading.cs index cecbaca6de6619..b948e77edef081 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Threading.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Native/Interop.Threading.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal unsafe partial class Sys { - [DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_CreateThread")] - internal static extern unsafe bool CreateThread(IntPtr stackSize, delegate* unmanaged startAddress, IntPtr parameter); + [GeneratedDllImport(Libraries.SystemNative, EntryPoint = "SystemNative_CreateThread")] + internal static unsafe partial bool CreateThread(IntPtr stackSize, delegate* unmanaged startAddress, IntPtr parameter); } } diff --git a/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.GssBuffer.cs b/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.GssBuffer.cs index f3344792900117..844d5c967cbafe 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.GssBuffer.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Net.Security.Native/Interop.GssBuffer.cs @@ -34,7 +34,7 @@ internal int Copy(byte[] destination, int offset) throw new NetSecurityNative.GssApiException(SR.Format(SR.net_context_buffer_too_small, sourceLength, destinationAvailable)); } - Marshal.Copy(_data, destination, offset, sourceLength); + Span.CopyTo(destination.AsSpan(offset, sourceLength)); return sourceLength; } @@ -47,7 +47,7 @@ internal byte[] ToByteArray() int destinationLength = Convert.ToInt32(_length); byte[] destination = new byte[destinationLength]; - Marshal.Copy(_data, destination, 0, destinationLength); + Span.CopyTo(destination); return destination; } @@ -67,11 +67,11 @@ public void Dispose() } #if DEBUG - static GssBuffer() + static unsafe GssBuffer() { // Verify managed size on both 32-bit and 64-bit matches the PAL_GssBuffer // native struct size, which is also padded on 32-bit. - Debug.Assert(Marshal.SizeOf() == 16); + Debug.Assert(sizeof(GssBuffer) == 16); } #endif } diff --git a/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs b/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs index 22e7d9bd1e2b62..ed807385c9b574 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.OpenSsl.cs @@ -327,6 +327,14 @@ internal static SafeSslHandle AllocateSslHandle(SafeFreeSslCredentials credentia Crypto.ErrClearError(); } + // relevant to TLS 1.3 only: if user supplied a client cert or cert callback, + // advertise that we are willing to send the certificate post-handshake. + if (sslAuthenticationOptions.ClientCertificates?.Count > 0 || + sslAuthenticationOptions.CertSelectionDelegate != null) + { + Ssl.SslSetPostHandshakeAuth(sslHandle, 1); + } + // Set client cert callback, this will interrupt the handshake with SecurityStatusPalErrorCode.CredentialsNeeded // if server actually requests a certificate. Ssl.SslSetClientCertCallback(sslHandle, 1); @@ -504,9 +512,16 @@ internal static int Decrypt(SafeSslHandle context, Span buffer, out Ssl.Ss case Ssl.SslErrorCode.SSL_ERROR_WANT_READ: // update error code to renegotiate if renegotiate is pending, otherwise make it SSL_ERROR_WANT_READ - errorCode = Ssl.IsSslRenegotiatePending(context) ? - Ssl.SslErrorCode.SSL_ERROR_RENEGOTIATE : - Ssl.SslErrorCode.SSL_ERROR_WANT_READ; + errorCode = Ssl.IsSslRenegotiatePending(context) + ? Ssl.SslErrorCode.SSL_ERROR_RENEGOTIATE + : Ssl.SslErrorCode.SSL_ERROR_WANT_READ; + break; + + case Ssl.SslErrorCode.SSL_ERROR_WANT_X509_LOOKUP: + // This happens in TLS 1.3 when server requests post-handshake authentication + // but no certificate is provided by client. We can process it the same way as + // renegotiation on older TLS versions + errorCode = Ssl.SslErrorCode.SSL_ERROR_RENEGOTIATE; break; default: diff --git a/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs b/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs index 6ccb1307886f71..d599fe7ecf7372 100644 --- a/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs +++ b/src/libraries/Common/src/Interop/Unix/System.Security.Cryptography.Native/Interop.Ssl.cs @@ -151,14 +151,17 @@ internal static partial class Ssl [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslSetData")] internal static partial int SslSetData(IntPtr ssl, IntPtr data); - [DllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslUseCertificate")] - internal static extern int SslUseCertificate(SafeSslHandle ssl, SafeX509Handle certPtr); + [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslUseCertificate")] + internal static partial int SslUseCertificate(SafeSslHandle ssl, SafeX509Handle certPtr); - [DllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslUsePrivateKey")] - internal static extern int SslUsePrivateKey(SafeSslHandle ssl, SafeEvpPKeyHandle keyPtr); + [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslUsePrivateKey")] + internal static partial int SslUsePrivateKey(SafeSslHandle ssl, SafeEvpPKeyHandle keyPtr); - [DllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslSetClientCertCallback")] - internal static extern unsafe void SslSetClientCertCallback(SafeSslHandle ssl, int set); + [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslSetClientCertCallback")] + internal static unsafe partial void SslSetClientCertCallback(SafeSslHandle ssl, int set); + + [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslSetPostHandshakeAuth")] + internal static partial void SslSetPostHandshakeAuth(SafeSslHandle ssl, int value); [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_Tls13Supported")] private static partial int Tls13SupportedImpl(); @@ -215,8 +218,8 @@ internal static unsafe int SslSetAlpnProtos(SafeSslHandle ssl, Span serial } } - [DllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslAddExtraChainCert")] - internal static extern bool SslAddExtraChainCert(SafeSslHandle ssl, SafeX509Handle x509); + [GeneratedDllImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_SslAddExtraChainCert")] + internal static partial bool SslAddExtraChainCert(SafeSslHandle ssl, SafeX509Handle x509); internal static bool AddExtraChainCertificates(SafeSslHandle ssl, X509Certificate2[] chain) { diff --git a/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs b/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs index 95b27abf158287..9e2bd72ea28ff7 100644 --- a/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs +++ b/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs @@ -5,7 +5,7 @@ internal static partial class Interop { - internal static partial class libc + internal static partial class @libc { [GeneratedDllImport(Libraries.Libc, EntryPoint = "getppid")] internal static partial int GetParentPid(); diff --git a/src/libraries/Common/src/Interop/Windows/Activeds/Interop.ADsOpenObject.cs b/src/libraries/Common/src/Interop/Windows/Activeds/Interop.ADsOpenObject.cs index ee31cd67ab52ed..cadacc56ce09c3 100644 --- a/src/libraries/Common/src/Interop/Windows/Activeds/Interop.ADsOpenObject.cs +++ b/src/libraries/Common/src/Interop/Windows/Activeds/Interop.ADsOpenObject.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal static partial class Activeds { - [DllImport(Interop.Libraries.Activeds, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int ADsOpenObject(string path, string? userName, string? password, int flags, [In, Out] ref Guid iid, [Out, MarshalAs(UnmanagedType.Interface)] out object ppObject); + [GeneratedDllImport(Interop.Libraries.Activeds, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int ADsOpenObject(string path, string? userName, string? password, int flags, ref Guid iid, out IntPtr ppObject); } } diff --git a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.CryptGetDefaultProvider.cs b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.CryptGetDefaultProvider.cs index 99a82e00cc90a1..92d048b9be0652 100644 --- a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.CryptGetDefaultProvider.cs +++ b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.CryptGetDefaultProvider.cs @@ -15,14 +15,12 @@ internal enum GetDefaultProviderFlags : int CRYPT_USER_DEFAULT = 0x00000002 } - [DllImport(Libraries.Advapi32, SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "CryptGetDefaultProviderW")] - public static extern bool CryptGetDefaultProvider( + [GeneratedDllImport(Libraries.Advapi32, EntryPoint = "CryptGetDefaultProviderW", CharSet = CharSet.Unicode, SetLastError = true)] + public static partial bool CryptGetDefaultProvider( int dwProvType, IntPtr pdwReserved, GetDefaultProviderFlags dwFlags, -#pragma warning disable CA1838 // not on a hot path - [Out] StringBuilder? pszProvName, -#pragma warning restore CA1838 + [Out] char[]? pszProvName, ref int pcbProvName); } } diff --git a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EtwEnableCallback.cs b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EtwEnableCallback.cs index 07cfaf95a3dfaf..8d140920cc2400 100644 --- a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EtwEnableCallback.cs +++ b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EtwEnableCallback.cs @@ -21,7 +21,7 @@ internal struct EVENT_FILTER_DESCRIPTOR } internal unsafe delegate void EtwEnableCallback( - in Guid sourceId, + Guid* sourceId, int isEnabled, byte level, long matchAnyKeywords, diff --git a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventActivityIdControl.cs b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventActivityIdControl.cs index 9490c198b02d37..cd7ccb56d29b8a 100644 --- a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventActivityIdControl.cs +++ b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventActivityIdControl.cs @@ -8,10 +8,7 @@ internal static partial class Interop { internal static partial class Advapi32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Advapi32, ExactSpelling = true)] - internal static extern int EventActivityIdControl(ActivityControl ControlCode, ref Guid ActivityId); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Libraries.Advapi32, ExactSpelling = true)] + internal static partial int EventActivityIdControl(ActivityControl ControlCode, ref Guid ActivityId); } } diff --git a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventRegister.cs b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventRegister.cs index 1cc64001df4719..c7f7e75640416f 100644 --- a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventRegister.cs +++ b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.EventRegister.cs @@ -8,14 +8,11 @@ internal static partial class Interop { internal static partial class Advapi32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Advapi32, ExactSpelling = true)] - internal static unsafe extern uint EventRegister( + [GeneratedDllImport(Libraries.Advapi32, ExactSpelling = true)] + internal static unsafe partial uint EventRegister( in Guid providerId, EtwEnableCallback enableCallback, void* callbackContext, ref long registrationHandle); -#pragma warning restore DLLIMPORTGENANALYZER015 } } diff --git a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.LsaLookupNames2.cs b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.LsaLookupNames2.cs index 1e4c0309a09d97..f2ada1ff4f4439 100644 --- a/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.LsaLookupNames2.cs +++ b/src/libraries/Common/src/Interop/Windows/Advapi32/Interop.LsaLookupNames2.cs @@ -9,10 +9,8 @@ internal static partial class Interop { internal static partial class Advapi32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.Advapi32, EntryPoint = "LsaLookupNames2", CharSet = CharSet.Unicode, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern uint LsaLookupNames2( + [GeneratedDllImport(Interop.Libraries.Advapi32, EntryPoint = "LsaLookupNames2", CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial uint LsaLookupNames2( SafeLsaPolicyHandle handle, int flags, int count, @@ -20,15 +18,29 @@ internal static extern uint LsaLookupNames2( out SafeLsaMemoryHandle referencedDomains, out SafeLsaMemoryHandle sids ); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + [NativeMarshalling(typeof(Native))] internal struct MARSHALLED_UNICODE_STRING { internal ushort Length; internal ushort MaximumLength; - [MarshalAs(UnmanagedType.LPWStr)] internal string Buffer; + + public struct Native + { + internal ushort Length; + internal ushort MaximumLength; + internal IntPtr Buffer; + + public Native(MARSHALLED_UNICODE_STRING managed) + { + Length = managed.Length; + MaximumLength = managed.MaximumLength; + Buffer = Marshal.StringToCoTaskMemUni(managed.Buffer); + } + + public void FreeNative() => Marshal.FreeCoTaskMem(Buffer); + } } } } diff --git a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_DECRYPT_PARA.cs b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_DECRYPT_PARA.cs index 99c920e611ba03..db2d80bcc72d3a 100644 --- a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_DECRYPT_PARA.cs +++ b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_DECRYPT_PARA.cs @@ -1,6 +1,7 @@ // 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.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; @@ -12,7 +13,7 @@ internal static partial class Crypt32 internal struct CMSG_CTRL_DECRYPT_PARA { internal int cbSize; - internal SafeProvOrNCryptKeyHandle hKey; + internal IntPtr hKey; internal CryptKeySpec dwKeySpec; internal int dwRecipientIndex; } diff --git a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_KEY_AGREE_DECRYPT_PARA.cs b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_KEY_AGREE_DECRYPT_PARA.cs index 99a60f60786e07..7c57d09b713f28 100644 --- a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_KEY_AGREE_DECRYPT_PARA.cs +++ b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CMSG_CTRL_KEY_AGREE_DECRYPT_PARA.cs @@ -1,6 +1,7 @@ // 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.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; @@ -13,7 +14,7 @@ internal static partial class Crypt32 internal unsafe struct CMSG_CTRL_KEY_AGREE_DECRYPT_PARA { internal int cbSize; - internal SafeProvOrNCryptKeyHandle hProv; + internal IntPtr hProv; internal CryptKeySpec dwKeySpec; internal CMSG_KEY_AGREE_RECIPIENT_INFO* pKeyAgree; internal int dwRecipientIndex; diff --git a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreFlags.cs b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreFlags.cs index 9f4baff1614f5e..4c101f01aab271 100644 --- a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreFlags.cs +++ b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreFlags.cs @@ -13,4 +13,4 @@ internal enum CertControlStoreFlags : int None = 0x00000000, } } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreType.cs b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreType.cs index a0f04a14d059a0..e2b8506329d7af 100644 --- a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreType.cs +++ b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CertControlStoreType.cs @@ -10,4 +10,4 @@ internal enum CertControlStoreType : int CERT_STORE_CTRL_AUTO_RESYNC = 4, } } -} \ No newline at end of file +} diff --git a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CryptMsgControl.cs b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CryptMsgControl.cs index 6bd86b24e18e25..1be46df625564f 100644 --- a/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CryptMsgControl.cs +++ b/src/libraries/Common/src/Interop/Windows/Crypt32/Interop.CryptMsgControl.cs @@ -8,22 +8,18 @@ internal static partial class Interop { internal static partial class Crypt32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we add support for non-blittable struct marshalling. - [DllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] - internal static extern bool CryptMsgControl( + [GeneratedDllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial bool CryptMsgControl( SafeCryptMsgHandle hCryptMsg, int dwFlags, MsgControlType dwCtrlType, ref CMSG_CTRL_DECRYPT_PARA pvCtrlPara); - [DllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] - internal static extern bool CryptMsgControl( + [GeneratedDllImport(Libraries.Crypt32, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial bool CryptMsgControl( SafeCryptMsgHandle hCryptMsg, int dwFlags, MsgControlType dwCtrlType, ref CMSG_CTRL_KEY_AGREE_DECRYPT_PARA pvCtrlPara); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - } } diff --git a/src/libraries/Common/src/Interop/Windows/CryptUI/Interop.CryptUIDlgCertificate.cs b/src/libraries/Common/src/Interop/Windows/CryptUI/Interop.CryptUIDlgCertificate.cs index a82ac99918aeba..e98d1aeb621cd6 100644 --- a/src/libraries/Common/src/Interop/Windows/CryptUI/Interop.CryptUIDlgCertificate.cs +++ b/src/libraries/Common/src/Interop/Windows/CryptUI/Interop.CryptUIDlgCertificate.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Microsoft.Win32.SafeHandles; @@ -9,8 +10,12 @@ internal static partial class Interop { internal static partial class CryptUI { +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#else [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal sealed class CRYPTUI_VIEWCERTIFICATE_STRUCTW +#endif + internal struct CRYPTUI_VIEWCERTIFICATE_STRUCTW { internal uint dwSize; internal IntPtr hwndParent; @@ -30,10 +35,91 @@ internal sealed class CRYPTUI_VIEWCERTIFICATE_STRUCTW internal uint cPropSheetPages; internal IntPtr rgPropSheetPages; internal uint nStartPage; + +#if NET7_0_OR_GREATER + internal unsafe struct Native + { + private uint dwSize; + private IntPtr hwndParent; + private uint dwFlags; + private IntPtr szTitle; + private IntPtr pCertContext; + private IntPtr rgszPurposes; + private uint cPurposes; + private IntPtr pCryptProviderData; + private bool fpCryptProviderDataTrustedUsage; + private uint idxSigner; + private uint idxCert; + private bool fCounterSigner; + private uint idxCounterSigner; + private uint cStores; + private IntPtr rghStores; + private uint cPropSheetPages; + private IntPtr rgPropSheetPages; + private uint nStartPage; + + public Native(CRYPTUI_VIEWCERTIFICATE_STRUCTW managed) + { + dwSize = managed.dwSize; + hwndParent = managed.hwndParent; + dwFlags = managed.dwFlags; + szTitle = Marshal.StringToCoTaskMemUni(managed.szTitle); + pCertContext = managed.pCertContext; + rgszPurposes = managed.rgszPurposes; + cPurposes = managed.cPurposes; + pCryptProviderData = managed.pCryptProviderData; + fpCryptProviderDataTrustedUsage = managed.fpCryptProviderDataTrustedUsage; + idxSigner = managed.idxSigner; + idxCert = managed.idxCert; + fCounterSigner = managed.fCounterSigner; + idxCounterSigner = managed.idxCounterSigner; + cStores = managed.cStores; + rghStores = managed.rghStores; + cPropSheetPages = managed.cPropSheetPages; + rgPropSheetPages = managed.rgPropSheetPages; + nStartPage = managed.nStartPage; + + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(szTitle); + } + + public CRYPTUI_VIEWCERTIFICATE_STRUCTW ToManaged() + { + return new() + { + dwSize = dwSize, + hwndParent = hwndParent, + dwFlags = dwFlags, + szTitle = Marshal.PtrToStringUni(szTitle), + pCertContext = pCertContext, + rgszPurposes = rgszPurposes, + cPurposes = cPurposes, + pCryptProviderData = pCryptProviderData, + fpCryptProviderDataTrustedUsage = fpCryptProviderDataTrustedUsage, + idxSigner = idxSigner, + idxCert = idxCert, + fCounterSigner = fCounterSigner, + idxCounterSigner = idxCounterSigner, + cStores = cStores, + rghStores = rghStores, + cPropSheetPages = cPropSheetPages, + rgPropSheetPages = rgPropSheetPages, + nStartPage = nStartPage + }; + } + } +#endif } +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#else [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal sealed class CRYPTUI_SELECTCERTIFICATE_STRUCTW +#endif + internal struct CRYPTUI_SELECTCERTIFICATE_STRUCTW { internal uint dwSize; internal IntPtr hwndParent; @@ -51,15 +137,84 @@ internal sealed class CRYPTUI_SELECTCERTIFICATE_STRUCTW internal uint cPropSheetPages; internal IntPtr rgPropSheetPages; internal IntPtr hSelectedCertStore; + +#if NET7_0_OR_GREATER + internal unsafe struct Native + { + private uint dwSize; + private IntPtr hwndParent; + private uint dwFlags; + private IntPtr szTitle; + private uint dwDontUseColumn; + private IntPtr szDisplayString; + private IntPtr pFilterCallback; + private IntPtr pDisplayCallback; + private IntPtr pvCallbackData; + private uint cDisplayStores; + private IntPtr rghDisplayStores; + private uint cStores; + private IntPtr rghStores; + private uint cPropSheetPages; + private IntPtr rgPropSheetPages; + internal IntPtr hSelectedCertStore; + + public Native(CRYPTUI_SELECTCERTIFICATE_STRUCTW managed) + { + dwSize = managed.dwSize; + hwndParent = managed.hwndParent; + dwFlags = managed.dwFlags; + szTitle = Marshal.StringToCoTaskMemUni(managed.szTitle); + dwDontUseColumn = managed.dwDontUseColumn; + szDisplayString = Marshal.StringToCoTaskMemUni(managed.szDisplayString); + pFilterCallback = managed.pFilterCallback; + pDisplayCallback = managed.pDisplayCallback; + pvCallbackData = managed.pvCallbackData; + cDisplayStores = managed.cDisplayStores; + rghDisplayStores = managed.rghDisplayStores; + cStores = managed.cStores; + rghStores = managed.rghStores; + cPropSheetPages = managed.cPropSheetPages; + rgPropSheetPages = managed.rgPropSheetPages; + hSelectedCertStore = managed.hSelectedCertStore; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(szTitle); + Marshal.FreeCoTaskMem(szDisplayString); + } + + public CRYPTUI_SELECTCERTIFICATE_STRUCTW ToManaged() + { + return new() + { + dwSize = dwSize, + hwndParent = hwndParent, + dwFlags = dwFlags, + szTitle = Marshal.PtrToStringUni(szTitle), + dwDontUseColumn = dwDontUseColumn, + szDisplayString = Marshal.PtrToStringUni(szDisplayString), + pFilterCallback = pFilterCallback, + pDisplayCallback = pDisplayCallback, + pvCallbackData = pvCallbackData, + cDisplayStores = cDisplayStores, + rghDisplayStores = rghDisplayStores, + cStores = cStores, + rghStores = rghStores, + cPropSheetPages = cPropSheetPages, + rgPropSheetPages = rgPropSheetPages, + hSelectedCertStore = hSelectedCertStore + }; + } + } +#endif } -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable types. - [DllImport(Interop.Libraries.CryptUI, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] - internal static extern bool CryptUIDlgViewCertificateW([MarshalAs(UnmanagedType.LPStruct)] CRYPTUI_VIEWCERTIFICATE_STRUCTW ViewInfo, IntPtr pfPropertiesChanged); + [GeneratedDllImport(Interop.Libraries.CryptUI, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] + internal static partial bool CryptUIDlgViewCertificateW( + in CRYPTUI_VIEWCERTIFICATE_STRUCTW ViewInfo, IntPtr pfPropertiesChanged); - [DllImport(Interop.Libraries.CryptUI, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] - internal static extern SafeCertContextHandle CryptUIDlgSelectCertificateW([In, Out, MarshalAs(UnmanagedType.LPStruct)] CRYPTUI_SELECTCERTIFICATE_STRUCTW csc); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Interop.Libraries.CryptUI, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] + internal static partial SafeCertContextHandle CryptUIDlgSelectCertificateW(ref CRYPTUI_SELECTCERTIFICATE_STRUCTW csc); } } diff --git a/src/libraries/Common/src/Interop/Windows/Gdi32/Interop.OffsetViewportOrgEx.cs b/src/libraries/Common/src/Interop/Windows/Gdi32/Interop.OffsetViewportOrgEx.cs index 8768fd8493be71..b9147cf1631ee3 100644 --- a/src/libraries/Common/src/Interop/Windows/Gdi32/Interop.OffsetViewportOrgEx.cs +++ b/src/libraries/Common/src/Interop/Windows/Gdi32/Interop.OffsetViewportOrgEx.cs @@ -9,11 +9,8 @@ internal static partial class Interop { internal static partial class Gdi32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(Libraries.Gdi32)] - public static extern bool OffsetViewportOrgEx(IntPtr hdc, int x, int y, ref Point lppt); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.Gdi32)] + public static partial bool OffsetViewportOrgEx(IntPtr hdc, int x, int y, ref Point lppt); public static bool OffsetViewportOrgEx(HandleRef hdc, int x, int y, ref Point lppt) { diff --git a/src/libraries/Common/src/Interop/Windows/IpHlpApi/Interop.NetworkInformation.cs b/src/libraries/Common/src/Interop/Windows/IpHlpApi/Interop.NetworkInformation.cs index b3c412c4b8cbf0..def17790cb7ae7 100644 --- a/src/libraries/Common/src/Interop/Windows/IpHlpApi/Interop.NetworkInformation.cs +++ b/src/libraries/Common/src/Interop/Windows/IpHlpApi/Interop.NetworkInformation.cs @@ -236,7 +236,7 @@ internal struct IpAddrString } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - internal struct MibIfRow2 // MIB_IF_ROW2 + internal unsafe struct MibIfRow2 // MIB_IF_ROW2 { private const int GuidLength = 16; private const int IfMaxStringSize = 256; @@ -244,17 +244,12 @@ internal struct MibIfRow2 // MIB_IF_ROW2 internal ulong interfaceLuid; internal uint interfaceIndex; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = GuidLength)] - internal byte[] interfaceGuid; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = IfMaxStringSize + 1)] - internal char[] alias; // Null terminated string. - [MarshalAs(UnmanagedType.ByValArray, SizeConst = IfMaxStringSize + 1)] - internal char[] description; // Null terminated string. + internal Guid interfaceGuid; + internal fixed char alias[IfMaxStringSize + 1]; // Null terminated string. + internal fixed char description[IfMaxStringSize + 1]; // Null terminated string. internal uint physicalAddressLength; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = IfMaxPhysAddressLength)] - internal byte[] physicalAddress; // ANSI - [MarshalAs(UnmanagedType.ByValArray, SizeConst = IfMaxPhysAddressLength)] - internal byte[] permanentPhysicalAddress; // ANSI + internal fixed byte physicalAddress[IfMaxPhysAddressLength]; // ANSI + internal fixed byte permanentPhysicalAddress[IfMaxPhysAddressLength]; // ANSI internal uint mtu; internal NetworkInterfaceType type; internal InterfaceTunnelType tunnelType; @@ -266,8 +261,7 @@ internal struct MibIfRow2 // MIB_IF_ROW2 internal OperationalStatus operStatus; internal uint adminStatus; // Enum internal uint mediaConnectState; // Enum - [MarshalAs(UnmanagedType.ByValArray, SizeConst = GuidLength)] - internal byte[] networkGuid; + internal Guid networkGuid; internal InterfaceConnectionType connectionType; internal ulong transmitLinkSpeed; internal ulong receiveLinkSpeed; @@ -382,12 +376,11 @@ internal struct MibIcmpInfoEx } [StructLayout(LayoutKind.Sequential)] - internal struct MibIcmpStatsEx + internal unsafe struct MibIcmpStatsEx { internal uint dwMsgs; internal uint dwErrors; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] - internal uint[] rgdwTypeCount; + internal fixed uint rgdwTypeCount[256]; } [StructLayout(LayoutKind.Sequential)] @@ -519,11 +512,8 @@ internal static unsafe partial uint GetAdaptersAddresses( [GeneratedDllImport(Interop.Libraries.IpHlpApi)] internal static unsafe partial uint GetBestInterfaceEx(byte* ipAddress, int* index); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.IpHlpApi)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable types. - internal static extern uint GetIfEntry2(ref MibIfRow2 pIfRow); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Interop.Libraries.IpHlpApi)] + internal static partial uint GetIfEntry2(ref MibIfRow2 pIfRow); [GeneratedDllImport(Interop.Libraries.IpHlpApi)] internal static unsafe partial uint GetIpStatisticsEx(MibIpStats* statistics, AddressFamily family); @@ -537,11 +527,8 @@ internal static unsafe partial uint GetAdaptersAddresses( [GeneratedDllImport(Interop.Libraries.IpHlpApi)] internal static unsafe partial uint GetIcmpStatistics(MibIcmpInfo* statistics); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.IpHlpApi)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable types. - internal static extern uint GetIcmpStatisticsEx(out MibIcmpInfoEx statistics, AddressFamily family); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Interop.Libraries.IpHlpApi)] + internal static partial uint GetIcmpStatisticsEx(out MibIcmpInfoEx statistics, AddressFamily family); [GeneratedDllImport(Interop.Libraries.IpHlpApi)] internal static unsafe partial uint GetTcpTable(IntPtr pTcpTable, uint* dwOutBufLen, bool order); diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.DynamicLoad.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.DynamicLoad.cs index c0a0a2aeb5fbec..538e5bc43df5ea 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.DynamicLoad.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.DynamicLoad.cs @@ -10,7 +10,7 @@ internal static partial class Interop { internal static unsafe partial class Kernel32 { - [DllImport(Libraries.Kernel32)] - internal static extern IntPtr GetProcAddress(IntPtr hModule, byte* lpProcName); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial IntPtr GetProcAddress(IntPtr hModule, byte* lpProcName); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ExitProcess.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ExitProcess.cs index af50326e9771de..ff363379595b3c 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ExitProcess.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ExitProcess.cs @@ -11,7 +11,7 @@ internal static partial class Interop internal static unsafe partial class Kernel32 { [DoesNotReturn] - [DllImport(Libraries.Kernel32, EntryPoint = "ExitProcess")] - internal static extern void ExitProcess(int exitCode); + [GeneratedDllImport(Libraries.Kernel32, EntryPoint = "ExitProcess")] + internal static partial void ExitProcess(int exitCode); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetCurrentProcessorNumber.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetCurrentProcessorNumber.cs index 4ebdc93faf9e62..13865d75fe3a37 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetCurrentProcessorNumber.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetCurrentProcessorNumber.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32)] - internal static extern uint GetCurrentProcessorNumber(); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial uint GetCurrentProcessorNumber(); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetProcessName.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetProcessName.cs index 293a9c0ee49743..c3146abb588916 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetProcessName.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetProcessName.cs @@ -10,8 +10,8 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32, CharSet = CharSet.Unicode, EntryPoint = "QueryFullProcessImageNameW", ExactSpelling = true, SetLastError = true)] - private static unsafe extern bool QueryFullProcessImageName( + [GeneratedDllImport(Libraries.Kernel32, CharSet = CharSet.Unicode, EntryPoint = "QueryFullProcessImageNameW", ExactSpelling = true, SetLastError = true)] + private static unsafe partial bool QueryFullProcessImageName( SafeHandle hProcess, uint dwFlags, char* lpBuffer, diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetTickCount64.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetTickCount64.cs index 97e3349aef8784..b0b6d90baaeb1e 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetTickCount64.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetTickCount64.cs @@ -9,8 +9,8 @@ internal static partial class Interop { internal static unsafe partial class Kernel32 { - [DllImport(Libraries.Kernel32)] + [GeneratedDllImport(Libraries.Kernel32)] [SuppressGCTransition] - internal static extern ulong GetTickCount64(); + internal static partial ulong GetTickCount64(); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetUserDefaultLCID.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetUserDefaultLCID.cs index cf41573e2e7922..3b7a9b7cbc38d8 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetUserDefaultLCID.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.GetUserDefaultLCID.cs @@ -7,7 +7,7 @@ internal static partial class Interop { internal static partial class Kernel32 { - [GeneratedDllImport(Interop.Libraries.Kernel32, CharSet = CharSet.Unicode, PreserveSig = true)] + [GeneratedDllImport(Interop.Libraries.Kernel32, CharSet = CharSet.Unicode)] internal static partial int GetUserDefaultLCID(); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.IsDebuggerPresent.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.IsDebuggerPresent.cs index 232ac6b8f678fc..95cc4f1e1f806f 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.IsDebuggerPresent.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.IsDebuggerPresent.cs @@ -8,7 +8,7 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32)] - internal static extern bool IsDebuggerPresent(); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial bool IsDebuggerPresent(); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.RaiseFailFastException.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.RaiseFailFastException.cs index 1e80b3733688e7..004ca3a43763e1 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.RaiseFailFastException.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.RaiseFailFastException.cs @@ -49,9 +49,9 @@ internal static unsafe void RaiseFailFastException(uint faultCode, IntPtr pExAdd pExAddress == IntPtr.Zero ? FAIL_FAST_GENERATE_EXCEPTION_ADDRESS : 0); } - [DllImport(Libraries.Kernel32, EntryPoint = "RaiseFailFastException")] + [GeneratedDllImport(Libraries.Kernel32, EntryPoint = "RaiseFailFastException")] [DoesNotReturn] - private static extern unsafe void RaiseFailFastException( + private static unsafe partial void RaiseFailFastException( EXCEPTION_RECORD* pExceptionRecord, IntPtr pContextRecord, uint dwFlags); diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPool.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPool.cs index a7d9abdaf47b2c..d68aa0f19d2253 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPool.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPool.cs @@ -8,25 +8,25 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32)] - internal static extern unsafe IntPtr CreateThreadpoolWork(delegate* unmanaged pfnwk, IntPtr pv, IntPtr pcbe); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial IntPtr CreateThreadpoolWork(delegate* unmanaged pfnwk, IntPtr pv, IntPtr pcbe); - [DllImport(Libraries.Kernel32)] - internal static extern void SubmitThreadpoolWork(IntPtr pwk); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial void SubmitThreadpoolWork(IntPtr pwk); - [DllImport(Libraries.Kernel32)] - internal static extern void CloseThreadpoolWork(IntPtr pwk); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial void CloseThreadpoolWork(IntPtr pwk); - [DllImport(Libraries.Kernel32)] - internal static extern unsafe IntPtr CreateThreadpoolWait(delegate* unmanaged pfnwa, IntPtr pv, IntPtr pcbe); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial IntPtr CreateThreadpoolWait(delegate* unmanaged pfnwa, IntPtr pv, IntPtr pcbe); - [DllImport(Libraries.Kernel32)] - internal static extern void SetThreadpoolWait(IntPtr pwa, IntPtr h, IntPtr pftTimeout); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial void SetThreadpoolWait(IntPtr pwa, IntPtr h, IntPtr pftTimeout); - [DllImport(Libraries.Kernel32)] - internal static extern void WaitForThreadpoolWaitCallbacks(IntPtr pwa, bool fCancelPendingCallbacks); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial void WaitForThreadpoolWaitCallbacks(IntPtr pwa, bool fCancelPendingCallbacks); - [DllImport(Libraries.Kernel32)] - internal static extern void CloseThreadpoolWait(IntPtr pwa); + [GeneratedDllImport(Libraries.Kernel32)] + internal static partial void CloseThreadpoolWait(IntPtr pwa); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPoolIO.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPoolIO.cs index 7dd7435c6a826b..a0dda79bdf270f 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPoolIO.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.ThreadPoolIO.cs @@ -9,16 +9,16 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32, SetLastError = true)] - internal static unsafe extern SafeThreadPoolIOHandle CreateThreadpoolIo(SafeHandle fl, delegate* unmanaged pfnio, IntPtr context, IntPtr pcbe); + [GeneratedDllImport(Libraries.Kernel32, SetLastError = true)] + internal static unsafe partial SafeThreadPoolIOHandle CreateThreadpoolIo(SafeHandle fl, delegate* unmanaged pfnio, IntPtr context, IntPtr pcbe); - [DllImport(Libraries.Kernel32)] - internal static unsafe extern void CloseThreadpoolIo(IntPtr pio); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial void CloseThreadpoolIo(IntPtr pio); - [DllImport(Libraries.Kernel32)] - internal static unsafe extern void StartThreadpoolIo(SafeThreadPoolIOHandle pio); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial void StartThreadpoolIo(SafeThreadPoolIOHandle pio); - [DllImport(Libraries.Kernel32)] - internal static unsafe extern void CancelThreadpoolIo(SafeThreadPoolIOHandle pio); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial void CancelThreadpoolIo(SafeThreadPoolIOHandle pio); } } diff --git a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.Timer.cs b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.Timer.cs index 19f4987d14f6f9..1fcf7da5583135 100644 --- a/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.Timer.cs +++ b/src/libraries/Common/src/Interop/Windows/Kernel32/Interop.Timer.cs @@ -8,10 +8,10 @@ internal static partial class Interop { internal static partial class Kernel32 { - [DllImport(Libraries.Kernel32)] - internal static extern unsafe IntPtr CreateThreadpoolTimer(delegate* unmanaged pfnti, IntPtr pv, IntPtr pcbe); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial IntPtr CreateThreadpoolTimer(delegate* unmanaged pfnti, IntPtr pv, IntPtr pcbe); - [DllImport(Libraries.Kernel32)] - internal static extern unsafe IntPtr SetThreadpoolTimer(IntPtr pti, long* pftDueTime, uint msPeriod, uint msWindowLength); + [GeneratedDllImport(Libraries.Kernel32)] + internal static unsafe partial IntPtr SetThreadpoolTimer(IntPtr pti, long* pftDueTime, uint msPeriod, uint msWindowLength); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CLSIDFromProgID.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CLSIDFromProgID.cs index fec2251f01e180..0b7c745008097d 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CLSIDFromProgID.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CLSIDFromProgID.cs @@ -8,10 +8,7 @@ internal static partial class Interop { internal static partial class Ole32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Interop.Libraries.Ole32, CharSet = CharSet.Unicode)] - internal static extern int CLSIDFromProgID(string lpszProgID, out Guid lpclsid); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Interop.Libraries.Ole32, CharSet = CharSet.Unicode)] + internal static partial int CLSIDFromProgID(string lpszProgID, out Guid lpclsid); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoCreateGuid.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoCreateGuid.cs index f79f17e3ec6373..e2cc05f757852c 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoCreateGuid.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoCreateGuid.cs @@ -8,10 +8,7 @@ internal static partial class Interop { internal static partial class Ole32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Interop.Libraries.Ole32)] - internal static extern int CoCreateGuid(out Guid guid); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(Interop.Libraries.Ole32)] + internal static partial int CoCreateGuid(out Guid guid); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetApartmentType.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetApartmentType.cs index 01abd6333c8940..970bd32f46ea56 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetApartmentType.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetApartmentType.cs @@ -29,7 +29,7 @@ internal enum APTTYPEQUALIFIER : uint internal static partial class Ole32 { - [DllImport(Interop.Libraries.Ole32, ExactSpelling = true)] - internal static extern int CoGetApartmentType(out APTTYPE pAptType, out APTTYPEQUALIFIER pAptQualifier); + [GeneratedDllImport(Interop.Libraries.Ole32, ExactSpelling = true)] + internal static partial int CoGetApartmentType(out APTTYPE pAptType, out APTTYPEQUALIFIER pAptQualifier); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetObjectContext.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetObjectContext.cs index 851878a81554d6..af00fce67e3c1b 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetObjectContext.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoGetObjectContext.cs @@ -8,10 +8,16 @@ internal static partial class Interop { internal static partial class Ole32 { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Ole32)] - internal static extern int CoGetObjectContext([MarshalAs(UnmanagedType.LPStruct)] Guid riid, out IntPtr ppv); -#pragma warning restore DLLIMPORTGENANALYZER015 + internal static unsafe int CoGetObjectContext(in Guid riid, out IntPtr ppv) + { + fixed (Guid* riidPtr = &riid) + fixed (IntPtr* ppvPtr = &ppv) + { + return CoGetObjectContext(riidPtr, ppvPtr); + } + } + + [GeneratedDllImport(Libraries.Ole32)] + internal static unsafe partial int CoGetObjectContext(Guid* riid, IntPtr* ppv); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoInitializeEx.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoInitializeEx.cs index 7be311659cab48..394b935685c334 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoInitializeEx.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoInitializeEx.cs @@ -12,7 +12,7 @@ internal static partial class Ole32 internal const uint COINIT_APARTMENTTHREADED = 2; internal const uint COINIT_MULTITHREADED = 0; - [DllImport(Interop.Libraries.Ole32, ExactSpelling = true)] - internal static extern int CoInitializeEx(IntPtr reserved, uint dwCoInit); + [GeneratedDllImport(Interop.Libraries.Ole32, ExactSpelling = true)] + internal static partial int CoInitializeEx(IntPtr reserved, uint dwCoInit); } } diff --git a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoUninitialize.cs b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoUninitialize.cs index 2e92ce2a113f37..c19f3774d26026 100644 --- a/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoUninitialize.cs +++ b/src/libraries/Common/src/Interop/Windows/Ole32/Interop.CoUninitialize.cs @@ -9,7 +9,7 @@ internal static partial class Interop { internal static partial class Ole32 { - [DllImport(Interop.Libraries.Ole32, ExactSpelling = true)] - internal static extern int CoUninitialize(); + [GeneratedDllImport(Interop.Libraries.Ole32, ExactSpelling = true)] + internal static partial int CoUninitialize(); } } diff --git a/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.PerformanceData.cs b/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.PerformanceData.cs index 1d266d08596ff2..e6208dc3fa6185 100644 --- a/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.PerformanceData.cs +++ b/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.PerformanceData.cs @@ -53,24 +53,20 @@ internal struct PerfCounterSetInstanceStruct internal uint InstanceNameSize; } -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Advapi32, ExactSpelling = true)] - internal static extern uint PerfStartProvider( + [GeneratedDllImport(Libraries.Advapi32, ExactSpelling = true)] + internal static partial uint PerfStartProvider( ref Guid ProviderGuid, PERFLIBREQUEST ControlCallback, out SafePerfProviderHandle phProvider ); - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Advapi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] - internal static extern unsafe PerfCounterSetInstanceStruct* PerfCreateInstance( + [GeneratedDllImport(Libraries.Advapi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] + internal static unsafe partial PerfCounterSetInstanceStruct* PerfCreateInstance( SafePerfProviderHandle hProvider, ref Guid CounterSetGuid, string szInstanceName, uint dwInstance ); -#pragma warning restore DLLIMPORTGENANALYZER015 [GeneratedDllImport(Libraries.Advapi32, ExactSpelling = true)] internal static unsafe partial uint PerfSetCounterSetInfo( diff --git a/src/libraries/Common/src/Interop/Windows/Shell32/Interop.SHGetKnownFolderPath.cs b/src/libraries/Common/src/Interop/Windows/Shell32/Interop.SHGetKnownFolderPath.cs index 5b3eaba1d14c4e..7e5bf2718ee756 100644 --- a/src/libraries/Common/src/Interop/Windows/Shell32/Interop.SHGetKnownFolderPath.cs +++ b/src/libraries/Common/src/Interop/Windows/Shell32/Interop.SHGetKnownFolderPath.cs @@ -10,16 +10,13 @@ internal static partial class Shell32 { internal const int COR_E_PLATFORMNOTSUPPORTED = unchecked((int)0x80131539); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time // https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false)] - internal static extern int SHGetKnownFolderPath( - [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, + [GeneratedDllImport(Libraries.Shell32, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false)] + internal static partial int SHGetKnownFolderPath( + in Guid rfid, uint dwFlags, IntPtr hToken, out string ppszPath); -#pragma warning restore DLLIMPORTGENANALYZER015 // https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx internal static class KnownFolders diff --git a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.LsaLogonUser.cs b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.LsaLogonUser.cs index 6be3ad7e6dd8e8..83efbbaab90e35 100644 --- a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.LsaLogonUser.cs +++ b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.LsaLogonUser.cs @@ -10,25 +10,22 @@ internal static partial class Interop { internal static partial class SspiCli { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Libraries.SspiCli)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern int LsaLogonUser( - [In] SafeLsaHandle LsaHandle, - [In] ref Advapi32.LSA_STRING OriginName, - [In] SECURITY_LOGON_TYPE LogonType, - [In] int AuthenticationPackage, - [In] IntPtr AuthenticationInformation, - [In] int AuthenticationInformationLength, - [In] IntPtr LocalGroups, - [In] ref TOKEN_SOURCE SourceContext, - [Out] out SafeLsaReturnBufferHandle ProfileBuffer, - [Out] out int ProfileBufferLength, - [Out] out LUID LogonId, - [Out] out SafeAccessTokenHandle Token, - [Out] out QUOTA_LIMITS Quotas, - [Out] out int SubStatus + [GeneratedDllImport(Libraries.SspiCli)] + internal static partial int LsaLogonUser( + SafeLsaHandle LsaHandle, + in Advapi32.LSA_STRING OriginName, + SECURITY_LOGON_TYPE LogonType, + int AuthenticationPackage, + IntPtr AuthenticationInformation, + int AuthenticationInformationLength, + IntPtr LocalGroups, + in TOKEN_SOURCE SourceContext, + out SafeLsaReturnBufferHandle ProfileBuffer, + out int ProfileBufferLength, + out LUID LogonId, + out SafeAccessTokenHandle Token, + out QUOTA_LIMITS Quotas, + out int SubStatus ); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time } } diff --git a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.SSPI.cs b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.SSPI.cs index 84e30b45ef9ae7..7fd660cb2ba6c7 100644 --- a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.SSPI.cs +++ b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.SSPI.cs @@ -344,13 +344,10 @@ internal static unsafe partial int DecryptMessage( uint sequenceNumber, uint* qualityOfProtection); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.SspiCli, ExactSpelling = true, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern int QuerySecurityContextToken( + [GeneratedDllImport(Interop.Libraries.SspiCli, ExactSpelling = true, SetLastError = true)] + internal static partial int QuerySecurityContextToken( ref CredHandle phContext, out SecurityContextTokenHandle handle); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time [GeneratedDllImport(Interop.Libraries.SspiCli, ExactSpelling = true, SetLastError = true)] internal static partial int FreeContextBuffer( @@ -478,14 +475,11 @@ internal static partial SECURITY_STATUS SspiEncodeStringsAsAuthIdentity( string password, out SafeSspiAuthDataHandle authData); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.SspiCli, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern SECURITY_STATUS SetCredentialsAttributesW( + [GeneratedDllImport(Interop.Libraries.SspiCli, ExactSpelling = true, SetLastError = true)] + internal static partial SECURITY_STATUS SetCredentialsAttributesW( in CredHandle handlePtr, long ulAttribute, in SecPkgCred_ClientCertPolicy pBuffer, long cbBuffer); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time } } diff --git a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.TokenSource.cs b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.TokenSource.cs index abee3daa3b3b17..130497fd917c98 100644 --- a/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.TokenSource.cs +++ b/src/libraries/Common/src/Interop/Windows/SspiCli/Interop.TokenSource.cs @@ -9,10 +9,9 @@ internal static partial class Interop internal static partial class SspiCli { [StructLayout(LayoutKind.Sequential)] - internal struct TOKEN_SOURCE + internal unsafe struct TOKEN_SOURCE { - [MarshalAs(UnmanagedType.ByValArray, SizeConst = TOKEN_SOURCE_LENGTH)] - internal byte[] SourceName; + internal fixed byte SourceName[TOKEN_SOURCE_LENGTH]; internal LUID SourceIdentifier; internal const int TOKEN_SOURCE_LENGTH = 8; diff --git a/src/libraries/Common/src/Interop/Windows/SspiCli/SecuritySafeHandles.cs b/src/libraries/Common/src/Interop/Windows/SspiCli/SecuritySafeHandles.cs index 8c3b6d815c169f..e0128ab0b994a8 100644 --- a/src/libraries/Common/src/Interop/Windows/SspiCli/SecuritySafeHandles.cs +++ b/src/libraries/Common/src/Interop/Windows/SspiCli/SecuritySafeHandles.cs @@ -348,10 +348,7 @@ internal static unsafe int InitializeSecurityContext( ref SecurityBuffer outSecBuffer, ref Interop.SspiCli.ContextFlags outFlags) { - if (inCredentials == null) - { - throw new ArgumentNullException(nameof(inCredentials)); - } + ArgumentNullException.ThrowIfNull(inCredentials); Debug.Assert(inSecBuffers.Count <= 3); Interop.SspiCli.SecBufferDesc inSecurityBufferDescriptor = new Interop.SspiCli.SecBufferDesc(inSecBuffers.Count); @@ -665,10 +662,7 @@ internal static unsafe int AcceptSecurityContext( ref SecurityBuffer outSecBuffer, ref Interop.SspiCli.ContextFlags outFlags) { - if (inCredentials == null) - { - throw new ArgumentNullException(nameof(inCredentials)); - } + ArgumentNullException.ThrowIfNull(inCredentials); Debug.Assert(inSecBuffers.Count <= 3); Interop.SspiCli.SecBufferDesc inSecurityBufferDescriptor = new Interop.SspiCli.SecBufferDesc(inSecBuffers.Count); diff --git a/src/libraries/Common/src/Interop/Windows/User32/Interop.GetWindowThreadProcessId.cs b/src/libraries/Common/src/Interop/Windows/User32/Interop.GetWindowThreadProcessId.cs index daee2bf32eb177..375be2c949b845 100644 --- a/src/libraries/Common/src/Interop/Windows/User32/Interop.GetWindowThreadProcessId.cs +++ b/src/libraries/Common/src/Interop/Windows/User32/Interop.GetWindowThreadProcessId.cs @@ -10,8 +10,5 @@ internal static partial class User32 { [GeneratedDllImport(Libraries.User32, ExactSpelling = true)] public static unsafe partial int GetWindowThreadProcessId(IntPtr handle, int* processId); - - [DllImport(Libraries.User32, ExactSpelling = true)] - public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId); } } diff --git a/src/libraries/Common/src/Interop/Windows/User32/Interop.PostMessage.cs b/src/libraries/Common/src/Interop/Windows/User32/Interop.PostMessage.cs index 962ccd2e2be1b8..157e12f845f9d4 100644 --- a/src/libraries/Common/src/Interop/Windows/User32/Interop.PostMessage.cs +++ b/src/libraries/Common/src/Interop/Windows/User32/Interop.PostMessage.cs @@ -10,8 +10,5 @@ internal static partial class User32 { [GeneratedDllImport(Libraries.User32, CharSet = CharSet.Unicode, ExactSpelling = true)] public static partial int PostMessageW(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); - - [DllImport(Libraries.User32, CharSet = CharSet.Unicode, ExactSpelling = true)] - public static extern int PostMessageW(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam); } } diff --git a/src/libraries/Common/src/Interop/Windows/User32/Interop.SendMessage.cs b/src/libraries/Common/src/Interop/Windows/User32/Interop.SendMessage.cs index 9fa455f0b57bf1..401e1bc56833f1 100644 --- a/src/libraries/Common/src/Interop/Windows/User32/Interop.SendMessage.cs +++ b/src/libraries/Common/src/Interop/Windows/User32/Interop.SendMessage.cs @@ -10,8 +10,5 @@ internal static partial class User32 { [GeneratedDllImport(Libraries.User32, CharSet = CharSet.Unicode, ExactSpelling = true)] public static partial IntPtr SendMessageW(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); - - [DllImport(Libraries.User32, CharSet = CharSet.Unicode, ExactSpelling = true)] - public static extern IntPtr SendMessageW(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam); } } diff --git a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.Structs.cs b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.Structs.cs index aff7ee11a381b8..26c0dd93fd3bc6 100644 --- a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.Structs.cs +++ b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.Structs.cs @@ -41,15 +41,35 @@ internal struct CloseBuffer internal ushort CloseStatus; } - [StructLayout(LayoutKind.Sequential)] + [NativeMarshalling(typeof(Native))] internal struct HttpHeader { - [MarshalAs(UnmanagedType.LPStr)] internal string Name; internal uint NameLength; - [MarshalAs(UnmanagedType.LPStr)] internal string Value; internal uint ValueLength; + + internal struct Native + { + private IntPtr Name; + private uint NameLength; + private IntPtr Value; + private uint ValueLength; + + public Native(HttpHeader managed) + { + Name = Marshal.StringToCoTaskMemAnsi(managed.Name); + NameLength = managed.NameLength; + Value = Marshal.StringToCoTaskMemAnsi(managed.Value); + ValueLength = managed.ValueLength; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(Name); + Marshal.FreeCoTaskMem(Value); + } + } } } } diff --git a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginClientHandshake.cs b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginClientHandshake.cs index 554d62ab1601aa..f545dcf7ba56ab 100644 --- a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginClientHandshake.cs +++ b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginClientHandshake.cs @@ -8,19 +8,16 @@ internal static partial class Interop { internal static partial class WebSocket { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Libraries.WebSocket)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern int WebSocketBeginClientHandshake( - [In] SafeHandle webSocketHandle, - [In] IntPtr subProtocols, - [In] uint subProtocolCount, - [In] IntPtr extensions, - [In] uint extensionCount, - [In] HttpHeader[] initialHeaders, - [In] uint initialHeaderCount, - [Out] out IntPtr additionalHeadersPtr, - [Out] out uint additionalHeaderCount); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.WebSocket)] + internal static partial int WebSocketBeginClientHandshake( + SafeHandle webSocketHandle, + IntPtr subProtocols, + uint subProtocolCount, + IntPtr extensions, + uint extensionCount, + HttpHeader[] initialHeaders, + uint initialHeaderCount, + out IntPtr additionalHeadersPtr, + out uint additionalHeaderCount); } } diff --git a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginServerHandshake.cs b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginServerHandshake.cs index 68c10a704cb74a..5d93d76f2638e3 100644 --- a/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginServerHandshake.cs +++ b/src/libraries/Common/src/Interop/Windows/WebSocket/Interop.WebSocketBeginServerHandshake.cs @@ -8,18 +8,15 @@ internal static partial class Interop { internal static partial class WebSocket { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Libraries.WebSocket)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - internal static extern int WebSocketBeginServerHandshake( - [In] SafeHandle webSocketHandle, - [In] IntPtr subProtocol, - [In] IntPtr extensions, - [In] uint extensionCount, - [In] HttpHeader[] requestHeaders, - [In] uint requestHeaderCount, - [Out] out IntPtr responseHeadersPtr, - [Out] out uint responseHeaderCount); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.WebSocket)] + internal static partial int WebSocketBeginServerHandshake( + SafeHandle webSocketHandle, + IntPtr subProtocol, + IntPtr extensions, + uint extensionCount, + HttpHeader[] requestHeaders, + uint requestHeaderCount, + out IntPtr responseHeadersPtr, + out uint responseHeaderCount); } } diff --git a/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp.cs b/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp.cs index ccd5084c430185..165551fa6f9972 100644 --- a/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp.cs +++ b/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp.cs @@ -38,16 +38,41 @@ public static partial SafeWinHttpHandle WinHttpOpenRequest( string acceptTypes, uint flags); - [DllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] + [GeneratedDllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] - public static extern bool WinHttpAddRequestHeaders( + public static partial bool WinHttpAddRequestHeaders( SafeWinHttpHandle requestHandle, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(SimpleStringBufferMarshaller))] StringBuilder headers, +#else #pragma warning disable CA1838 // Uses pooled StringBuilder [In] StringBuilder headers, -#pragma warning restore CA1838 +#pragma warning restore CA1838 // Uses pooled StringBuilder +#endif uint headersLength, uint modifiers); +#if NET7_0_OR_GREATER + private unsafe struct SimpleStringBufferMarshaller + { + public SimpleStringBufferMarshaller(StringBuilder builder) + { + int length = builder.Length + 1; + Value = NativeMemory.Alloc(sizeof(char) * (nuint)length); + Span buffer = new(Value, length); + buffer.Clear(); + builder.CopyTo(0, buffer, length - 1); + } + + public void* Value { get; } + + public void FreeNative() + { + NativeMemory.Free(Value); + } + } +#endif + [GeneratedDllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static partial bool WinHttpAddRequestHeaders( @@ -187,15 +212,12 @@ public static partial bool WinHttpSetTimeouts( public static partial bool WinHttpGetIEProxyConfigForCurrentUser( out WINHTTP_CURRENT_USER_IE_PROXY_CONFIG proxyConfig); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [return: MarshalAs(UnmanagedType.Bool)]public static extern bool WinHttpGetProxyForUrl( + [GeneratedDllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)]public static partial bool WinHttpGetProxyForUrl( SafeWinHttpHandle? sessionHandle, string url, ref WINHTTP_AUTOPROXY_OPTIONS autoProxyOptions, out WINHTTP_PROXY_INFO proxyInfo); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time [GeneratedDllImport(Interop.Libraries.WinHttp, CharSet = CharSet.Unicode, SetLastError = true)] public static partial IntPtr WinHttpSetStatusCallback( diff --git a/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp_types.cs b/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp_types.cs index 99bcc38f0a7159..47f105b6c3fc11 100644 --- a/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp_types.cs +++ b/src/libraries/Common/src/Interop/Windows/WinHttp/Interop.winhttp_types.cs @@ -244,6 +244,9 @@ public delegate void WINHTTP_STATUS_CALLBACK( IntPtr statusInformation, uint statusInformationLength); +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#endif [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct WINHTTP_AUTOPROXY_OPTIONS { @@ -255,6 +258,45 @@ public struct WINHTTP_AUTOPROXY_OPTIONS public uint Reserved2; [MarshalAs(UnmanagedType.Bool)] public bool AutoLoginIfChallenged; +#if NET7_0_OR_GREATER + public struct Native + { + private uint Flags; + private uint AutoDetectFlags; + private IntPtr AutoConfigUrl; + private IntPtr Reserved1; + private uint Reserved2; + private int AutoLoginIfChallenged; + + public Native(WINHTTP_AUTOPROXY_OPTIONS managed) + { + Flags = managed.Flags; + AutoDetectFlags = managed.AutoDetectFlags; + AutoConfigUrl = managed.AutoConfigUrl is not null ? Marshal.StringToCoTaskMemUni(managed.AutoConfigUrl) : IntPtr.Zero; + Reserved1 = managed.Reserved1; + Reserved2 = managed.Reserved2; + AutoLoginIfChallenged = managed.AutoLoginIfChallenged ? 1 : 0; + } + + public WINHTTP_AUTOPROXY_OPTIONS ToManaged() + { + return new WINHTTP_AUTOPROXY_OPTIONS + { + Flags = Flags, + AutoDetectFlags = AutoDetectFlags, + AutoConfigUrl = AutoConfigUrl != IntPtr.Zero ? Marshal.PtrToStringUni(AutoConfigUrl) : null, + Reserved1 = Reserved1, + Reserved2 = Reserved2, + AutoLoginIfChallenged = AutoLoginIfChallenged != 0 + }; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(AutoConfigUrl); + } + } +#endif } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] diff --git a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WSAIoctl.cs b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WSAIoctl.cs index 2508a98bc2f9db..67757a5ef6f47a 100644 --- a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WSAIoctl.cs +++ b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WSAIoctl.cs @@ -9,21 +9,18 @@ internal static partial class Interop { internal static partial class Winsock { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time // Used with SIOGETEXTENSIONFUNCTIONPOINTER - we're assuming that will never block. - [DllImport(Interop.Libraries.Ws2_32, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we annotate blittable types used in interop in CoreLib (like Guid) - internal static extern SocketError WSAIoctl( + [GeneratedDllImport(Interop.Libraries.Ws2_32, SetLastError = true)] + internal static partial SocketError WSAIoctl( SafeSocketHandle socketHandle, - [In] int ioControlCode, - [In, Out] ref Guid guid, - [In] int guidSize, - [Out] out IntPtr funcPtr, - [In] int funcPtrSize, - [Out] out int bytesTransferred, - [In] IntPtr shouldBeNull, - [In] IntPtr shouldBeNull2); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + int ioControlCode, + ref Guid guid, + int guidSize, + out IntPtr funcPtr, + int funcPtrSize, + out int bytesTransferred, + IntPtr shouldBeNull, + IntPtr shouldBeNull2); [GeneratedDllImport(Interop.Libraries.Ws2_32, EntryPoint = "WSAIoctl", SetLastError = true)] internal static partial SocketError WSAIoctl_Blocking( diff --git a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WinsockBSD.cs b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WinsockBSD.cs index 72dc40f2aa4584..28478031eb38fd 100644 --- a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WinsockBSD.cs +++ b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.WinsockBSD.cs @@ -1,6 +1,8 @@ // 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.Diagnostics; using System.Runtime.InteropServices; internal static partial class Interop @@ -57,23 +59,53 @@ internal struct TimeValue // Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. [StructLayout(LayoutKind.Sequential)] - internal struct IPMulticastRequest + internal unsafe struct IPMulticastRequest { internal int MulticastAddress; // IP multicast address of group internal int InterfaceAddress; // local IP address of interface - internal static readonly int Size = Marshal.SizeOf(); + internal static readonly int Size = sizeof(IPMulticastRequest); } // Argument structure for IPV6_ADD_MEMBERSHIP and IPV6_DROP_MEMBERSHIP. - [StructLayout(LayoutKind.Sequential)] + [NativeMarshalling(typeof(Native))] internal struct IPv6MulticastRequest { - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] internal byte[] MulticastAddress; // IP address of group. internal int InterfaceIndex; // Local interface index. - internal static readonly int Size = Marshal.SizeOf(); + public unsafe struct Native + { + private const int MulticastAddressLength = 16; + private fixed byte _multicastAddress[MulticastAddressLength]; + private int _interfaceIndex; + + public Native(IPv6MulticastRequest managed) + { + Debug.Assert(managed.MulticastAddress.Length == MulticastAddressLength); + fixed (void* dest = _multicastAddress) + { + managed.MulticastAddress.CopyTo(new Span(dest, MulticastAddressLength)); + } + _interfaceIndex = managed.InterfaceIndex; + } + + public IPv6MulticastRequest ToManaged() + { + IPv6MulticastRequest managed = new() + { + MulticastAddress = new byte[MulticastAddressLength], + InterfaceIndex = _interfaceIndex + }; + fixed (void* src = _multicastAddress) + { + new Span(src, 16).CopyTo(managed.MulticastAddress); + } + return managed; + } + } + + internal static readonly unsafe int Size = sizeof(Native); } [StructLayout(LayoutKind.Sequential)] diff --git a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.getsockopt.cs b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.getsockopt.cs index 047d46b484e891..f9885d46f63073 100644 --- a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.getsockopt.cs +++ b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.getsockopt.cs @@ -32,15 +32,12 @@ internal static partial SocketError getsockopt( out IPMulticastRequest optionValue, ref int optionLength); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.Ws2_32, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittale structs. - internal static extern SocketError getsockopt( - [In] SafeSocketHandle socketHandle, - [In] SocketOptionLevel optionLevel, - [In] SocketOptionName optionName, - [Out] out IPv6MulticastRequest optionValue, - [In, Out] ref int optionLength); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Interop.Libraries.Ws2_32, SetLastError = true)] + internal static partial SocketError getsockopt( + SafeSocketHandle socketHandle, + SocketOptionLevel optionLevel, + SocketOptionName optionName, + out IPv6MulticastRequest optionValue, + ref int optionLength); } } diff --git a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.setsockopt.cs b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.setsockopt.cs index 2aeb51a0c4d21d..a8eb5adc0d29e0 100644 --- a/src/libraries/Common/src/Interop/Windows/WinSock/Interop.setsockopt.cs +++ b/src/libraries/Common/src/Interop/Windows/WinSock/Interop.setsockopt.cs @@ -57,15 +57,12 @@ internal static partial SocketError setsockopt( ref IPMulticastRequest mreq, int optionLength); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - [DllImport(Interop.Libraries.Ws2_32, SetLastError = true)] - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittale structs. - internal static extern SocketError setsockopt( - [In] SafeSocketHandle socketHandle, - [In] SocketOptionLevel optionLevel, - [In] SocketOptionName optionName, - [In] ref IPv6MulticastRequest mreq, - [In] int optionLength); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Interop.Libraries.Ws2_32, SetLastError = true)] + internal static partial SocketError setsockopt( + SafeSocketHandle socketHandle, + SocketOptionLevel optionLevel, + SocketOptionName optionName, + in IPv6MulticastRequest mreq, + int optionLength); } } diff --git a/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ber.cs b/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ber.cs index 5ca47f48b28613..34fe73e8984c55 100644 --- a/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ber.cs +++ b/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ber.cs @@ -17,28 +17,49 @@ internal static partial class Ldap [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial IntPtr ber_alloc(int option); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Requires some varargs support mechanism in generated interop - [DllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] - public static extern int ber_printf(SafeBerHandle berElement, string format, __arglist); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_printf(SafeBerHandle berElement, string format, IntPtr value); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_printf(SafeBerHandle berElement, string format, HGlobalMemHandle value, uint length); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_printf(SafeBerHandle berElement, string format); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_printf(SafeBerHandle berElement, string format, int value); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_printf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_printf(SafeBerHandle berElement, string format, uint tag); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_flatten", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial int ber_flatten(SafeBerHandle berElement, ref IntPtr value); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ber_init", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_init", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial IntPtr ber_init(BerVal value); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_scanf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_scanf(SafeBerHandle berElement, string format); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_scanf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_scanf(SafeBerHandle berElement, string format, ref IntPtr ptrResult, ref uint bitLength); + + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_scanf", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern IntPtr ber_init(BerVal value); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ber_scanf(SafeBerHandle berElement, string format, ref int result); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Requires some varargs support mechanism in generated interop - [DllImport(Libraries.Wldap32, EntryPoint = "ber_scanf", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] - public static extern int ber_scanf(SafeBerHandle berElement, string format, __arglist); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_scanf", CharSet = CharSet.Unicode)] + [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] + public static partial int ber_scanf(SafeBerHandle berElement, string format, ref IntPtr value); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ber_bvfree", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] diff --git a/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ldap.cs b/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ldap.cs index 4a6469602e908e..84eb36ca7768b6 100644 --- a/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ldap.cs +++ b/src/libraries/Common/src/Interop/Windows/Wldap32/Interop.Ldap.cs @@ -9,23 +9,17 @@ internal static partial class Interop { internal static partial class Ldap { -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_bind_sW", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_bind_sW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_bind_s(ConnectionHandle ldapHandle, string dn, SEC_WINNT_AUTH_IDENTITY_EX credentials, BindMethod method); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_bind_s(ConnectionHandle ldapHandle, string dn, in SEC_WINNT_AUTH_IDENTITY_EX credentials, BindMethod method); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_initW", CharSet = CharSet.Unicode, SetLastError = true)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial IntPtr ldap_init(string hostName, int portNumber); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_connect", CharSet = CharSet.Unicode, ExactSpelling = true)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_connect", CharSet = CharSet.Unicode, ExactSpelling = true)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_connect(ConnectionHandle ldapHandle, LDAP_TIMEVAL timeout); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_connect(ConnectionHandle ldapHandle, in LDAP_TIMEVAL timeout); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_unbind", CharSet = CharSet.Unicode, ExactSpelling = true)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] @@ -51,16 +45,13 @@ internal static partial class Ldap [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial int ldap_get_option_sechandle(ConnectionHandle ldapHandle, LdapOption option, ref SecurityHandle outValue); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_get_optionW", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_get_optionW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_get_option_secInfo(ConnectionHandle ldapHandle, LdapOption option, [In, Out] SecurityPackageContextConnectionInformation outValue); + public static unsafe partial int ldap_get_option_secInfo(ConnectionHandle ldapHandle, LdapOption option, void* outValue); - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_set_optionW", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_set_optionW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_set_option_referral(ConnectionHandle ldapHandle, LdapOption option, ref LdapReferralCallback outValue); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_set_option_referral(ConnectionHandle ldapHandle, LdapOption option, ref LdapReferralCallback outValue); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_set_optionW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] @@ -86,12 +77,9 @@ internal static partial class Ldap [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial int ldap_delete_ext(ConnectionHandle ldapHandle, string dn, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_result", CharSet = CharSet.Unicode, SetLastError = true)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_result", CharSet = CharSet.Unicode, SetLastError = true)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_result(ConnectionHandle ldapHandle, int messageId, int all, LDAP_TIMEVAL timeout, ref IntPtr Mesage); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_result(ConnectionHandle ldapHandle, int messageId, int all, in LDAP_TIMEVAL timeout, ref IntPtr Mesage); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_parse_resultW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] @@ -129,12 +117,9 @@ internal static partial class Ldap [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial int ldap_rename(ConnectionHandle ldapHandle, string dn, string newRdn, string newParentDn, int deleteOldRdn, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_compare_extW", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_compare_extW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_compare(ConnectionHandle ldapHandle, string dn, string attributeName, string strValue, BerVal binaryValue, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_compare(ConnectionHandle ldapHandle, string dn, string attributeName, string strValue, BerVal binaryValue, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_add_extW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] @@ -144,12 +129,9 @@ internal static partial class Ldap [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] public static partial int ldap_modify(ConnectionHandle ldapHandle, string dn, IntPtr attrs, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(Libraries.Wldap32, EntryPoint = "ldap_extended_operationW", CharSet = CharSet.Unicode)] + [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_extended_operationW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] - public static extern int ldap_extended_operation(ConnectionHandle ldapHandle, string oid, BerVal data, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + public static partial int ldap_extended_operation(ConnectionHandle ldapHandle, string oid, BerVal data, IntPtr servercontrol, IntPtr clientcontrol, ref int messageNumber); [GeneratedDllImport(Libraries.Wldap32, EntryPoint = "ldap_parse_extended_resultW", CharSet = CharSet.Unicode)] [UnmanagedCallConv(CallConvs = new Type[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] diff --git a/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSRegisterSessionNotification.cs b/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSRegisterSessionNotification.cs index 23c0a2886290b4..11350ed5b46d18 100644 --- a/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSRegisterSessionNotification.cs +++ b/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSRegisterSessionNotification.cs @@ -1,13 +1,14 @@ // 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.Runtime.InteropServices; internal static partial class Interop { internal static partial class Wtsapi32 { - [DllImport(Libraries.Wtsapi32, ExactSpelling = true)] - public static extern bool WTSRegisterSessionNotification(HandleRef hWnd, int dwFlags); + [GeneratedDllImport(Libraries.Wtsapi32, ExactSpelling = true)] + public static partial bool WTSRegisterSessionNotification(IntPtr hWnd, int dwFlags); } } diff --git a/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSUnRegisterSessionNotification.cs b/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSUnRegisterSessionNotification.cs index a45ebf30491561..6620f9c774bda3 100644 --- a/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSUnRegisterSessionNotification.cs +++ b/src/libraries/Common/src/Interop/Windows/WtsApi32/Interop.WTSUnRegisterSessionNotification.cs @@ -1,13 +1,14 @@ // 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.Runtime.InteropServices; internal static partial class Interop { internal static partial class Wtsapi32 { - [DllImport(Libraries.Wtsapi32, ExactSpelling = true)] - public static extern bool WTSUnRegisterSessionNotification(HandleRef hWnd); + [GeneratedDllImport(Libraries.Wtsapi32, ExactSpelling = true)] + public static partial bool WTSUnRegisterSessionNotification(IntPtr hWnd); } } diff --git a/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandle.cs b/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandle.cs index 45a8695fc69035..1fe4e47fff9f76 100644 --- a/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandle.cs +++ b/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandle.cs @@ -17,11 +17,8 @@ internal class SafeCertContextHandle : SafeCrypt32Handle public SafeCertContextHandle() { } - public SafeCertContextHandle(SafeCertContextHandle parent) + public SafeCertContextHandle(SafeCertContextHandle parent!!) { - if (parent == null) - throw new ArgumentNullException(nameof(parent)); - Debug.Assert(!parent.IsInvalid); Debug.Assert(!parent.IsClosed); diff --git a/src/libraries/Common/src/System/CodeDom/CodeTypeReference.cs b/src/libraries/Common/src/System/CodeDom/CodeTypeReference.cs index 4ddf9950f5cc77..f010798cda8611 100644 --- a/src/libraries/Common/src/System/CodeDom/CodeTypeReference.cs +++ b/src/libraries/Common/src/System/CodeDom/CodeTypeReference.cs @@ -42,13 +42,8 @@ public CodeTypeReference() ArrayElementType = null; } - public CodeTypeReference(Type type) + public CodeTypeReference(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (type.IsArray) { ArrayRank = type.GetArrayRank(); diff --git a/src/libraries/Common/src/System/CodeDom/CodeTypeReferenceCollection.cs b/src/libraries/Common/src/System/CodeDom/CodeTypeReferenceCollection.cs index ffdfa8e4a3301f..6508e0163da334 100644 --- a/src/libraries/Common/src/System/CodeDom/CodeTypeReferenceCollection.cs +++ b/src/libraries/Common/src/System/CodeDom/CodeTypeReferenceCollection.cs @@ -39,26 +39,16 @@ public CodeTypeReference this[int index] public void Add(Type value) => Add(new CodeTypeReference(value)); - public void AddRange(CodeTypeReference[] value) + public void AddRange(CodeTypeReference[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeTypeReferenceCollection value) + public void AddRange(CodeTypeReferenceCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/Common/src/System/Composition/Diagnostics/CompositionTrace.cs b/src/libraries/Common/src/System/Composition/Diagnostics/CompositionTrace.cs index 53dd2bd7650b94..ab3a0ec42243ed 100644 --- a/src/libraries/Common/src/System/Composition/Diagnostics/CompositionTrace.cs +++ b/src/libraries/Common/src/System/Composition/Diagnostics/CompositionTrace.cs @@ -33,18 +33,8 @@ public static void Registration_TypeExportConventionOverridden(Type type) } } - public static void Registration_MemberExportConventionOverridden(Type type, MemberInfo member) + public static void Registration_MemberExportConventionOverridden(Type type!!, MemberInfo member!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_MemberExportConventionOverridden, @@ -53,18 +43,8 @@ public static void Registration_MemberExportConventionOverridden(Type type, Memb } } - public static void Registration_MemberImportConventionOverridden(Type type, MemberInfo member) + public static void Registration_MemberImportConventionOverridden(Type type!!, MemberInfo member!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_MemberImportConventionOverridden, @@ -73,18 +53,8 @@ public static void Registration_MemberImportConventionOverridden(Type type, Memb } } - public static void Registration_OnSatisfiedImportNotificationOverridden(Type type, MemberInfo member) + public static void Registration_OnSatisfiedImportNotificationOverridden(Type type!!, MemberInfo member!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_OnSatisfiedImportNotificationOverridden, @@ -93,13 +63,8 @@ public static void Registration_OnSatisfiedImportNotificationOverridden(Type typ } } - public static void Registration_PartCreationConventionOverridden(Type type) + public static void Registration_PartCreationConventionOverridden(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_PartCreationConventionOverridden, @@ -108,18 +73,8 @@ public static void Registration_PartCreationConventionOverridden(Type type) } } - public static void Registration_MemberImportConventionMatchedTwice(Type type, MemberInfo member) + public static void Registration_MemberImportConventionMatchedTwice(Type type!!, MemberInfo member!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_MemberImportConventionMatchedTwice, @@ -128,13 +83,8 @@ public static void Registration_MemberImportConventionMatchedTwice(Type type, Me } } - public static void Registration_PartMetadataConventionOverridden(Type type) + public static void Registration_PartMetadataConventionOverridden(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_PartMetadataConventionOverridden, @@ -143,18 +93,8 @@ public static void Registration_PartMetadataConventionOverridden(Type type) } } - public static void Registration_ParameterImportConventionOverridden(ParameterInfo parameter, ConstructorInfo constructor) + public static void Registration_ParameterImportConventionOverridden(ParameterInfo parameter!!, ConstructorInfo constructor!!) { - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - - if (constructor == null) - { - throw new ArgumentNullException(nameof(constructor)); - } - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Registration_ParameterImportConventionOverridden, diff --git a/src/libraries/Common/src/System/IO/ReadOnlyMemoryStream.cs b/src/libraries/Common/src/System/IO/ReadOnlyMemoryStream.cs index 5e2ecc2cf50b58..705e07a75fe38c 100644 --- a/src/libraries/Common/src/System/IO/ReadOnlyMemoryStream.cs +++ b/src/libraries/Common/src/System/IO/ReadOnlyMemoryStream.cs @@ -188,13 +188,8 @@ protected override void Dispose(bool disposing) } #if NETFRAMEWORK || NETSTANDARD2_0 - private static void ValidateBufferArguments(byte[] buffer, int offset, int count) + private static void ValidateBufferArguments(byte[] buffer!!, int offset, int count) { - if (buffer is null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/Common/src/System/IO/StreamHelpers.CopyValidation.cs b/src/libraries/Common/src/System/IO/StreamHelpers.CopyValidation.cs index 980ba1f5f96d75..1db9e6b48a5215 100644 --- a/src/libraries/Common/src/System/IO/StreamHelpers.CopyValidation.cs +++ b/src/libraries/Common/src/System/IO/StreamHelpers.CopyValidation.cs @@ -7,13 +7,8 @@ namespace System.IO internal static partial class StreamHelpers { /// Validate the arguments to CopyTo, as would Stream.CopyTo. - public static void ValidateCopyToArgs(Stream source, Stream destination, int bufferSize) + public static void ValidateCopyToArgs(Stream source, Stream destination!!, int bufferSize) { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize), bufferSize, SR.ArgumentOutOfRange_NeedPosNum); diff --git a/src/libraries/Common/src/System/IO/StringParser.cs b/src/libraries/Common/src/System/IO/StringParser.cs index 81210a5aac2d1d..317ca98026f1fe 100644 --- a/src/libraries/Common/src/System/IO/StringParser.cs +++ b/src/libraries/Common/src/System/IO/StringParser.cs @@ -30,12 +30,8 @@ internal struct StringParser /// The string to parse. /// The separator character used to separate subcomponents of . /// true if empty subcomponents should be skipped; false to treat them as valid entries. Defaults to false. - public StringParser(string buffer, char separator, bool skipEmpty = false) + public StringParser(string buffer!!, char separator, bool skipEmpty = false) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } _buffer = buffer; _separator = separator; _skipEmpty = skipEmpty; diff --git a/src/libraries/Common/src/System/Net/DebugCriticalHandleZeroOrMinusOneIsInvalid.cs b/src/libraries/Common/src/System/Net/DebugCriticalHandleZeroOrMinusOneIsInvalid.cs deleted file mode 100644 index ad3e9ab20f3899..00000000000000 --- a/src/libraries/Common/src/System/Net/DebugCriticalHandleZeroOrMinusOneIsInvalid.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Win32.SafeHandles; - -namespace System.Net -{ -#if DEBUG - // - // This is a helper class for debugging GC-ed handles that we define. - // As a general rule normal code path should always destroy handles explicitly - // - internal abstract class DebugCriticalHandleZeroOrMinusOneIsInvalid : CriticalHandleZeroOrMinusOneIsInvalid - { - private string _trace; - - protected DebugCriticalHandleZeroOrMinusOneIsInvalid() : base() - { - _trace = "WARNING! GC-ed >>" + this.GetType().FullName + "<< (should be explicitly closed) \r\n"; - if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, "Creating SafeHandle"); - } - - ~DebugCriticalHandleZeroOrMinusOneIsInvalid() - { - if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, _trace); - } - } -#endif // DEBUG -} diff --git a/src/libraries/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs b/src/libraries/Common/src/System/Net/DebugSafeHandleZeroOrMinusOneIsInvalid.cs similarity index 75% rename from src/libraries/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs rename to src/libraries/Common/src/System/Net/DebugSafeHandleZeroOrMinusOneIsInvalid.cs index bab71d17367eb0..6afe348639ab6d 100644 --- a/src/libraries/Common/src/System/Net/DebugCriticalHandleMinusOneIsInvalid.cs +++ b/src/libraries/Common/src/System/Net/DebugSafeHandleZeroOrMinusOneIsInvalid.cs @@ -10,17 +10,17 @@ namespace System.Net // This is a helper class for debugging GC-ed handles that we define. // As a general rule normal code path should always destroy handles explicitly // - internal abstract class DebugCriticalHandleMinusOneIsInvalid : CriticalHandleMinusOneIsInvalid + internal abstract class DebugSafeHandleZeroOrMinusOneIsInvalid : SafeHandleZeroOrMinusOneIsInvalid { private string _trace; - protected DebugCriticalHandleMinusOneIsInvalid() : base() + protected DebugSafeHandleZeroOrMinusOneIsInvalid(bool ownsHandle) : base(ownsHandle) { _trace = "WARNING! GC-ed >>" + this.GetType().FullName + "<< (should be explicitly closed) \r\n"; if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, "Creating SafeHandle"); } - ~DebugCriticalHandleMinusOneIsInvalid() + ~DebugSafeHandleZeroOrMinusOneIsInvalid() { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, _trace); } diff --git a/src/libraries/Common/src/System/Net/RangeValidationHelpers.cs b/src/libraries/Common/src/System/Net/RangeValidationHelpers.cs index 98322b1d0df309..c1a35a525b0a0d 100644 --- a/src/libraries/Common/src/System/Net/RangeValidationHelpers.cs +++ b/src/libraries/Common/src/System/Net/RangeValidationHelpers.cs @@ -16,10 +16,7 @@ public static bool ValidateRange(int actual, int fromAllowed, int toAllowed) public static void ValidateSegment(ArraySegment segment) { // ArraySegment is not nullable. - if (segment.Array == null) - { - throw new ArgumentNullException(nameof(segment)); - } + ArgumentNullException.ThrowIfNull(segment.Array, nameof(segment)); // Length zero is explicitly allowed if (segment.Offset < 0 || segment.Count < 0 || segment.Count > (segment.Array.Length - segment.Offset)) diff --git a/src/libraries/Common/src/System/Net/Security/SecurityContextTokenHandle.cs b/src/libraries/Common/src/System/Net/Security/SecurityContextTokenHandle.cs index 4f4c9951a72ed3..754ef64c05540c 100644 --- a/src/libraries/Common/src/System/Net/Security/SecurityContextTokenHandle.cs +++ b/src/libraries/Common/src/System/Net/Security/SecurityContextTokenHandle.cs @@ -8,23 +8,18 @@ namespace System.Net.Security { #if DEBUG - internal sealed class SecurityContextTokenHandle : DebugCriticalHandleZeroOrMinusOneIsInvalid + internal sealed class SecurityContextTokenHandle : DebugSafeHandleZeroOrMinusOneIsInvalid { #else - internal sealed class SecurityContextTokenHandle : CriticalHandleZeroOrMinusOneIsInvalid + internal sealed class SecurityContextTokenHandle : SafeHandleZeroOrMinusOneIsInvalid { #endif private int _disposed; - public SecurityContextTokenHandle() : base() + public SecurityContextTokenHandle() : base(true) { } - internal IntPtr DangerousGetHandle() - { - return handle; - } - protected override bool ReleaseHandle() { if (!IsInvalid) diff --git a/src/libraries/Common/src/System/Net/WebSockets/WebSocketValidate.cs b/src/libraries/Common/src/System/Net/WebSockets/WebSocketValidate.cs index d074f618bf16db..1b0bec17b7273b 100644 --- a/src/libraries/Common/src/System/Net/WebSockets/WebSocketValidate.cs +++ b/src/libraries/Common/src/System/Net/WebSockets/WebSocketValidate.cs @@ -149,13 +149,8 @@ internal static void ValidateArraySegment(ArraySegment arraySegment, strin } } - internal static void ValidateBuffer(byte[] buffer, int offset, int count) + internal static void ValidateBuffer(byte[] buffer!!, int offset, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0 || offset > buffer.Length) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/Common/src/System/Resources/ResourceWriter.cs b/src/libraries/Common/src/System/Resources/ResourceWriter.cs index b9184070fbc8be..47d30c4bb8da45 100644 --- a/src/libraries/Common/src/System/Resources/ResourceWriter.cs +++ b/src/libraries/Common/src/System/Resources/ResourceWriter.cs @@ -43,14 +43,11 @@ public sealed partial class public #if RESOURCES_EXTENSIONS - PreserializedResourceWriter(string fileName) + PreserializedResourceWriter(string fileName!!) #else - ResourceWriter(string fileName) + ResourceWriter(string fileName!!) #endif { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - _output = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None); _resourceList = new SortedDictionary(FastResourceComparer.Default); _caseInsensitiveDups = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -58,13 +55,11 @@ public sealed partial class public #if RESOURCES_EXTENSIONS - PreserializedResourceWriter(Stream stream) + PreserializedResourceWriter(Stream stream!!) #else - ResourceWriter(Stream stream) + ResourceWriter(Stream stream!!) #endif { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); if (!stream.CanWrite) throw new ArgumentException(SR.Argument_StreamNotWritable); @@ -76,11 +71,8 @@ public sealed partial class // Adds a string resource to the list of resources to be written to a file. // They aren't written until Generate() is called. // - public void AddResource(string name, string? value) + public void AddResource(string name!!, string? value) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (_resourceList == null) throw new InvalidOperationException(SR.InvalidOperation_ResourceWriterSaved); @@ -92,11 +84,8 @@ public void AddResource(string name, string? value) // Adds a resource of type Object to the list of resources to be // written to a file. They aren't written until Generate() is called. // - public void AddResource(string name, object? value) + public void AddResource(string name!!, object? value) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (_resourceList == null) throw new InvalidOperationException(SR.InvalidOperation_ResourceWriterSaved); @@ -117,11 +106,8 @@ public void AddResource(string name, object? value) // written to a file. They aren't written until Generate() is called. // closeAfterWrite parameter indicates whether to close the stream when done. // - public void AddResource(string name, Stream? value, bool closeAfterWrite = false) + public void AddResource(string name!!, Stream? value, bool closeAfterWrite = false) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (_resourceList == null) throw new InvalidOperationException(SR.InvalidOperation_ResourceWriterSaved); @@ -153,11 +139,8 @@ private void AddResourceInternal(string name, Stream? value, bool closeAfterWrit // Adds a named byte array as a resource to the list of resources to // be written to a file. They aren't written until Generate() is called. // - public void AddResource(string name, byte[]? value) + public void AddResource(string name!!, byte[]? value) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (_resourceList == null) throw new InvalidOperationException(SR.InvalidOperation_ResourceWriterSaved); diff --git a/src/libraries/Common/src/System/Runtime/InteropServices/ArrayMarshaller.cs b/src/libraries/Common/src/System/Runtime/InteropServices/ArrayMarshaller.cs index a1b99ab9223774..7dfa067b001035 100644 --- a/src/libraries/Common/src/System/Runtime/InteropServices/ArrayMarshaller.cs +++ b/src/libraries/Common/src/System/Runtime/InteropServices/ArrayMarshaller.cs @@ -5,7 +5,6 @@ // // Types in this file are used for generated p/invokes (docs/design/features/source-generator-pinvokes.md). -// See the DllImportGenerator experiment in https://github.com/dotnet/runtimelab. // #if DLLIMPORTGENERATOR_INTERNALUNSAFE using Internal.Runtime.CompilerServices; diff --git a/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedDllImportAttribute.cs b/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedDllImportAttribute.cs index e64fae1c7ad805..19aeff926a7335 100644 --- a/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedDllImportAttribute.cs +++ b/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedDllImportAttribute.cs @@ -22,14 +22,13 @@ sealed class GeneratedDllImportAttribute : Attribute public CharSet CharSet { get; set; } public string? EntryPoint { get; set; } public bool ExactSpelling { get; set; } - public bool PreserveSig { get; set; } public bool SetLastError { get; set; } public GeneratedDllImportAttribute(string dllName) { - this.Value = dllName; + LibraryName = dllName; } - public string Value { get; private set; } + public string LibraryName { get; private set; } } } diff --git a/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedMarshallingAttribute.cs b/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedMarshallingAttribute.cs index d27ed6f642322f..c594fa3e7b754e 100644 --- a/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedMarshallingAttribute.cs +++ b/src/libraries/Common/src/System/Runtime/InteropServices/GeneratedMarshallingAttribute.cs @@ -5,7 +5,6 @@ // // Types in this file are used for generated p/invokes (docs/design/features/source-generator-pinvokes.md). -// See the DllImportGenerator experiment in https://github.com/dotnet/runtimelab. // namespace System.Runtime.InteropServices { @@ -19,16 +18,6 @@ sealed class GeneratedMarshallingAttribute : Attribute { } - [AttributeUsage(AttributeTargets.Struct)] -#if DLLIMPORT_GENERATOR_TEST - public -#else - internal -#endif - sealed class BlittableTypeAttribute : Attribute - { - } - [AttributeUsage(AttributeTargets.Struct | AttributeTargets.Class)] #if DLLIMPORT_GENERATOR_TEST public diff --git a/src/libraries/Common/src/System/Runtime/InteropServices/HandleRefMarshaller.cs b/src/libraries/Common/src/System/Runtime/InteropServices/HandleRefMarshaller.cs new file mode 100644 index 00000000000000..5278e31ae0e2cf --- /dev/null +++ b/src/libraries/Common/src/System/Runtime/InteropServices/HandleRefMarshaller.cs @@ -0,0 +1,22 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +#nullable enable + + +namespace System.Runtime.InteropServices.GeneratedMarshalling +{ + internal struct HandleRefMarshaller + { + private HandleRef _handle; + + public HandleRefMarshaller(HandleRef handle) + { + _handle = handle; + } + + public IntPtr Value => _handle.Handle; + + public void FreeNative() => GC.KeepAlive(_handle.Wrapper); + } +} diff --git a/src/libraries/Common/src/System/Security/Cryptography/Asn1/AttributeAsn.manual.cs b/src/libraries/Common/src/System/Security/Cryptography/Asn1/AttributeAsn.manual.cs index c9d82c02d409b4..07ac28e32f5bb5 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/Asn1/AttributeAsn.manual.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/Asn1/AttributeAsn.manual.cs @@ -5,13 +5,8 @@ namespace System.Security.Cryptography.Asn1 { internal partial struct AttributeAsn { - public AttributeAsn(AsnEncodedData attribute) + public AttributeAsn(AsnEncodedData attribute!!) { - if (attribute == null) - { - throw new ArgumentNullException(nameof(attribute)); - } - AttrType = attribute.Oid!.Value!; AttrValues = new[] { new ReadOnlyMemory(attribute.RawData) }; } diff --git a/src/libraries/Common/src/System/Security/Cryptography/Asn1/X509ExtensionAsn.manual.cs b/src/libraries/Common/src/System/Security/Cryptography/Asn1/X509ExtensionAsn.manual.cs index 77789901f347a9..4e6b9372bb1417 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/Asn1/X509ExtensionAsn.manual.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/Asn1/X509ExtensionAsn.manual.cs @@ -7,13 +7,8 @@ namespace System.Security.Cryptography.Asn1 { internal partial struct X509ExtensionAsn { - public X509ExtensionAsn(X509Extension extension) + public X509ExtensionAsn(X509Extension extension!!) { - if (extension == null) - { - throw new ArgumentNullException(nameof(extension)); - } - ExtnId = extension.Oid!.Value!; Critical = extension.Critical; ExtnValue = extension.RawData; diff --git a/src/libraries/Common/src/System/Security/Cryptography/CngPkcs8.cs b/src/libraries/Common/src/System/Security/Cryptography/CngPkcs8.cs index a563e4f4f4104d..a57b6b25504bf7 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/CngPkcs8.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/CngPkcs8.cs @@ -34,13 +34,8 @@ internal static bool IsPlatformScheme(PbeParameters pbeParameters) internal static byte[] ExportEncryptedPkcs8PrivateKey( AsymmetricAlgorithm key, ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - { - throw new ArgumentNullException(nameof(pbeParameters)); - } - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, diff --git a/src/libraries/Common/src/System/Security/Cryptography/DSAAndroid.cs b/src/libraries/Common/src/System/Security/Cryptography/DSAAndroid.cs index b04ae6216f2b5d..f43bffb6ed464f 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/DSAAndroid.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/DSAAndroid.cs @@ -206,11 +206,8 @@ protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) protected override bool TryHashData(ReadOnlySpan data, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten) => AsymmetricAlgorithmHelpers.TryHashData(data, destination, hashAlgorithm, out bytesWritten); - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - SafeDsaHandle key = GetKey(); int signatureSize = Interop.AndroidCrypto.DsaEncodedSignatureSize(key); int signatureFieldSize = Interop.AndroidCrypto.DsaSignatureFieldSize(key) * BitsPerByte; @@ -318,13 +315,8 @@ private static ReadOnlySpan SignHash( return destination.Slice(0, actualLength); } - public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) + public override bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); - return VerifySignature((ReadOnlySpan)rgbHash, (ReadOnlySpan)rgbSignature); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/DSACng.ImportExport.cs b/src/libraries/Common/src/System/Security/Cryptography/DSACng.ImportExport.cs index f9ec1cb44be8eb..7f6c02d6bfadca 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/DSACng.ImportExport.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/DSACng.ImportExport.cs @@ -75,11 +75,8 @@ public override void ImportEncryptedPkcs8PrivateKey( public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - return CngPkcs8.ExportEncryptedPkcs8PrivateKey( this, passwordBytes, @@ -88,13 +85,8 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - { - throw new ArgumentNullException(nameof(pbeParameters)); - } - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -113,13 +105,10 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -135,13 +124,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs b/src/libraries/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs index 9393dc735880f4..97b29874bc709a 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/DSACng.SignVerify.cs @@ -17,13 +17,8 @@ public sealed partial class DSACng : DSA // https://docs.microsoft.com/en-us/windows/desktop/api/bcrypt/ns-bcrypt-_bcrypt_dsa_key_blob_v2 private const int WindowsMaxQSize = 32; - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - { - throw new ArgumentNullException(nameof(rgbHash)); - } - Span stackBuf = stackalloc byte[WindowsMaxQSize]; ReadOnlySpan source = AdjustHashSizeIfNecessary(rgbHash, stackBuf); @@ -73,17 +68,8 @@ protected override unsafe bool TryCreateSignatureCore( out bytesWritten); } - public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) + public override bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!) { - if (rgbHash == null) - { - throw new ArgumentNullException(nameof(rgbHash)); - } - if (rgbSignature == null) - { - throw new ArgumentNullException(nameof(rgbSignature)); - } - return VerifySignatureCore(rgbHash, rgbSignature, DSASignatureFormat.IeeeP1363FixedFieldConcatenation); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/DSAOpenSsl.cs b/src/libraries/Common/src/System/Security/Cryptography/DSAOpenSsl.cs index 8a8445fe17f5b3..26b8e6337d92de 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/DSAOpenSsl.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/DSAOpenSsl.cs @@ -210,11 +210,8 @@ protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) protected override bool TryHashData(ReadOnlySpan data, Span destination, HashAlgorithmName hashAlgorithm, out int bytesWritten) => AsymmetricAlgorithmHelpers.TryHashData(data, destination, hashAlgorithm, out bytesWritten); - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - SafeDsaHandle key = GetKey(); int signatureSize = Interop.Crypto.DsaEncodedSignatureSize(key); int signatureFieldSize = Interop.Crypto.DsaSignatureFieldSize(key) * BitsPerByte; @@ -323,17 +320,11 @@ private static ReadOnlySpan SignHash( return destination.Slice(0, actualLength); } - public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) + public override bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); - return VerifySignature((ReadOnlySpan)rgbHash, (ReadOnlySpan)rgbSignature); } - public override bool VerifySignature(ReadOnlySpan hash, ReadOnlySpan signature) => VerifySignatureCore(hash, signature, DSASignatureFormat.IeeeP1363FixedFieldConcatenation); diff --git a/src/libraries/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs b/src/libraries/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs index a804b198d51401..f43a30578f275b 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/DSASecurityTransforms.cs @@ -66,11 +66,8 @@ public override int KeySize } } - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - SecKeyPair keys = GetKeys(); if (keys.PrivateKey == null) @@ -93,13 +90,8 @@ public override byte[] CreateSignature(byte[] rgbHash) return ieeeFormatSignature; } - public override bool VerifySignature(byte[] hash, byte[] signature) + public override bool VerifySignature(byte[] hash!!, byte[] signature!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - return VerifySignature((ReadOnlySpan)hash, (ReadOnlySpan)signature); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroid.Derive.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroid.Derive.cs index dc902e555081bc..ee454e95a39e52 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroid.Derive.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroid.Derive.cs @@ -18,12 +18,11 @@ public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPubl DeriveKeyFromHash(otherPartyPublicKey, HashAlgorithmName.SHA256, null, null); public override byte[] DeriveKeyFromHash( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -37,13 +36,12 @@ public override byte[] DeriveKeyFromHash( } public override byte[] DeriveKeyFromHmac( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? hmacKey, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -57,15 +55,8 @@ public override byte[] DeriveKeyFromHmac( (pubKey, hasher) => DeriveSecretAgreement(pubKey, hasher)); } - public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed) + public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey!!, byte[] prfLabel!!, byte[] prfSeed!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (prfLabel == null) - throw new ArgumentNullException(nameof(prfLabel)); - if (prfSeed == null) - throw new ArgumentNullException(nameof(prfSeed)); - ThrowIfDisposed(); return ECDiffieHellmanDerivation.DeriveKeyTls( diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroidPublicKey.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroidPublicKey.cs index ed59b20f2e2828..b6573a954c8f5f 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroidPublicKey.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanAndroidPublicKey.cs @@ -11,10 +11,8 @@ internal sealed class ECDiffieHellmanAndroidPublicKey : ECDiffieHellmanPublicKey { private ECAndroid _key; - internal ECDiffieHellmanAndroidPublicKey(SafeEcKeyHandle ecKeyHandle) + internal ECDiffieHellmanAndroidPublicKey(SafeEcKeyHandle ecKeyHandle!!) { - if (ecKeyHandle == null) - throw new ArgumentNullException(nameof(ecKeyHandle)); if (ecKeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(ecKeyHandle)); diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.ImportExport.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.ImportExport.cs index ebe5922994637d..1799aad9771ff5 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.ImportExport.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.ImportExport.cs @@ -165,11 +165,8 @@ private void ProcessPkcs8Response(CngPkcs8.Pkcs8Response response) public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - return CngPkcs8.ExportEncryptedPkcs8PrivateKey( this, passwordBytes, @@ -178,13 +175,8 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - { - throw new ArgumentNullException(nameof(pbeParameters)); - } - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -203,13 +195,10 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -225,13 +214,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.cs index f1db21ff401e77..a33996933c6dfb 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanCng.cs @@ -71,12 +71,11 @@ public override KeySizes[] LegalKeySizes } public override byte[] DeriveKeyFromHash( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); using (SafeNCryptSecretHandle secretAgreement = DeriveSecretAgreementHandle(otherPartyPublicKey)) @@ -91,13 +90,12 @@ public override byte[] DeriveKeyFromHash( } public override byte[] DeriveKeyFromHmac( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? hmacKey, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); using (SafeNCryptSecretHandle secretAgreement = DeriveSecretAgreementHandle(otherPartyPublicKey)) @@ -116,15 +114,8 @@ public override byte[] DeriveKeyFromHmac( } } - public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed) + public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey!!, byte[] prfLabel!!, byte[] prfSeed!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (prfLabel == null) - throw new ArgumentNullException(nameof(prfLabel)); - if (prfSeed == null) - throw new ArgumentNullException(nameof(prfSeed)); - using (SafeNCryptSecretHandle secretAgreement = DeriveSecretAgreementHandle(otherPartyPublicKey)) { return Interop.NCrypt.DeriveKeyMaterialTls( diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.Derive.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.Derive.cs index bee07782afc3d9..f31d79f5662d6b 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.Derive.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.Derive.cs @@ -15,12 +15,11 @@ public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPubl DeriveKeyFromHash(otherPartyPublicKey, HashAlgorithmName.SHA256, null, null); public override byte[] DeriveKeyFromHash( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -34,13 +33,12 @@ public override byte[] DeriveKeyFromHash( } public override byte[] DeriveKeyFromHmac( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? hmacKey, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -54,15 +52,8 @@ public override byte[] DeriveKeyFromHmac( (pubKey, hasher) => DeriveSecretAgreement(pubKey, hasher)); } - public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed) + public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey!!, byte[] prfLabel!!, byte[] prfSeed!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (prfLabel == null) - throw new ArgumentNullException(nameof(prfLabel)); - if (prfSeed == null) - throw new ArgumentNullException(nameof(prfSeed)); - ThrowIfDisposed(); return ECDiffieHellmanDerivation.DeriveKeyTls( diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSslPublicKey.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSslPublicKey.cs index d36370d054f9a0..192f2a435d956c 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSslPublicKey.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanOpenSslPublicKey.cs @@ -9,10 +9,8 @@ internal sealed class ECDiffieHellmanOpenSslPublicKey : ECDiffieHellmanPublicKey { private ECOpenSsl _key; - internal ECDiffieHellmanOpenSslPublicKey(SafeEvpPKeyHandle pkeyHandle) + internal ECDiffieHellmanOpenSslPublicKey(SafeEvpPKeyHandle pkeyHandle!!) { - if (pkeyHandle == null) - throw new ArgumentNullException(nameof(pkeyHandle)); if (pkeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(pkeyHandle)); diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanSecurityTransforms.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanSecurityTransforms.cs index ff17de4523cde4..b6b8fe3dcf88ac 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanSecurityTransforms.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDiffieHellmanSecurityTransforms.cs @@ -121,12 +121,11 @@ public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPubl DeriveKeyFromHash(otherPartyPublicKey, HashAlgorithmName.SHA256, null, null); public override byte[] DeriveKeyFromHash( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -140,13 +139,12 @@ public override byte[] DeriveKeyFromHash( } public override byte[] DeriveKeyFromHmac( - ECDiffieHellmanPublicKey otherPartyPublicKey, + ECDiffieHellmanPublicKey otherPartyPublicKey!!, HashAlgorithmName hashAlgorithm, byte[]? hmacKey, byte[]? secretPrepend, byte[]? secretAppend) { - ArgumentNullException.ThrowIfNull(otherPartyPublicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); ThrowIfDisposed(); @@ -160,16 +158,8 @@ public override byte[] DeriveKeyFromHmac( (pubKey, hasher) => DeriveSecretAgreement(pubKey, hasher)); } - public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, - byte[] prfSeed) + public override byte[] DeriveKeyTls(ECDiffieHellmanPublicKey otherPartyPublicKey!!, byte[] prfLabel!!, byte[] prfSeed!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (prfLabel == null) - throw new ArgumentNullException(nameof(prfLabel)); - if (prfSeed == null) - throw new ArgumentNullException(nameof(prfSeed)); - ThrowIfDisposed(); return ECDiffieHellmanDerivation.DeriveKeyTls( diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDsaAndroid.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDsaAndroid.cs index 5ed0a57162b464..f08dad9df4045f 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDsaAndroid.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDsaAndroid.cs @@ -79,11 +79,8 @@ public override KeySizes[] LegalKeySizes } } - public override byte[] SignHash(byte[] hash) + public override byte[] SignHash(byte[] hash!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - ThrowIfDisposed(); SafeEcKeyHandle key = _key.Value; int signatureLength = Interop.AndroidCrypto.EcDsaSize(key); @@ -187,13 +184,8 @@ private static ReadOnlySpan SignHash( return destination.Slice(0, actualLength); } - public override bool VerifyHash(byte[] hash, byte[] signature) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.ImportExport.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.ImportExport.cs index 003c6ba312f40a..867e2d93f61a8a 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.ImportExport.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.ImportExport.cs @@ -182,11 +182,8 @@ private void ProcessPkcs8Response(CngPkcs8.Pkcs8Response response) public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - return CngPkcs8.ExportEncryptedPkcs8PrivateKey( this, passwordBytes, @@ -195,13 +192,8 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - { - throw new ArgumentNullException(nameof(pbeParameters)); - } - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -220,13 +212,10 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -242,13 +231,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.SignVerify.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.SignVerify.cs index 8ecfd35843706a..4b5102319f8f7f 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.SignVerify.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDsaCng.SignVerify.cs @@ -16,11 +16,8 @@ public sealed partial class ECDsaCng : ECDsa /// /// Computes the signature of a hash that was produced by the hash algorithm specified by "hashAlgorithm." /// - public override byte[] SignHash(byte[] hash) + public override byte[] SignHash(byte[] hash!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - int estimatedSize = KeySize switch { 256 => 64, @@ -87,13 +84,8 @@ protected override unsafe bool TrySignHashCore( /// /// Verifies that alleged signature of a hash is, in fact, a valid signature of that hash. /// - public override bool VerifyHash(byte[] hash, byte[] signature) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - return VerifyHashCore(hash, signature, DSASignatureFormat.IeeeP1363FixedFieldConcatenation); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDsaOpenSsl.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDsaOpenSsl.cs index 898fe32d37dc5d..72881df26bdd12 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDsaOpenSsl.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDsaOpenSsl.cs @@ -89,11 +89,8 @@ public override KeySizes[] LegalKeySizes } } - public override byte[] SignHash(byte[] hash) + public override byte[] SignHash(byte[] hash!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - ThrowIfDisposed(); SafeEcKeyHandle key = _key.Value; int signatureLength = Interop.Crypto.EcDsaSize(key); @@ -197,13 +194,8 @@ private static ReadOnlySpan SignHash( return destination.Slice(0, actualLength); } - public override bool VerifyHash(byte[] hash, byte[] signature) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs b/src/libraries/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs index 0f4bcb418c89b2..ff140bac5a8e50 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/ECDsaSecurityTransforms.cs @@ -57,11 +57,8 @@ public override int KeySize } } - public override byte[] SignHash(byte[] hash) + public override byte[] SignHash(byte[] hash!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - SecKeyPair keys = GetKeys(); if (keys.PrivateKey == null) @@ -111,13 +108,8 @@ public override bool TrySignHash(ReadOnlySpan source, Span destinati } } - public override bool VerifyHash(byte[] hash, byte[] signature) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSAAndroid.cs b/src/libraries/Common/src/System/Security/Cryptography/RSAAndroid.cs index 86d98f5014f6cc..2eb658db3ea3eb 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSAAndroid.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSAAndroid.cs @@ -73,13 +73,8 @@ public override KeySizes[] LegalKeySizes } } - public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Decrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - Interop.AndroidCrypto.RsaPadding rsaPadding = GetInteropPadding(padding, out RsaPaddingProcessor? oaepProcessor); SafeRsaHandle key = GetKey(); @@ -109,14 +104,9 @@ public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) public override bool TryDecrypt( ReadOnlySpan data, Span destination, - RSAEncryptionPadding padding, + RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - Interop.AndroidCrypto.RsaPadding rsaPadding = GetInteropPadding(padding, out RsaPaddingProcessor? oaepProcessor); SafeRsaHandle key = GetKey(); @@ -243,13 +233,8 @@ private static bool TryDecrypt( } } - public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Encrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - Interop.AndroidCrypto.RsaPadding rsaPadding = GetInteropPadding(padding, out RsaPaddingProcessor? oaepProcessor); SafeRsaHandle key = GetKey(); @@ -272,13 +257,8 @@ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) return buf; } - public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - Interop.AndroidCrypto.RsaPadding rsaPadding = GetInteropPadding(padding, out RsaPaddingProcessor? oaepProcessor); SafeRsaHandle key = GetKey(); @@ -789,20 +769,11 @@ private bool TrySignHash( } public override bool VerifyHash( - byte[] hash, - byte[] signature, + byte[] hash!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - if (signature == null) - { - throw new ArgumentNullException(nameof(signature)); - } - return VerifyHash(new ReadOnlySpan(hash), new ReadOnlySpan(signature), hashAlgorithm, padding); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSACng.EncryptDecrypt.cs b/src/libraries/Common/src/System/Security/Cryptography/RSACng.EncryptDecrypt.cs index 856cf4b6f2aa21..0ff2474f0f7cee 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSACng.EncryptDecrypt.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSACng.EncryptDecrypt.cs @@ -34,17 +34,8 @@ public override bool TryDecrypt(ReadOnlySpan data, Span destination, // Conveniently, Encrypt() and Decrypt() are identical save for the actual P/Invoke call to CNG. Thus, both // array-based APIs invoke this common helper with the "encrypt" parameter determining whether encryption or decryption is done. - private unsafe byte[] EncryptOrDecrypt(byte[] data, RSAEncryptionPadding padding, bool encrypt) + private unsafe byte[] EncryptOrDecrypt(byte[] data!!, RSAEncryptionPadding padding!!, bool encrypt) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - int modulusSizeInBytes = RsaPaddingProcessor.BytesRequiredForBitCount(KeySize); if (!encrypt && data.Length != modulusSizeInBytes) @@ -126,13 +117,8 @@ private unsafe byte[] EncryptOrDecrypt(byte[] data, RSAEncryptionPadding padding // Conveniently, Encrypt() and Decrypt() are identical save for the actual P/Invoke call to CNG. Thus, both // span-based APIs invoke this common helper with the "encrypt" parameter determining whether encryption or decryption is done. - private unsafe bool TryEncryptOrDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, bool encrypt, out int bytesWritten) + private unsafe bool TryEncryptOrDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, bool encrypt, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - int modulusSizeInBytes = RsaPaddingProcessor.BytesRequiredForBitCount(KeySize); if (!encrypt && data.Length != modulusSizeInBytes) diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSACng.ImportExport.cs b/src/libraries/Common/src/System/Security/Cryptography/RSACng.ImportExport.cs index 66206156ece89e..00db1b73074ffd 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSACng.ImportExport.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSACng.ImportExport.cs @@ -191,11 +191,8 @@ private void ProcessPkcs8Response(CngPkcs8.Pkcs8Response response) public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - return CngPkcs8.ExportEncryptedPkcs8PrivateKey( this, passwordBytes, @@ -204,13 +201,8 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override byte[] ExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (pbeParameters == null) - { - throw new ArgumentNullException(nameof(pbeParameters)); - } - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -229,13 +221,10 @@ public override byte[] ExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -251,13 +240,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSACng.SignVerify.cs b/src/libraries/Common/src/System/Security/Cryptography/RSACng.SignVerify.cs index 947a73416d7d37..b9e3a41e6171c9 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSACng.SignVerify.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSACng.SignVerify.cs @@ -40,13 +40,8 @@ private static int GetHashSizeInBytes(HashAlgorithmName hashAlgorithm) /// /// Computes the signature of a hash that was produced by the hash algorithm specified by "hashAlgorithm." /// - public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) + public override byte[] SignHash(byte[] hash!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - string? hashAlgorithmName = hashAlgorithm.Name; ArgumentException.ThrowIfNullOrEmpty(hashAlgorithmName, nameof(hashAlgorithm)); @@ -127,17 +122,8 @@ public override unsafe bool TrySignHash(ReadOnlySpan hash, Span dest /// /// Verifies that alleged signature of a hash is, in fact, a valid signature of that hash. /// - public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - if (signature == null) - { - throw new ArgumentNullException(nameof(signature)); - } - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature, hashAlgorithm, padding); } diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSAOpenSsl.cs b/src/libraries/Common/src/System/Security/Cryptography/RSAOpenSsl.cs index e87f36e6a0d9d4..b5f1d78caac1df 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSAOpenSsl.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSAOpenSsl.cs @@ -80,13 +80,8 @@ public override KeySizes[] LegalKeySizes } } - public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Decrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - ValidatePadding(padding); SafeEvpPKeyHandle key = GetKey(); int rsaSize = Interop.Crypto.EvpPKeySize(key); @@ -110,12 +105,9 @@ public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) public override bool TryDecrypt( ReadOnlySpan data, Span destination, - RSAEncryptionPadding padding, + RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - ValidatePadding(padding); SafeEvpPKeyHandle key = GetKey(); int keySizeBytes = Interop.Crypto.EvpPKeySize(key); @@ -205,13 +197,8 @@ private static int Decrypt( destination); } - public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Encrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - ValidatePadding(padding); SafeEvpPKeyHandle key = GetKey(); @@ -233,13 +220,8 @@ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) return buf; } - public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - ValidatePadding(padding); SafeEvpPKeyHandle? key = GetKey(); @@ -828,20 +810,11 @@ private bool TrySignHash( } public override bool VerifyHash( - byte[] hash, - byte[] signature, + byte[] hash!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - if (signature == null) - { - throw new ArgumentNullException(nameof(signature)); - } - return VerifyHash(new ReadOnlySpan(hash), new ReadOnlySpan(signature), hashAlgorithm, padding); } @@ -881,13 +854,8 @@ private static ReadOnlyMemory VerifyPkcs8(ReadOnlyMemory pkcs8) } } - private static void ValidatePadding(RSAEncryptionPadding padding) + private static void ValidatePadding(RSAEncryptionPadding padding!!) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - // There are currently two defined padding modes: // * Oaep has an option (the hash algorithm) // * Pkcs1 has no options @@ -902,13 +870,8 @@ private static void ValidatePadding(RSAEncryptionPadding padding) } } - private static void ValidatePadding(RSASignaturePadding padding) + private static void ValidatePadding(RSASignaturePadding padding!!) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - // RSASignaturePadding currently only has the mode property, so // there's no need for a runtime check that PKCS#1 doesn't use // nonsensical options like with RSAEncryptionPadding. diff --git a/src/libraries/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs b/src/libraries/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs index 36c8e026f5d4e9..9e7f7f8f31b32a 100644 --- a/src/libraries/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs +++ b/src/libraries/Common/src/System/Security/Cryptography/RSASecurityTransforms.cs @@ -207,17 +207,8 @@ public override void ImportEncryptedPkcs8PrivateKey( base.ImportEncryptedPkcs8PrivateKey(password, source, out bytesRead); } - public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Encrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - ThrowIfDisposed(); // The size of encrypt is always the keysize (in ceiling-bytes) @@ -234,13 +225,8 @@ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) return output; } - public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - ThrowIfDisposed(); int rsaSize = RsaPaddingProcessor.BytesRequiredForBitCount(KeySize); @@ -303,17 +289,8 @@ public override bool TryEncrypt(ReadOnlySpan data, Span destination, out bytesWritten); } - public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Decrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - SecKeyPair keys = GetKeys(); if (keys.PrivateKey == null) @@ -331,13 +308,8 @@ public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) return Interop.AppleCrypto.RsaDecrypt(keys.PrivateKey, data, padding); } - public override bool TryDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - { - throw new ArgumentNullException(nameof(padding)); - } - SecKeyPair keys = GetKeys(); if (keys.PrivateKey == null) @@ -511,20 +483,11 @@ public override bool TrySignHash(ReadOnlySpan hash, Span destination } public override bool VerifyHash( - byte[] hash, - byte[] signature, + byte[] hash!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - if (signature == null) - { - throw new ArgumentNullException(nameof(signature)); - } - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature, hashAlgorithm, padding); } diff --git a/src/libraries/Common/src/System/Text/DBCSDecoder.cs b/src/libraries/Common/src/System/Text/DBCSDecoder.cs index 24cef3e86216a8..7917f5a8a4d394 100644 --- a/src/libraries/Common/src/System/Text/DBCSDecoder.cs +++ b/src/libraries/Common/src/System/Text/DBCSDecoder.cs @@ -45,11 +45,8 @@ public override int GetCharCount(byte[] bytes, int index, int count) return GetCharCount(bytes, index, count, false); } - public override unsafe int GetCharCount(byte[] bytes, int index, int count, bool flush) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count, bool flush) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -94,11 +91,8 @@ private unsafe int ConvertWithLeftOverByte(byte* bytes, int count, char* chars, return result; } - public unsafe override int GetCharCount(byte* bytes, int count, bool flush) + public unsafe override int GetCharCount(byte* bytes!!, int count, bool flush) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -127,12 +121,9 @@ public override int GetChars(byte[] bytes, int byteIndex, int byteCount, return GetChars(bytes, byteIndex, byteCount, chars, charIndex, false); } - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, bool flush) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, bool flush) { - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -158,11 +149,8 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, } } - public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush) + public unsafe override int GetChars(byte* bytes!!, int byteCount, char* chars!!, int charCount, bool flush) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -196,13 +184,10 @@ public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int return res; } - public override unsafe void Convert(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, int charCount, bool flush, + public override unsafe void Convert(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, int charCount, bool flush, out int bytesUsed, out int charsUsed, out bool completed) { - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -233,12 +218,10 @@ public override unsafe void Convert(byte[] bytes, int byteIndex, int byteCount, } } - public unsafe override void Convert(byte* bytes, int byteCount, - char* chars, int charCount, bool flush, + public unsafe override void Convert(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush, out int bytesUsed, out int charsUsed, out bool completed) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/Common/src/System/Text/OSEncoder.cs b/src/libraries/Common/src/System/Text/OSEncoder.cs index 162cfdb3e5519e..0ee07ef3e888f4 100644 --- a/src/libraries/Common/src/System/Text/OSEncoder.cs +++ b/src/libraries/Common/src/System/Text/OSEncoder.cs @@ -25,11 +25,8 @@ public override void Reset() _charLeftOver = NULL_CHAR; } - public override unsafe int GetByteCount(char[] chars, int index, int count, bool flush) + public override unsafe int GetByteCount(char[] chars!!, int index, int count, bool flush) { - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -73,11 +70,8 @@ private unsafe int ConvertWithLeftOverChar(char* chars, int count, byte* bytes, return result; } - public unsafe override int GetByteCount(char* chars, int count, bool flush) + public unsafe override int GetByteCount(char* chars!!, int count, bool flush) { - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -101,12 +95,9 @@ public unsafe override int GetByteCount(char* chars, int count, bool flush) return ConvertWithLeftOverChar(chars, count, null, 0); } - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, bool flush) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, bool flush) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -132,11 +123,8 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, } } - public unsafe override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush) + public unsafe override int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount, bool flush) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -170,13 +158,10 @@ public unsafe override int GetBytes(char* chars, int charCount, byte* bytes, int return res; } - public override unsafe void Convert(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, int byteCount, bool flush, + public override unsafe void Convert(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, int byteCount, bool flush, out int charsUsed, out int bytesUsed, out bool completed) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -207,12 +192,10 @@ public override unsafe void Convert(char[] chars, int charIndex, int charCount, } } - public override unsafe void Convert(char* chars, int charCount, - byte* bytes, int byteCount, bool flush, + public override unsafe void Convert(char* chars!!, int charCount, + byte* bytes!!, int byteCount, bool flush, out int charsUsed, out int bytesUsed, out bool completed) { - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/Common/src/System/Text/OSEncoding.Windows.cs b/src/libraries/Common/src/System/Text/OSEncoding.Windows.cs index d956fb0fc26cec..ec4af9d9baac87 100644 --- a/src/libraries/Common/src/System/Text/OSEncoding.Windows.cs +++ b/src/libraries/Common/src/System/Text/OSEncoding.Windows.cs @@ -17,11 +17,8 @@ internal OSEncoding(int codePage) : base(codePage) _codePage = codePage; } - public override unsafe int GetByteCount(char[] chars, int index, int count) + public override unsafe int GetByteCount(char[] chars!!, int index, int count) { - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -37,12 +34,8 @@ public override unsafe int GetByteCount(char[] chars, int index, int count) } } - public override unsafe int GetByteCount(string s) + public override unsafe int GetByteCount(string s!!) { - // Validate input - if (s == null) - throw new ArgumentNullException(nameof(s)); - if (s.Length == 0) return 0; @@ -52,11 +45,8 @@ public override unsafe int GetByteCount(string s) } } - public override unsafe int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex) + public override unsafe int GetBytes(string s!!, int charIndex, int charCount, byte[] bytes!!, int byteIndex) { - if (s == null || bytes == null) - throw new ArgumentNullException(s == null ? nameof(s) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -81,11 +71,8 @@ public override unsafe int GetBytes(string s, int charIndex, int charCount, byte } } - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, byte[] bytes!!, int byteIndex) { - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -110,11 +97,8 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, } } - public override unsafe int GetCharCount(byte[] bytes, int index, int count) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -130,11 +114,8 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) } } - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, char[] chars!!, int charIndex) { - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/Common/src/System/Threading/Tasks/TaskToApm.cs b/src/libraries/Common/src/System/Threading/Tasks/TaskToApm.cs index f4aecc5a3f548b..fbaf7a0d9bff6c 100644 --- a/src/libraries/Common/src/System/Threading/Tasks/TaskToApm.cs +++ b/src/libraries/Common/src/System/Threading/Tasks/TaskToApm.cs @@ -63,10 +63,8 @@ public static TResult End(IAsyncResult asyncResult) /// Throws an argument exception for the invalid . [DoesNotReturn] - private static void ThrowArgumentException(IAsyncResult asyncResult) => - throw (asyncResult is null ? - new ArgumentNullException(nameof(asyncResult)) : - new ArgumentException(null, nameof(asyncResult))); + private static void ThrowArgumentException(IAsyncResult asyncResult!!) => + throw new ArgumentException(null, nameof(asyncResult)); /// Provides a simple IAsyncResult that wraps a Task. /// diff --git a/src/libraries/Common/tests/System/Collections/DictionaryEntry.Tests.cs b/src/libraries/Common/tests/System/Collections/DictionaryEntry.Tests.cs new file mode 100644 index 00000000000000..d096f890dc3405 --- /dev/null +++ b/src/libraries/Common/tests/System/Collections/DictionaryEntry.Tests.cs @@ -0,0 +1,40 @@ +// 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 Xunit; + +namespace System.Collections.Tests +{ + public class DictionaryEntry_Tests + { + public static IEnumerable ToString_Inputs() + { + // Mainline scenarios + yield return new object?[] { "key", "value", "[key, value]" }; + yield return new object?[] { 1, 2, "[1, 2]" }; + + // Types, nulls, and empty strings get standard ToString behavior + yield return new object?[] { typeof(object), (object?)null, "[System.Object, ]" }; + yield return new object?[] { (object?)null, (object?)null, "[, ]" }; + yield return new object?[] { "", "", "[, ]" }; + + // There's no escaping; keys and values are emitted as-is + yield return new object?[] { "[key, value", "]]", "[[key, value, ]]]" }; + yield return new object?[] { new DictionaryEntry("key", "key"), new DictionaryEntry("value", "value"), "[[key, key], [value, value]]" }; + + // There's no truncation; keys and values are emitted as-is + yield return new object?[] { new String('K', 512), new String('V', 1024), $"[{new String('K', 512)}, {new String('V', 1024)}]" }; + } + + [Theory] + [MemberData(nameof(ToString_Inputs))] + public void ToString_FormatsKeyValue(object key, object? value, string expected) + { + var entry = new DictionaryEntry(key, value); + string result = entry.ToString(); + + Assert.Equal(expected, result); + } + } +} diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.SslProtocols.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.SslProtocols.cs index 5a643c09aec385..d6ecb3bca3a2dc 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.SslProtocols.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.SslProtocols.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; +using System.ComponentModel; using System.IO; using System.Net.Security; using System.Net.Test.Common; @@ -294,9 +295,10 @@ await LoopbackServer.CreateServerAsync(async (server, url) => { await serverTask; } - catch (Exception e) when (e is IOException || e is AuthenticationException) + catch (Exception e) when (e is IOException || e is AuthenticationException || e is Win32Exception) { // Some SSL implementations simply close or reset connection after protocol mismatch. + // The call may fail if neither of the requested protocols is available // Newer OpenSSL sends Fatal Alert message before closing. return; } diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/LocalEchoServer.props b/src/libraries/Common/tests/System/Net/Prerequisites/LocalEchoServer.props index 3df500bdb8e3ea..20e6e140c58a2d 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/LocalEchoServer.props +++ b/src/libraries/Common/tests/System/Net/Prerequisites/LocalEchoServer.props @@ -3,11 +3,11 @@ <_TestEchoMiddleware Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OS)' == 'Windows_NT'">%HELIX_CORRELATION_PAYLOAD%/xharness/TestEchoMiddleware <_TestEchoMiddleware Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OS)' != 'Windows_NT'">$HELIX_CORRELATION_PAYLOAD/xharness/TestEchoMiddleware - <_TestEchoMiddleware Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(ArtifactsDir)bin/NetCoreServer/$(AspNetCoreAppCurrent)-$(Configuration) + <_TestEchoMiddleware Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(ArtifactsDir)bin/NetCoreServer/$(Configuration)/$(AspNetCoreAppCurrent) <_RemoteLoopMiddleware Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OS)' == 'Windows_NT'">%HELIX_CORRELATION_PAYLOAD%/xharness/RemoteLoopMiddleware <_RemoteLoopMiddleware Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(OS)' != 'Windows_NT'">$HELIX_CORRELATION_PAYLOAD/xharness/RemoteLoopMiddleware - <_RemoteLoopMiddleware Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(ArtifactsDir)bin/RemoteLoopServer/$(AspNetCoreAppCurrent)-$(Configuration) + <_RemoteLoopMiddleware Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(ArtifactsDir)bin/RemoteLoopServer/$(Configuration)/$(AspNetCoreAppCurrent) $(WasmXHarnessArgs) --web-server-use-cors --web-server-use-https $(WasmXHarnessArgs) --set-web-server-http-env=DOTNET_TEST_WEBSOCKETHOST,DOTNET_TEST_HTTPHOST,DOTNET_TEST_REMOTE_LOOP_HOST diff --git a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/Symmetric/SymmetricOneShotBase.cs b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/Symmetric/SymmetricOneShotBase.cs index 42a9b584366d95..d1059b092fbb0e 100644 --- a/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/Symmetric/SymmetricOneShotBase.cs +++ b/src/libraries/Common/tests/System/Security/Cryptography/AlgorithmImplementations/Symmetric/SymmetricOneShotBase.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using System.Security.Cryptography; +using Microsoft.DotNet.XUnitExtensions; using Test.Cryptography; using Xunit; @@ -408,6 +409,33 @@ public void DerivedTypesDefineTest() Assert.Empty(missingMethods); } + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindows7))] + public void DecryptOneShot_Cfb8_ToleratesExtraPadding() + { + using (SymmetricAlgorithm alg = CreateAlgorithm()) + { + if (alg is RC2) + { + throw new SkipTestException("RC2 does not support CFB."); + } + + alg.Key = Key; + + // This is a plaintext that is manually padded. It contains one byte of + // data, padded up to the block size, in bytes, of the algorithm. + Span excessPadding = new byte[alg.BlockSize / 8]; + excessPadding.Fill((byte)(alg.BlockSize / 8 - 1)); + excessPadding[0] = 0x42; + + // Use paddingMode: None since we manually padded our data + byte[] ciphertext = alg.EncryptCfb(excessPadding, IV, paddingMode: PaddingMode.None, feedbackSizeInBits: 8); + + // Now decrypt it with PKCS7 padding mode. It should remove all but the first byte since it is not padding. + byte[] decrypted = alg.DecryptCfb(ciphertext, IV, paddingMode: PaddingMode.PKCS7, feedbackSizeInBits: 8); + Assert.Equal(new byte[] { 0x42 }, decrypted); + } + } + private static void AssertPlaintexts(ReadOnlySpan expected, ReadOnlySpan actual, PaddingMode padding) { if (padding == PaddingMode.Zeros) diff --git a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.Windows.cs b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.Windows.cs index 4bb55c0efd29b8..77947644ddd50a 100644 --- a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.Windows.cs +++ b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.Windows.cs @@ -56,7 +56,12 @@ public static partial class PlatformDetection // >= Windows 10 20H1 Update public static bool IsWindows10Version2004OrGreater => IsWindowsVersionOrLater(10, 0, 19041); - public static bool IsWindows10Version2004Build19573OrGreater => IsWindowsVersionOrLater(10, 0, 19573); + // WinHTTP update + public static bool IsWindows10Version19573OrGreater => IsWindowsVersionOrLater(10, 0, 19573); + + // Windows Server 2022 + public static bool IsWindows10Version20348OrGreater => IsWindowsVersionOrLater(10, 0, 20348); + // Windows 11 aka 21H2 public static bool IsWindows10Version22000OrGreater => IsWindowsVersionOrLater(10, 0, 22000); diff --git a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs index b35772c86df672..4698cd845fd895 100644 --- a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs +++ b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs @@ -342,34 +342,59 @@ private static bool GetIsInContainer() return (IsLinux && File.Exists("/.dockerenv")); } - private static bool GetSsl3Support() + private static bool GetProtocolSupportFromWindowsRegistry(SslProtocols protocol, bool defaultProtocolSupport) { - if (IsWindows) + string registryProtocolName = protocol switch { - string clientKey = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client"; - string serverKey = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"; +#pragma warning disable CS0618 // Ssl2 and Ssl3 are obsolete + SslProtocols.Ssl3 => "SSL 3.0", +#pragma warning restore CS0618 + SslProtocols.Tls => "TLS 1.0", + SslProtocols.Tls11 => "TLS 1.1", + SslProtocols.Tls12 => "TLS 1.2", +#if !NETFRAMEWORK + SslProtocols.Tls13 => "TLS 1.3", +#endif + _ => throw new Exception($"Registry key not defined for {protocol}.") + }; - object client, server; - try - { - client = Registry.GetValue(clientKey, "Enabled", null); - server = Registry.GetValue(serverKey, "Enabled", null); - } - catch (SecurityException) - { - // Insufficient permission, assume that we don't have SSL3 (since we aren't exactly sure) - return false; - } + string clientKey = @$"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\{registryProtocolName}\Client"; + string serverKey = @$"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\{registryProtocolName}\Server"; + object client, server; + try + { + client = Registry.GetValue(clientKey, "Enabled", defaultProtocolSupport ? 1 : 0); + server = Registry.GetValue(serverKey, "Enabled", defaultProtocolSupport ? 1 : 0); if (client is int c && server is int s) { return c == 1 && s == 1; } + } + catch (SecurityException) + { + // Insufficient permission, assume that we don't have protocol support (since we aren't exactly sure) + return false; + } + catch { } + + return defaultProtocolSupport; + } + + private static bool GetSsl3Support() + { + if (IsWindows) + { // Missing key. If we're pre-20H1 then assume SSL3 is enabled. // Otherwise, disabled. (See comments on https://github.com/dotnet/runtime/issues/1166) // Alternatively the returned values must have been some other types. - return !IsWindows10Version2004OrGreater; + bool ssl3DefaultSupport = !IsWindows10Version2004OrGreater; + +#pragma warning disable CS0618 // Ssl2 and Ssl3 are obsolete + return GetProtocolSupportFromWindowsRegistry(SslProtocols.Ssl3, ssl3DefaultSupport); +#pragma warning restore CS0618 + } return (IsOSX || (IsLinux && OpenSslVersion < new Version(1, 0, 2) && !IsDebian)); @@ -393,9 +418,13 @@ private static bool AndroidGetSslProtocolSupport(SslProtocols protocol) private static bool GetTls10Support() { // on Windows, macOS, and Android TLS1.0/1.1 are supported. - if (IsWindows || IsOSXLike || IsAndroid) + if (IsOSXLike || IsAndroid) { return true; + } + if (IsWindows) + { + return GetProtocolSupportFromWindowsRegistry(SslProtocols.Tls, true); } return OpenSslGetTlsSupport(SslProtocols.Tls); @@ -403,11 +432,12 @@ private static bool GetTls10Support() private static bool GetTls11Support() { - // on Windows, macOS, and Android TLS1.0/1.1 are supported. - // TLS 1.1 and 1.2 can work on Windows7 but it is not enabled by default. + // on Windows, macOS, and Android TLS1.0/1.1 are supported. if (IsWindows) { - return !IsWindows7; + // TLS 1.1 and 1.2 can work on Windows7 but it is not enabled by default. + bool defaultProtocolSupport = !IsWindows7; + return GetProtocolSupportFromWindowsRegistry(SslProtocols.Tls11, defaultProtocolSupport); } else if (IsOSXLike || IsAndroid) { @@ -420,7 +450,8 @@ private static bool GetTls11Support() private static bool GetTls12Support() { // TLS 1.1 and 1.2 can work on Windows7 but it is not enabled by default. - return !IsWindows7; + bool defaultProtocolSupport = !IsWindows7; + return GetProtocolSupportFromWindowsRegistry(SslProtocols.Tls12, defaultProtocolSupport); } private static bool GetTls13Support() @@ -431,25 +462,17 @@ private static bool GetTls13Support() { return false; } - - string clientKey = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client"; - string serverKey = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server"; - - object client, server; - try - { - client = Registry.GetValue(clientKey, "Enabled", null); - server = Registry.GetValue(serverKey, "Enabled", null); - if (client is int c && server is int s) - { - return c == 1 && s == 1; - } - } - catch { } // assume no if positive entry is missing on older Windows // Latest insider builds have TLS 1.3 enabled by default. // The build number is approximation. - return IsWindows10Version2004Build19573OrGreater; + bool defaultProtocolSupport = IsWindows10Version20348OrGreater; + +#if NETFRAMEWORK + return false; +#else + return GetProtocolSupportFromWindowsRegistry(SslProtocols.Tls13, defaultProtocolSupport); +#endif + } else if (IsOSX || IsMacCatalyst || IsiOS || IstvOS) { diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets index c6bb21939404be..1998f6196df53b 100644 --- a/src/libraries/Directory.Build.targets +++ b/src/libraries/Directory.Build.targets @@ -1,4 +1,4 @@ - + @@ -155,24 +155,6 @@ - - - - - $(UndefineProperties);TargetFramework;Platform - Configuration=$(CoreCLRConfiguration) - Configuration=$(MonoConfiguration) - false - - - - - None - - - false diff --git a/src/libraries/Microsoft.Extensions.Caching.Abstractions/src/PostEvictionCallbackRegistration.cs b/src/libraries/Microsoft.Extensions.Caching.Abstractions/src/PostEvictionCallbackRegistration.cs index 532ffa2385ad08..4c4c950a45569d 100644 --- a/src/libraries/Microsoft.Extensions.Caching.Abstractions/src/PostEvictionCallbackRegistration.cs +++ b/src/libraries/Microsoft.Extensions.Caching.Abstractions/src/PostEvictionCallbackRegistration.cs @@ -5,8 +5,8 @@ namespace Microsoft.Extensions.Caching.Memory { public class PostEvictionCallbackRegistration { - public PostEvictionDelegate EvictionCallback { get; set; } + public PostEvictionDelegate? EvictionCallback { get; set; } - public object State { get; set; } + public object? State { get; set; } } } diff --git a/src/libraries/Microsoft.Extensions.Caching.Memory/src/CacheEntry.cs b/src/libraries/Microsoft.Extensions.Caching.Memory/src/CacheEntry.cs index e9974c542c2259..d92f88aa26e673 100644 --- a/src/libraries/Microsoft.Extensions.Caching.Memory/src/CacheEntry.cs +++ b/src/libraries/Microsoft.Extensions.Caching.Memory/src/CacheEntry.cs @@ -24,10 +24,10 @@ internal sealed partial class CacheEntry : ICacheEntry private object _value; private CacheEntryState _state; - internal CacheEntry(object key, MemoryCache memoryCache) + internal CacheEntry(object key!!, MemoryCache memoryCache!!) { - Key = key ?? throw new ArgumentNullException(nameof(key)); - _cache = memoryCache ?? throw new ArgumentNullException(nameof(memoryCache)); + Key = key; + _cache = memoryCache; _previous = memoryCache.TrackLinkedCacheEntries ? CacheEntryHelper.EnterScope(this) : null; _state = new CacheEntryState(CacheItemPriority.Normal); } diff --git a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCache.cs b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCache.cs index 271c136fd2ce31..73096238128a97 100644 --- a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCache.cs +++ b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCache.cs @@ -40,18 +40,8 @@ public MemoryCache(IOptions optionsAccessor) /// /// The options of the cache. /// The factory used to create loggers. - public MemoryCache(IOptions optionsAccessor, ILoggerFactory loggerFactory) + public MemoryCache(IOptions optionsAccessor!!, ILoggerFactory loggerFactory!!) { - if (optionsAccessor == null) - { - throw new ArgumentNullException(nameof(optionsAccessor)); - } - - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - _options = optionsAccessor.Value; _logger = loggerFactory.CreateLogger(); @@ -204,9 +194,8 @@ internal void SetEntry(CacheEntry entry) } /// - public bool TryGetValue(object key, out object result) + public bool TryGetValue(object key!!, out object result) { - ValidateCacheKey(key); CheckDisposed(); DateTimeOffset utcNow = _options.Clock.UtcNow; @@ -246,9 +235,8 @@ public bool TryGetValue(object key, out object result) } /// - public void Remove(object key) + public void Remove(object key!!) { - ValidateCacheKey(key); CheckDisposed(); CoherentState coherentState = _coherentState; // Clear() can update the reference in the meantime @@ -497,14 +485,8 @@ private void CheckDisposed() static void Throw() => throw new ObjectDisposedException(typeof(MemoryCache).FullName); } - private static void ValidateCacheKey(object key) + private static void ValidateCacheKey(object key!!) { - if (key == null) - { - Throw(); - } - - static void Throw() => throw new ArgumentNullException(nameof(key)); } private sealed class CoherentState diff --git a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCacheServiceCollectionExtensions.cs b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCacheServiceCollectionExtensions.cs index 7fd0295cc67926..6e754b5d9c9f15 100644 --- a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCacheServiceCollectionExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryCacheServiceCollectionExtensions.cs @@ -19,13 +19,8 @@ public static class MemoryCacheServiceCollectionExtensions /// /// The to add services to. /// The so that additional calls can be chained. - public static IServiceCollection AddMemoryCache(this IServiceCollection services) + public static IServiceCollection AddMemoryCache(this IServiceCollection services!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.AddOptions(); services.TryAdd(ServiceDescriptor.Singleton()); @@ -41,18 +36,8 @@ public static IServiceCollection AddMemoryCache(this IServiceCollection services /// The to configure the provided . /// /// The so that additional calls can be chained. - public static IServiceCollection AddMemoryCache(this IServiceCollection services, Action setupAction) + public static IServiceCollection AddMemoryCache(this IServiceCollection services!!, Action setupAction!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (setupAction == null) - { - throw new ArgumentNullException(nameof(setupAction)); - } - services.AddMemoryCache(); services.Configure(setupAction); @@ -73,13 +58,8 @@ public static IServiceCollection AddMemoryCache(this IServiceCollection services /// /// The to add services to. /// The so that additional calls can be chained. - public static IServiceCollection AddDistributedMemoryCache(this IServiceCollection services) + public static IServiceCollection AddDistributedMemoryCache(this IServiceCollection services!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.AddOptions(); services.TryAdd(ServiceDescriptor.Singleton()); @@ -103,18 +83,8 @@ public static IServiceCollection AddDistributedMemoryCache(this IServiceCollecti /// The to configure the provided . /// /// The so that additional calls can be chained. - public static IServiceCollection AddDistributedMemoryCache(this IServiceCollection services, Action setupAction) + public static IServiceCollection AddDistributedMemoryCache(this IServiceCollection services!!, Action setupAction!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (setupAction == null) - { - throw new ArgumentNullException(nameof(setupAction)); - } - services.AddDistributedMemoryCache(); services.Configure(setupAction); diff --git a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryDistributedCache.cs b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryDistributedCache.cs index ec8d34cb35851b..698c2b7004db0b 100644 --- a/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryDistributedCache.cs +++ b/src/libraries/Microsoft.Extensions.Caching.Memory/src/MemoryDistributedCache.cs @@ -18,58 +18,23 @@ public class MemoryDistributedCache : IDistributedCache public MemoryDistributedCache(IOptions optionsAccessor) : this(optionsAccessor, NullLoggerFactory.Instance) { } - public MemoryDistributedCache(IOptions optionsAccessor, ILoggerFactory loggerFactory) + public MemoryDistributedCache(IOptions optionsAccessor!!, ILoggerFactory loggerFactory!!) { - if (optionsAccessor == null) - { - throw new ArgumentNullException(nameof(optionsAccessor)); - } - - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - _memCache = new MemoryCache(optionsAccessor.Value, loggerFactory); } - public byte[] Get(string key) + public byte[] Get(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return (byte[])_memCache.Get(key); } - public Task GetAsync(string key, CancellationToken token = default(CancellationToken)) + public Task GetAsync(string key!!, CancellationToken token = default(CancellationToken)) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return Task.FromResult(Get(key)); } - public void Set(string key, byte[] value, DistributedCacheEntryOptions options) + public void Set(string key!!, byte[] value!!, DistributedCacheEntryOptions options!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - var memoryCacheEntryOptions = new MemoryCacheEntryOptions(); memoryCacheEntryOptions.AbsoluteExpiration = options.AbsoluteExpiration; memoryCacheEntryOptions.AbsoluteExpirationRelativeToNow = options.AbsoluteExpirationRelativeToNow; @@ -79,65 +44,30 @@ public void Set(string key, byte[] value, DistributedCacheEntryOptions options) _memCache.Set(key, value, memoryCacheEntryOptions); } - public Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, CancellationToken token = default(CancellationToken)) + public Task SetAsync(string key!!, byte[] value!!, DistributedCacheEntryOptions options!!, CancellationToken token = default(CancellationToken)) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - Set(key, value, options); return Task.CompletedTask; } - public void Refresh(string key) + public void Refresh(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - _memCache.TryGetValue(key, out _); } - public Task RefreshAsync(string key, CancellationToken token = default(CancellationToken)) + public Task RefreshAsync(string key!!, CancellationToken token = default(CancellationToken)) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - Refresh(key); return Task.CompletedTask; } - public void Remove(string key) + public void Remove(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - _memCache.Remove(key); } - public Task RemoveAsync(string key, CancellationToken token = default(CancellationToken)) + public Task RemoveAsync(string key!!, CancellationToken token = default(CancellationToken)) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - Remove(key); return Task.CompletedTask; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationExtensions.cs index 07999be0e72bc9..d10c4bdfd1bc88 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationExtensions.cs @@ -94,13 +94,8 @@ public static bool Exists([NotNullWhen(true)] this IConfigurationSection? sectio /// If no matching sub-section is found with the specified key, an exception is raised. /// /// There is no section with key . - public static IConfigurationSection GetRequiredSection(this IConfiguration configuration, string key) + public static IConfigurationSection GetRequiredSection(this IConfiguration configuration!!, string key) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - IConfigurationSection section = configuration.GetSection(key); if (section.Exists()) { diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationPath.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationPath.cs index 814d9113c840fa..0ee4036cca37c5 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationPath.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationPath.cs @@ -22,12 +22,8 @@ public static class ConfigurationPath /// /// The path segments to combine. /// The combined path. - public static string Combine(params string[] pathSegments) + public static string Combine(params string[] pathSegments!!) { - if (pathSegments == null) - { - throw new ArgumentNullException(nameof(pathSegments)); - } return string.Join(KeyDelimiter, pathSegments); } @@ -36,12 +32,8 @@ public static string Combine(params string[] pathSegments) /// /// The path segments to combine. /// The combined path. - public static string Combine(IEnumerable pathSegments) + public static string Combine(IEnumerable pathSegments!!) { - if (pathSegments == null) - { - throw new ArgumentNullException(nameof(pathSegments)); - } return string.Join(KeyDelimiter, pathSegments); } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs index 09d4f271aba72f..9e361370cc7bbf 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs @@ -42,13 +42,8 @@ public static class ConfigurationBinder /// Configures the binder options. /// The new instance of T if successful, default(T) otherwise. [RequiresUnreferencedCode(TrimmingWarningMessage)] - public static T? Get<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration, Action? configureOptions) + public static T? Get<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration!!, Action? configureOptions) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - object? result = configuration.Get(typeof(T), configureOptions); if (result == null) { @@ -80,16 +75,11 @@ public static class ConfigurationBinder /// The new instance if successful, null otherwise. [RequiresUnreferencedCode(TrimmingWarningMessage)] public static object? Get( - this IConfiguration configuration, + this IConfiguration configuration!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type, Action? configureOptions) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - var options = new BinderOptions(); configureOptions?.Invoke(options); return BindInstance(type, instance: null, config: configuration, options: options); @@ -121,13 +111,8 @@ public static void Bind(this IConfiguration configuration, object? instance) /// The object to bind. /// Configures the binder options. [RequiresUnreferencedCode(InstanceGetTypeTrimmingWarningMessage)] - public static void Bind(this IConfiguration configuration, object? instance, Action? configureOptions) + public static void Bind(this IConfiguration configuration!!, object? instance, Action? configureOptions) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - if (instance != null) { var options = new BinderOptions(); @@ -457,29 +442,23 @@ private static void BindDictionary( // We only support string and enum keys return; } - + MethodInfo tryGetValue = dictionaryType.GetMethod("TryGetValue")!; PropertyInfo setter = dictionaryType.GetProperty("Item", DeclaredOnlyLookup)!; foreach (IConfigurationSection child in config.GetChildren()) { try { + object key = keyTypeIsEnum ? Enum.Parse(keyType, child.Key) : child.Key; + var args = new object?[] { key, null }; + _ = tryGetValue.Invoke(dictionary, args); object? item = BindInstance( type: valueType, - instance: null, + instance: args[1], config: child, options: options); if (item != null) { - if (keyType == typeof(string)) - { - string key = child.Key; - setter.SetValue(dictionary, item, new object[] { key }); - } - else if (keyTypeIsEnum) - { - object key = Enum.Parse(keyType, child.Key); - setter.SetValue(dictionary, item, new object[] { key }); - } + setter.SetValue(dictionary, item, new object[] { key }); } } catch @@ -673,13 +652,8 @@ private static List GetAllProperties( options); } - private static string GetPropertyName(MemberInfo property) + private static string GetPropertyName(MemberInfo property!!) { - if (property == null) - { - throw new ArgumentNullException(nameof(property)); - } - // Check for a custom property name used for configuration key binding foreach (var attributeData in property.GetCustomAttributesData()) { diff --git a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/ConfigurationCollectionBindingTests.cs b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/ConfigurationCollectionBindingTests.cs index 38ab7766d391d6..8f97ce2e7c7f40 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/ConfigurationCollectionBindingTests.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Binder/tests/ConfigurationCollectionBindingTests.cs @@ -483,6 +483,77 @@ public void StringDictionaryBinding() Assert.Equal("val_3", options.StringDictionary["ghi"]); } + [Fact] + public void ShouldPreserveExistingKeysInDictionary() + { + var input = new Dictionary { { "ascii:b", "98" } }; + var config = new ConfigurationBuilder().AddInMemoryCollection(input).Build(); + var origin = new Dictionary { ["a"] = 97 }; + + config.Bind("ascii", origin); + + Assert.Equal(2, origin.Count); + Assert.Equal(97, origin["a"]); + Assert.Equal(98, origin["b"]); + } + + [Fact] + public void ShouldPreserveExistingKeysInNestedDictionary() + { + var input = new Dictionary { ["ascii:b"] = "98" }; + var config = new ConfigurationBuilder().AddInMemoryCollection(input).Build(); + var origin = new Dictionary> + { + ["ascii"] = new Dictionary { ["a"] = 97 } + }; + + config.Bind(origin); + + Assert.Equal(2, origin["ascii"].Count); + Assert.Equal(97, origin["ascii"]["a"]); + Assert.Equal(98, origin["ascii"]["b"]); + } + + [Fact] + public void ShouldPreserveExistingKeysInDictionaryWithEnumAsKeyType() + { + var input = new Dictionary + { + ["abc:def"] = "val_2", + ["abc:ghi"] = "val_3" + }; + var config = new ConfigurationBuilder().AddInMemoryCollection(input).Build(); + var origin = new Dictionary> + { + [KeyEnum.abc] = new Dictionary { [KeyUintEnum.abc] = "val_1" } + }; + + config.Bind(origin); + + Assert.Equal(3, origin[KeyEnum.abc].Count); + Assert.Equal("val_1", origin[KeyEnum.abc][KeyUintEnum.abc]); + Assert.Equal("val_2", origin[KeyEnum.abc][KeyUintEnum.def]); + Assert.Equal("val_3", origin[KeyEnum.abc][KeyUintEnum.ghi]); + } + + [Fact] + public void ShouldPreserveExistingValuesInArrayWhenItIsDictionaryElement() + { + var input = new Dictionary + { + ["ascii:b"] = "98", + }; + var config = new ConfigurationBuilder().AddInMemoryCollection(input).Build(); + var origin = new Dictionary + { + ["ascii"] = new int[] { 97 } + }; + + config.Bind(origin); + + Assert.Equal(new int[] { 97, 98 }, origin["ascii"]); + } + [Fact] public void AlreadyInitializedStringDictionaryBinding() { diff --git a/src/libraries/Microsoft.Extensions.Configuration.CommandLine/src/CommandLineConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration.CommandLine/src/CommandLineConfigurationProvider.cs index a41d6f541d02fe..ac17d7009fe06a 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.CommandLine/src/CommandLineConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.CommandLine/src/CommandLineConfigurationProvider.cs @@ -18,9 +18,9 @@ public class CommandLineConfigurationProvider : ConfigurationProvider /// /// The command line args. /// The switch mappings. - public CommandLineConfigurationProvider(IEnumerable args, IDictionary? switchMappings = null) + public CommandLineConfigurationProvider(IEnumerable args!!, IDictionary? switchMappings = null) { - Args = args ?? throw new ArgumentNullException(nameof(args)); + Args = args; if (switchMappings != null) { diff --git a/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationExtensions.cs index 815905130036ab..072e398f2c7c33 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationExtensions.cs @@ -20,14 +20,9 @@ public static class FileConfigurationExtensions /// The to add to. /// The default file provider instance. /// The . - public static IConfigurationBuilder SetFileProvider(this IConfigurationBuilder builder, IFileProvider fileProvider) + public static IConfigurationBuilder SetFileProvider(this IConfigurationBuilder builder!!, IFileProvider fileProvider!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - builder.Properties[FileProviderKey] = fileProvider ?? throw new ArgumentNullException(nameof(fileProvider)); + builder.Properties[FileProviderKey] = fileProvider; return builder; } @@ -36,13 +31,8 @@ public static IConfigurationBuilder SetFileProvider(this IConfigurationBuilder b /// /// The . /// The default . - public static IFileProvider GetFileProvider(this IConfigurationBuilder builder) + public static IFileProvider GetFileProvider(this IConfigurationBuilder builder!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - if (builder.Properties.TryGetValue(FileProviderKey, out object? provider)) { return (IFileProvider)provider; @@ -57,18 +47,8 @@ public static IFileProvider GetFileProvider(this IConfigurationBuilder builder) /// The to add to. /// The absolute path of file-based providers. /// The . - public static IConfigurationBuilder SetBasePath(this IConfigurationBuilder builder, string basePath) + public static IConfigurationBuilder SetBasePath(this IConfigurationBuilder builder!!, string basePath!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (basePath == null) - { - throw new ArgumentNullException(nameof(basePath)); - } - return builder.SetFileProvider(new PhysicalFileProvider(basePath)); } @@ -78,13 +58,8 @@ public static IConfigurationBuilder SetBasePath(this IConfigurationBuilder build /// The to add to. /// The Action to be invoked on a file load exception. /// The . - public static IConfigurationBuilder SetFileLoadExceptionHandler(this IConfigurationBuilder builder, Action handler) + public static IConfigurationBuilder SetFileLoadExceptionHandler(this IConfigurationBuilder builder!!, Action handler) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - builder.Properties[FileLoadExceptionHandlerKey] = handler; return builder; } @@ -94,13 +69,8 @@ public static IConfigurationBuilder SetFileLoadExceptionHandler(this IConfigurat /// /// The . /// The . - public static Action? GetFileLoadExceptionHandler(this IConfigurationBuilder builder) + public static Action? GetFileLoadExceptionHandler(this IConfigurationBuilder builder!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - if (builder.Properties.TryGetValue(FileLoadExceptionHandlerKey, out object? handler)) { return handler as Action; diff --git a/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationProvider.cs index 60811023f6b38d..a8620f0bdbe850 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.FileExtensions/src/FileConfigurationProvider.cs @@ -23,9 +23,9 @@ public abstract class FileConfigurationProvider : ConfigurationProvider, IDispos /// Initializes a new instance with the specified source. /// /// The source settings. - public FileConfigurationProvider(FileConfigurationSource source) + public FileConfigurationProvider(FileConfigurationSource source!!) { - Source = source ?? throw new ArgumentNullException(nameof(source)); + Source = source; if (Source.ReloadOnChange && Source.FileProvider != null) { diff --git a/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniConfigurationExtensions.cs index ab5442a9195757..2c3802993713e8 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniConfigurationExtensions.cs @@ -62,12 +62,8 @@ public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builde /// Whether the file is optional. /// Whether the configuration should be reloaded if the file changes. /// The . - public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder, IFileProvider? provider, string path, bool optional, bool reloadOnChange) + public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder!!, IFileProvider? provider, string path, bool optional, bool reloadOnChange) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } if (string.IsNullOrEmpty(path)) { throw new ArgumentException(SR.Error_InvalidFilePath, nameof(path)); @@ -98,13 +94,8 @@ public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builde /// The to add to. /// The to read the ini configuration data from. /// The . - public static IConfigurationBuilder AddIniStream(this IConfigurationBuilder builder, Stream stream) + public static IConfigurationBuilder AddIniStream(this IConfigurationBuilder builder!!, Stream stream) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - return builder.Add(s => s.Stream = stream); } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs index bf3a83cbad4556..b49c1a8642d4ff 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs @@ -62,12 +62,8 @@ public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder build /// Whether the file is optional. /// Whether the configuration should be reloaded if the file changes. /// The . - public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder, IFileProvider? provider, string path, bool optional, bool reloadOnChange) + public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder!!, IFileProvider? provider, string path, bool optional, bool reloadOnChange) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } if (string.IsNullOrEmpty(path)) { throw new ArgumentException(SR.Error_InvalidFilePath, nameof(path)); @@ -98,13 +94,8 @@ public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder build /// The to add to. /// The to read the json configuration data from. /// The . - public static IConfigurationBuilder AddJsonStream(this IConfigurationBuilder builder, Stream stream) + public static IConfigurationBuilder AddJsonStream(this IConfigurationBuilder builder!!, Stream stream) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - return builder.Add(s => s.Stream = stream); } } diff --git a/src/libraries/Microsoft.Extensions.Configuration.UserSecrets/src/UserSecretsConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.UserSecrets/src/UserSecretsConfigurationExtensions.cs index 0b683da9140fa6..db166c2c88d4a2 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.UserSecrets/src/UserSecretsConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.UserSecrets/src/UserSecretsConfigurationExtensions.cs @@ -116,18 +116,8 @@ public static IConfigurationBuilder AddUserSecrets(this IConfigurationBuilder co /// Whether the configuration should be reloaded if the file changes. /// Thrown when is false and does not have a valid . /// The configuration builder. - public static IConfigurationBuilder AddUserSecrets(this IConfigurationBuilder configuration, Assembly assembly, bool optional, bool reloadOnChange) + public static IConfigurationBuilder AddUserSecrets(this IConfigurationBuilder configuration!!, Assembly assembly!!, bool optional, bool reloadOnChange) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - UserSecretsIdAttribute? attribute = assembly.GetCustomAttribute(); if (attribute != null) { @@ -171,18 +161,8 @@ public static IConfigurationBuilder AddUserSecrets(this IConfigurationBuilder co public static IConfigurationBuilder AddUserSecrets(this IConfigurationBuilder configuration, string userSecretsId, bool reloadOnChange) => AddUserSecretsInternal(configuration, userSecretsId, true, reloadOnChange); - private static IConfigurationBuilder AddUserSecretsInternal(IConfigurationBuilder configuration, string userSecretsId, bool optional, bool reloadOnChange) + private static IConfigurationBuilder AddUserSecretsInternal(IConfigurationBuilder configuration!!, string userSecretsId!!, bool optional, bool reloadOnChange) { - if (configuration == null) - { - throw new ArgumentNullException(nameof(configuration)); - } - - if (userSecretsId == null) - { - throw new ArgumentNullException(nameof(userSecretsId)); - } - return AddSecretsFile(configuration, PathHelper.GetSecretsPathFromSecretsId(userSecretsId), optional, reloadOnChange); } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElement.cs b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElement.cs index dde4dd82f32e3e..242d149e440c21 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElement.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElement.cs @@ -31,9 +31,9 @@ internal sealed class XmlConfigurationElement public List Attributes { get; set; } - public XmlConfigurationElement(string elementName, string name) + public XmlConfigurationElement(string elementName!!, string name) { - ElementName = elementName ?? throw new ArgumentNullException(nameof(elementName)); + ElementName = elementName; Name = name; SiblingName = string.IsNullOrEmpty(Name) ? ElementName : ElementName + ":" + Name; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementAttributeValue.cs b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementAttributeValue.cs index a07231787a9ba6..ea9efc1c84d4c7 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementAttributeValue.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementAttributeValue.cs @@ -7,10 +7,10 @@ namespace Microsoft.Extensions.Configuration.Xml { internal sealed class XmlConfigurationElementAttributeValue { - public XmlConfigurationElementAttributeValue(string attribute, string value, int? lineNumber, int? linePosition) + public XmlConfigurationElementAttributeValue(string attribute!!, string value!!, int? lineNumber, int? linePosition) { - Attribute = attribute ?? throw new ArgumentNullException(nameof(attribute)); - Value = value ?? throw new ArgumentNullException(nameof(value)); + Attribute = attribute; + Value = value; LineNumber = lineNumber; LinePosition = linePosition; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementTextContent.cs b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementTextContent.cs index c3ef8fee108c0f..d5f5d38498937f 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementTextContent.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationElementTextContent.cs @@ -7,9 +7,9 @@ namespace Microsoft.Extensions.Configuration.Xml { internal sealed class XmlConfigurationElementTextContent { - public XmlConfigurationElementTextContent(string textContent, int? linePosition, int? lineNumber) + public XmlConfigurationElementTextContent(string textContent!!, int? linePosition, int? lineNumber) { - TextContent = textContent ?? throw new ArgumentNullException(nameof(textContent)); + TextContent = textContent; LineNumber = lineNumber; LinePosition = linePosition; } diff --git a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationExtensions.cs index 8e6a9096efcfc1..24cb252ec5590d 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Xml/src/XmlConfigurationExtensions.cs @@ -62,12 +62,8 @@ public static IConfigurationBuilder AddXmlFile(this IConfigurationBuilder builde /// Whether the file is optional. /// Whether the configuration should be reloaded if the file changes. /// The . - public static IConfigurationBuilder AddXmlFile(this IConfigurationBuilder builder, IFileProvider provider, string path, bool optional, bool reloadOnChange) + public static IConfigurationBuilder AddXmlFile(this IConfigurationBuilder builder!!, IFileProvider provider, string path, bool optional, bool reloadOnChange) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } if (string.IsNullOrEmpty(path)) { throw new ArgumentException(SR.Error_InvalidFilePath, nameof(path)); @@ -98,13 +94,8 @@ public static IConfigurationBuilder AddXmlFile(this IConfigurationBuilder builde /// The to add to. /// The to read the XML configuration data from. /// The . - public static IConfigurationBuilder AddXmlStream(this IConfigurationBuilder builder, Stream stream) + public static IConfigurationBuilder AddXmlStream(this IConfigurationBuilder builder!!, Stream stream) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - return builder.Add(s => s.Stream = stream); } } diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedBuilderExtensions.cs index 77d0a50a93b88e..118bacffe74a20 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedBuilderExtensions.cs @@ -27,17 +27,8 @@ public static IConfigurationBuilder AddConfiguration(this IConfigurationBuilder /// The to add. /// Whether the configuration should get disposed when the configuration provider is disposed. /// The . - public static IConfigurationBuilder AddConfiguration(this IConfigurationBuilder configurationBuilder, IConfiguration config, bool shouldDisposeConfiguration) + public static IConfigurationBuilder AddConfiguration(this IConfigurationBuilder configurationBuilder!!, IConfiguration config!!, bool shouldDisposeConfiguration) { - if (configurationBuilder == null) - { - throw new ArgumentNullException(nameof(configurationBuilder)); - } - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } - configurationBuilder.Add(new ChainedConfigurationSource { Configuration = config, diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs index eb9bed00211458..f0a9380a6656e2 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ChainedConfigurationProvider.cs @@ -19,12 +19,8 @@ public class ChainedConfigurationProvider : IConfigurationProvider, IDisposable /// Initialize a new instance from the source configuration. /// /// The source configuration. - public ChainedConfigurationProvider(ChainedConfigurationSource source) + public ChainedConfigurationProvider(ChainedConfigurationSource source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } if (source.Configuration == null) { throw new ArgumentException(SR.Format(SR.InvalidNullArgument, "source.Configuration"), nameof(source)); diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationBuilder.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationBuilder.cs index d0ac712e6a09ac..c0675526e94248 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationBuilder.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationBuilder.cs @@ -27,13 +27,8 @@ public class ConfigurationBuilder : IConfigurationBuilder /// /// The configuration source to add. /// The same . - public IConfigurationBuilder Add(IConfigurationSource source) + public IConfigurationBuilder Add(IConfigurationSource source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - Sources.Add(source); return this; } diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationManager.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationManager.cs index 1fb575e0c0c0d7..8cb01120704a6f 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationManager.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationManager.cs @@ -80,9 +80,9 @@ public void Dispose() _providerManager.Dispose(); } - IConfigurationBuilder IConfigurationBuilder.Add(IConfigurationSource source) + IConfigurationBuilder IConfigurationBuilder.Add(IConfigurationSource source!!) { - _sources.Add(source ?? throw new ArgumentNullException(nameof(source))); + _sources.Add(source); return this; } diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationRoot.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationRoot.cs index 397ef5160b1ec7..ae0e1e6bb52af5 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationRoot.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationRoot.cs @@ -21,13 +21,8 @@ public class ConfigurationRoot : IConfigurationRoot, IDisposable /// Initializes a Configuration root with a list of providers. /// /// The s for this configuration. - public ConfigurationRoot(IList providers) + public ConfigurationRoot(IList providers!!) { - if (providers == null) - { - throw new ArgumentNullException(nameof(providers)); - } - _providers = providers; _changeTokenRegistrations = new List(providers.Count); foreach (IConfigurationProvider p in providers) diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationSection.cs b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationSection.cs index 0896e587d4082d..35996f15afec13 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationSection.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/ConfigurationSection.cs @@ -21,18 +21,8 @@ public class ConfigurationSection : IConfigurationSection /// /// The configuration root. /// The path to this section. - public ConfigurationSection(IConfigurationRoot root, string path) + public ConfigurationSection(IConfigurationRoot root!!, string path!!) { - if (root == null) - { - throw new ArgumentNullException(nameof(root)); - } - - if (path == null) - { - throw new ArgumentNullException(nameof(path)); - } - _root = root; _path = path; } diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationBuilderExtensions.cs index 15ed46a26a5b98..781d37effe0456 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationBuilderExtensions.cs @@ -17,13 +17,8 @@ public static class MemoryConfigurationBuilderExtensions /// /// The to add to. /// The . - public static IConfigurationBuilder AddInMemoryCollection(this IConfigurationBuilder configurationBuilder) + public static IConfigurationBuilder AddInMemoryCollection(this IConfigurationBuilder configurationBuilder!!) { - if (configurationBuilder == null) - { - throw new ArgumentNullException(nameof(configurationBuilder)); - } - configurationBuilder.Add(new MemoryConfigurationSource()); return configurationBuilder; } @@ -35,14 +30,9 @@ public static IConfigurationBuilder AddInMemoryCollection(this IConfigurationBui /// The data to add to memory configuration provider. /// The . public static IConfigurationBuilder AddInMemoryCollection( - this IConfigurationBuilder configurationBuilder, + this IConfigurationBuilder configurationBuilder!!, IEnumerable>? initialData) { - if (configurationBuilder == null) - { - throw new ArgumentNullException(nameof(configurationBuilder)); - } - configurationBuilder.Add(new MemoryConfigurationSource { InitialData = initialData }); return configurationBuilder; } diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationProvider.cs index 0e7f0be02fec78..1e2c17fb6e764c 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/MemoryConfigurationProvider.cs @@ -18,13 +18,8 @@ public class MemoryConfigurationProvider : ConfigurationProvider, IEnumerable /// The source settings. - public MemoryConfigurationProvider(MemoryConfigurationSource source) + public MemoryConfigurationProvider(MemoryConfigurationSource source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - _source = source; if (_source.InitialData != null) diff --git a/src/libraries/Microsoft.Extensions.Configuration/src/StreamConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration/src/StreamConfigurationProvider.cs index 6d8917a188fd65..8d6b4b3866cb92 100644 --- a/src/libraries/Microsoft.Extensions.Configuration/src/StreamConfigurationProvider.cs +++ b/src/libraries/Microsoft.Extensions.Configuration/src/StreamConfigurationProvider.cs @@ -22,9 +22,9 @@ public abstract class StreamConfigurationProvider : ConfigurationProvider /// Constructor. /// /// The source. - public StreamConfigurationProvider(StreamConfigurationSource source) + public StreamConfigurationProvider(StreamConfigurationSource source!!) { - Source = source ?? throw new ArgumentNullException(nameof(source)); + Source = source; } /// diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/AsyncServiceScope.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/AsyncServiceScope.cs index 6057a9b87a7861..9f0f7b380a17b0 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/AsyncServiceScope.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/AsyncServiceScope.cs @@ -18,9 +18,9 @@ namespace Microsoft.Extensions.DependencyInjection /// Wraps an instance of . /// /// The instance to wrap. - public AsyncServiceScope(IServiceScope serviceScope) + public AsyncServiceScope(IServiceScope serviceScope!!) { - _serviceScope = serviceScope ?? throw new ArgumentNullException(nameof(serviceScope)); + _serviceScope = serviceScope; } /// diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs index e4cfae88c17e06..7ec5f7c4913ef0 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/Extensions/ServiceCollectionDescriptorExtensions.cs @@ -19,19 +19,9 @@ public static class ServiceCollectionDescriptorExtensions /// The to add. /// A reference to the current instance of . public static IServiceCollection Add( - this IServiceCollection collection, - ServiceDescriptor descriptor) + this IServiceCollection collection!!, + ServiceDescriptor descriptor!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (descriptor == null) - { - throw new ArgumentNullException(nameof(descriptor)); - } - collection.Add(descriptor); return collection; } @@ -43,19 +33,9 @@ public static IServiceCollection Add( /// The s to add. /// A reference to the current instance of . public static IServiceCollection Add( - this IServiceCollection collection, - IEnumerable descriptors) + this IServiceCollection collection!!, + IEnumerable descriptors!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (descriptors == null) - { - throw new ArgumentNullException(nameof(descriptors)); - } - foreach (ServiceDescriptor? descriptor in descriptors) { collection.Add(descriptor); @@ -71,19 +51,9 @@ public static IServiceCollection Add( /// The . /// The to add. public static void TryAdd( - this IServiceCollection collection, - ServiceDescriptor descriptor) + this IServiceCollection collection!!, + ServiceDescriptor descriptor!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (descriptor == null) - { - throw new ArgumentNullException(nameof(descriptor)); - } - int count = collection.Count; for (int i = 0; i < count; i++) { @@ -104,19 +74,9 @@ public static void TryAdd( /// The . /// The s to add. public static void TryAdd( - this IServiceCollection collection, - IEnumerable descriptors) + this IServiceCollection collection!!, + IEnumerable descriptors!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (descriptors == null) - { - throw new ArgumentNullException(nameof(descriptors)); - } - foreach (ServiceDescriptor? d in descriptors) { collection.TryAdd(d); @@ -130,19 +90,9 @@ public static void TryAdd( /// The . /// The type of the service to register. public static void TryAddTransient( - this IServiceCollection collection, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service) + this IServiceCollection collection!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - var descriptor = ServiceDescriptor.Transient(service, service); TryAdd(collection, descriptor); } @@ -156,25 +106,10 @@ public static void TryAddTransient( /// The type of the service to register. /// The implementation type of the service. public static void TryAddTransient( - this IServiceCollection collection, - Type service, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection collection!!, + Type service!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - var descriptor = ServiceDescriptor.Transient(service, implementationType); TryAdd(collection, descriptor); } @@ -188,25 +123,10 @@ public static void TryAddTransient( /// The type of the service to register. /// The factory that creates the service. public static void TryAddTransient( - this IServiceCollection collection, - Type service, - Func implementationFactory) + this IServiceCollection collection!!, + Type service!!, + Func implementationFactory!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - var descriptor = ServiceDescriptor.Transient(service, implementationFactory); TryAdd(collection, descriptor); } @@ -217,14 +137,9 @@ public static void TryAddTransient( /// /// The type of the service to add. /// The . - public static void TryAddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection) + public static void TryAddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection!!) where TService : class { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddTransient(collection, typeof(TService), typeof(TService)); } @@ -236,15 +151,10 @@ public static void TryAddTransient( /// The type of the service to add. /// The type of the implementation to use. /// The . - public static void TryAddTransient(this IServiceCollection collection) + public static void TryAddTransient(this IServiceCollection collection!!) where TService : class where TImplementation : class, TService { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddTransient(collection, typeof(TService), typeof(TImplementation)); } @@ -271,19 +181,9 @@ public static void TryAddTransient( /// The . /// The type of the service to register. public static void TryAddScoped( - this IServiceCollection collection, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service) + this IServiceCollection collection!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - var descriptor = ServiceDescriptor.Scoped(service, service); TryAdd(collection, descriptor); } @@ -297,25 +197,10 @@ public static void TryAddScoped( /// The type of the service to register. /// The implementation type of the service. public static void TryAddScoped( - this IServiceCollection collection, - Type service, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection collection!!, + Type service!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - var descriptor = ServiceDescriptor.Scoped(service, implementationType); TryAdd(collection, descriptor); } @@ -329,25 +214,10 @@ public static void TryAddScoped( /// The type of the service to register. /// The factory that creates the service. public static void TryAddScoped( - this IServiceCollection collection, - Type service, - Func implementationFactory) + this IServiceCollection collection!!, + Type service!!, + Func implementationFactory!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - var descriptor = ServiceDescriptor.Scoped(service, implementationFactory); TryAdd(collection, descriptor); } @@ -358,14 +228,9 @@ public static void TryAddScoped( /// /// The type of the service to add. /// The . - public static void TryAddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection) + public static void TryAddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection!!) where TService : class { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddScoped(collection, typeof(TService), typeof(TService)); } @@ -377,15 +242,10 @@ public static void TryAddScoped( /// The type of the service to add. /// The type of the implementation to use. /// The . - public static void TryAddScoped(this IServiceCollection collection) + public static void TryAddScoped(this IServiceCollection collection!!) where TService : class where TImplementation : class, TService { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddScoped(collection, typeof(TService), typeof(TImplementation)); } @@ -412,19 +272,9 @@ public static void TryAddScoped( /// The . /// The type of the service to register. public static void TryAddSingleton( - this IServiceCollection collection, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service) + this IServiceCollection collection!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type service!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - var descriptor = ServiceDescriptor.Singleton(service, service); TryAdd(collection, descriptor); } @@ -438,25 +288,10 @@ public static void TryAddSingleton( /// The type of the service to register. /// The implementation type of the service. public static void TryAddSingleton( - this IServiceCollection collection, - Type service, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection collection!!, + Type service!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - var descriptor = ServiceDescriptor.Singleton(service, implementationType); TryAdd(collection, descriptor); } @@ -470,25 +305,10 @@ public static void TryAddSingleton( /// The type of the service to register. /// The factory that creates the service. public static void TryAddSingleton( - this IServiceCollection collection, - Type service, - Func implementationFactory) + this IServiceCollection collection!!, + Type service!!, + Func implementationFactory!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - var descriptor = ServiceDescriptor.Singleton(service, implementationFactory); TryAdd(collection, descriptor); } @@ -499,14 +319,9 @@ public static void TryAddSingleton( /// /// The type of the service to add. /// The . - public static void TryAddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection) + public static void TryAddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection collection!!) where TService : class { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddSingleton(collection, typeof(TService), typeof(TService)); } @@ -518,15 +333,10 @@ public static void TryAddSingleton( /// The type of the service to add. /// The type of the implementation to use. /// The . - public static void TryAddSingleton(this IServiceCollection collection) + public static void TryAddSingleton(this IServiceCollection collection!!) where TService : class where TImplementation : class, TService { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - TryAddSingleton(collection, typeof(TService), typeof(TImplementation)); } @@ -538,19 +348,9 @@ public static void TryAddSingleton( /// The type of the service to add. /// The . /// The instance of the service to add. - public static void TryAddSingleton(this IServiceCollection collection, TService instance) + public static void TryAddSingleton(this IServiceCollection collection!!, TService instance!!) where TService : class { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - var descriptor = ServiceDescriptor.Singleton(typeof(TService), instance); TryAdd(collection, descriptor); } @@ -589,19 +389,9 @@ public static void TryAddSingleton( /// of multiple implementation types. /// public static void TryAddEnumerable( - this IServiceCollection services, - ServiceDescriptor descriptor) + this IServiceCollection services!!, + ServiceDescriptor descriptor!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (descriptor == null) - { - throw new ArgumentNullException(nameof(descriptor)); - } - Type? implementationType = descriptor.GetImplementationType(); if (implementationType == typeof(object) || @@ -647,19 +437,9 @@ public static void TryAddEnumerable( /// of multiple implementation types. /// public static void TryAddEnumerable( - this IServiceCollection services, - IEnumerable descriptors) + this IServiceCollection services!!, + IEnumerable descriptors!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (descriptors == null) - { - throw new ArgumentNullException(nameof(descriptors)); - } - foreach (ServiceDescriptor? d in descriptors) { services.TryAddEnumerable(d); @@ -674,19 +454,9 @@ public static void TryAddEnumerable( /// The to replace with. /// The for chaining. public static IServiceCollection Replace( - this IServiceCollection collection, - ServiceDescriptor descriptor) + this IServiceCollection collection!!, + ServiceDescriptor descriptor!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (descriptor == null) - { - throw new ArgumentNullException(nameof(descriptor)); - } - // Remove existing int count = collection.Count; for (int i = 0; i < count; i++) @@ -718,13 +488,8 @@ public static IServiceCollection RemoveAll(this IServiceCollection collection /// The . /// The service type to remove. /// The for chaining. - public static IServiceCollection RemoveAll(this IServiceCollection collection, Type serviceType) + public static IServiceCollection RemoveAll(this IServiceCollection collection, Type serviceType!!) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - for (int i = collection.Count - 1; i >= 0; i--) { ServiceDescriptor? descriptor = collection[i]; diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs index 1de2b83d156f0c..39069984887bfe 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceCollectionServiceExtensions.cs @@ -22,25 +22,10 @@ public static class ServiceCollectionServiceExtensions /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddTransient( - this IServiceCollection services, - Type serviceType, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection services!!, + Type serviceType!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - return Add(services, serviceType, implementationType, ServiceLifetime.Transient); } @@ -55,25 +40,10 @@ public static IServiceCollection AddTransient( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddTransient( - this IServiceCollection services, - Type serviceType, - Func implementationFactory) + this IServiceCollection services!!, + Type serviceType!!, + Func implementationFactory!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Add(services, serviceType, implementationFactory, ServiceLifetime.Transient); } @@ -87,15 +57,10 @@ public static IServiceCollection AddTransient( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddTransient(this IServiceCollection services) + public static IServiceCollection AddTransient(this IServiceCollection services!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddTransient(typeof(TService), typeof(TImplementation)); } @@ -108,19 +73,9 @@ public static IServiceCollection AddTransient( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddTransient( - this IServiceCollection services, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType) + this IServiceCollection services!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - return services.AddTransient(serviceType, serviceType); } @@ -132,14 +87,9 @@ public static IServiceCollection AddTransient( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services) + public static IServiceCollection AddTransient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddTransient(typeof(TService)); } @@ -154,20 +104,10 @@ public static IServiceCollection AddTransient( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddTransient( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddTransient(typeof(TService), implementationFactory); } @@ -184,21 +124,11 @@ public static IServiceCollection AddTransient( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddTransient( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddTransient(typeof(TService), implementationFactory); } @@ -213,25 +143,10 @@ public static IServiceCollection AddTransient( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddScoped( - this IServiceCollection services, - Type serviceType, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection services!!, + Type serviceType!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - return Add(services, serviceType, implementationType, ServiceLifetime.Scoped); } @@ -246,25 +161,10 @@ public static IServiceCollection AddScoped( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddScoped( - this IServiceCollection services, - Type serviceType, - Func implementationFactory) + this IServiceCollection services!!, + Type serviceType!!, + Func implementationFactory!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Add(services, serviceType, implementationFactory, ServiceLifetime.Scoped); } @@ -278,15 +178,10 @@ public static IServiceCollection AddScoped( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddScoped(this IServiceCollection services) + public static IServiceCollection AddScoped(this IServiceCollection services!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddScoped(typeof(TService), typeof(TImplementation)); } @@ -299,19 +194,9 @@ public static IServiceCollection AddScoped( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddScoped( - this IServiceCollection services, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType) + this IServiceCollection services!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - return services.AddScoped(serviceType, serviceType); } @@ -323,14 +208,9 @@ public static IServiceCollection AddScoped( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services) + public static IServiceCollection AddScoped<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddScoped(typeof(TService)); } @@ -345,20 +225,10 @@ public static IServiceCollection AddScoped( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddScoped( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddScoped(typeof(TService), implementationFactory); } @@ -375,21 +245,11 @@ public static IServiceCollection AddScoped( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddScoped( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddScoped(typeof(TService), implementationFactory); } @@ -405,25 +265,10 @@ public static IServiceCollection AddScoped( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - Type serviceType, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + this IServiceCollection services!!, + Type serviceType!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - return Add(services, serviceType, implementationType, ServiceLifetime.Singleton); } @@ -438,25 +283,10 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - Type serviceType, - Func implementationFactory) + this IServiceCollection services!!, + Type serviceType!!, + Func implementationFactory!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Add(services, serviceType, implementationFactory, ServiceLifetime.Singleton); } @@ -470,15 +300,10 @@ public static IServiceCollection AddSingleton( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddSingleton(this IServiceCollection services) + public static IServiceCollection AddSingleton(this IServiceCollection services!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddSingleton(typeof(TService), typeof(TImplementation)); } @@ -491,19 +316,9 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType) + this IServiceCollection services!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type serviceType!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - return services.AddSingleton(serviceType, serviceType); } @@ -515,14 +330,9 @@ public static IServiceCollection AddSingleton( /// The to add the service to. /// A reference to this instance after the operation has completed. /// - public static IServiceCollection AddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services) + public static IServiceCollection AddSingleton<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TService>(this IServiceCollection services!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - return services.AddSingleton(typeof(TService)); } @@ -537,20 +347,10 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddSingleton(typeof(TService), implementationFactory); } @@ -567,21 +367,11 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - Func implementationFactory) + this IServiceCollection services!!, + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return services.AddSingleton(typeof(TService), implementationFactory); } @@ -596,25 +386,10 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - Type serviceType, - object implementationInstance) + this IServiceCollection services!!, + Type serviceType!!, + object implementationInstance!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationInstance == null) - { - throw new ArgumentNullException(nameof(implementationInstance)); - } - var serviceDescriptor = new ServiceDescriptor(serviceType, implementationInstance); services.Add(serviceDescriptor); return services; @@ -630,20 +405,10 @@ public static IServiceCollection AddSingleton( /// A reference to this instance after the operation has completed. /// public static IServiceCollection AddSingleton( - this IServiceCollection services, - TService implementationInstance) + this IServiceCollection services!!, + TService implementationInstance!!) where TService : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (implementationInstance == null) - { - throw new ArgumentNullException(nameof(implementationInstance)); - } - return services.AddSingleton(typeof(TService), implementationInstance); } diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceDescriptor.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceDescriptor.cs index 57a6d8d33f7d7d..4c98834539fe62 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceDescriptor.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceDescriptor.cs @@ -20,21 +20,11 @@ public class ServiceDescriptor /// The implementing the service. /// The of the service. public ServiceDescriptor( - Type serviceType, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType, + Type serviceType!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!, ServiceLifetime lifetime) : this(serviceType, lifetime) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - ImplementationType = implementationType; } @@ -45,20 +35,10 @@ public ServiceDescriptor( /// The of the service. /// The instance implementing the service. public ServiceDescriptor( - Type serviceType, - object instance) + Type serviceType!!, + object instance!!) : this(serviceType, ServiceLifetime.Singleton) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - ImplementationInstance = instance; } @@ -69,21 +49,11 @@ public ServiceDescriptor( /// A factory used for creating service instances. /// The of the service. public ServiceDescriptor( - Type serviceType, - Func factory, + Type serviceType!!, + Func factory!!, ServiceLifetime lifetime) : this(serviceType, lifetime) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - ImplementationFactory = factory; } @@ -169,19 +139,9 @@ internal Type GetImplementationType() /// The type of the implementation. /// A new instance of . public static ServiceDescriptor Transient( - Type service, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + Type service!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - return Describe(service, implementationType, ServiceLifetime.Transient); } @@ -196,15 +156,10 @@ public static ServiceDescriptor Transient( /// A factory to create new instances of the service implementation. /// A new instance of . public static ServiceDescriptor Transient( - Func implementationFactory) + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Transient); } @@ -216,14 +171,9 @@ public static ServiceDescriptor Transient( /// The type of the service. /// A factory to create new instances of the service implementation. /// A new instance of . - public static ServiceDescriptor Transient(Func implementationFactory) + public static ServiceDescriptor Transient(Func implementationFactory!!) where TService : class { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Transient); } @@ -235,18 +185,8 @@ public static ServiceDescriptor Transient(FuncThe type of the service. /// A factory to create new instances of the service implementation. /// A new instance of . - public static ServiceDescriptor Transient(Type service, Func implementationFactory) + public static ServiceDescriptor Transient(Type service!!, Func implementationFactory!!) { - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(service, implementationFactory, ServiceLifetime.Transient); } @@ -291,15 +231,10 @@ public static ServiceDescriptor Scoped( /// A factory to create new instances of the service implementation. /// A new instance of . public static ServiceDescriptor Scoped( - Func implementationFactory) + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Scoped); } @@ -311,14 +246,9 @@ public static ServiceDescriptor Scoped( /// The type of the service. /// A factory to create new instances of the service implementation. /// A new instance of . - public static ServiceDescriptor Scoped(Func implementationFactory) + public static ServiceDescriptor Scoped(Func implementationFactory!!) where TService : class { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Scoped); } @@ -330,18 +260,8 @@ public static ServiceDescriptor Scoped(FuncThe type of the service. /// A factory to create new instances of the service implementation. /// A new instance of . - public static ServiceDescriptor Scoped(Type service, Func implementationFactory) + public static ServiceDescriptor Scoped(Type service!!, Func implementationFactory!!) { - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(service, implementationFactory, ServiceLifetime.Scoped); } @@ -369,19 +289,9 @@ public static ServiceDescriptor Scoped(Type service, FuncThe type of the implementation. /// A new instance of . public static ServiceDescriptor Singleton( - Type service, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType) + Type service!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type implementationType!!) { - if (service == null) - { - throw new ArgumentNullException(nameof(service)); - } - - if (implementationType == null) - { - throw new ArgumentNullException(nameof(implementationType)); - } - return Describe(service, implementationType, ServiceLifetime.Singleton); } @@ -396,15 +306,10 @@ public static ServiceDescriptor Singleton( /// A factory to create new instances of the service implementation. /// A new instance of . public static ServiceDescriptor Singleton( - Func implementationFactory) + Func implementationFactory!!) where TService : class where TImplementation : class, TService { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Singleton); } @@ -416,14 +321,9 @@ public static ServiceDescriptor Singleton( /// The type of the service. /// A factory to create new instances of the service implementation. /// A new instance of . - public static ServiceDescriptor Singleton(Func implementationFactory) + public static ServiceDescriptor Singleton(Func implementationFactory!!) where TService : class { - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(typeof(TService), implementationFactory, ServiceLifetime.Singleton); } @@ -436,19 +336,9 @@ public static ServiceDescriptor Singleton(FuncA factory to create new instances of the service implementation. /// A new instance of . public static ServiceDescriptor Singleton( - Type serviceType, - Func implementationFactory) + Type serviceType!!, + Func implementationFactory!!) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationFactory == null) - { - throw new ArgumentNullException(nameof(implementationFactory)); - } - return Describe(serviceType, implementationFactory, ServiceLifetime.Singleton); } @@ -460,14 +350,9 @@ public static ServiceDescriptor Singleton( /// The type of the service. /// The instance of the implementation. /// A new instance of . - public static ServiceDescriptor Singleton(TService implementationInstance) + public static ServiceDescriptor Singleton(TService implementationInstance!!) where TService : class { - if (implementationInstance == null) - { - throw new ArgumentNullException(nameof(implementationInstance)); - } - return Singleton(typeof(TService), implementationInstance); } @@ -480,19 +365,9 @@ public static ServiceDescriptor Singleton(TService implementationInsta /// The instance of the implementation. /// A new instance of . public static ServiceDescriptor Singleton( - Type serviceType, - object implementationInstance) + Type serviceType!!, + object implementationInstance!!) { - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - - if (implementationInstance == null) - { - throw new ArgumentNullException(nameof(implementationInstance)); - } - return new ServiceDescriptor(serviceType, implementationInstance); } diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceProviderServiceExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceProviderServiceExtensions.cs index 05388865bec599..048c1b0cfe467e 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceProviderServiceExtensions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Abstractions/src/ServiceProviderServiceExtensions.cs @@ -18,13 +18,8 @@ public static class ServiceProviderServiceExtensions /// The type of service object to get. /// The to retrieve the service object from. /// A service object of type or null if there is no such service. - public static T? GetService(this IServiceProvider provider) + public static T? GetService(this IServiceProvider provider!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - return (T?)provider.GetService(typeof(T)); } @@ -35,18 +30,8 @@ public static class ServiceProviderServiceExtensions /// An object that specifies the type of service object to get. /// A service object of type . /// There is no service of type . - public static object GetRequiredService(this IServiceProvider provider, Type serviceType) + public static object GetRequiredService(this IServiceProvider provider!!, Type serviceType!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - if (provider is ISupportRequiredService requiredServiceSupportingProvider) { return requiredServiceSupportingProvider.GetRequiredService(serviceType); @@ -68,13 +53,8 @@ public static object GetRequiredService(this IServiceProvider provider, Type ser /// The to retrieve the service object from. /// A service object of type . /// There is no service of type . - public static T GetRequiredService(this IServiceProvider provider) where T : notnull + public static T GetRequiredService(this IServiceProvider provider!!) where T : notnull { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - return (T)provider.GetRequiredService(typeof(T)); } @@ -84,13 +64,8 @@ public static T GetRequiredService(this IServiceProvider provider) where T : /// The type of service object to get. /// The to retrieve the services from. /// An enumeration of services of type . - public static IEnumerable GetServices(this IServiceProvider provider) + public static IEnumerable GetServices(this IServiceProvider provider!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - return provider.GetRequiredService>(); } @@ -100,18 +75,8 @@ public static IEnumerable GetServices(this IServiceProvider provider) /// The to retrieve the services from. /// An object that specifies the type of service object to get. /// An enumeration of services of type . - public static IEnumerable GetServices(this IServiceProvider provider, Type serviceType) + public static IEnumerable GetServices(this IServiceProvider provider!!, Type serviceType!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - Type? genericEnumerable = typeof(IEnumerable<>).MakeGenericType(serviceType); return (IEnumerable)provider.GetRequiredService(genericEnumerable); } diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/DependencyInjectionSpecificationTests.cs b/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/DependencyInjectionSpecificationTests.cs index 8a4d73684b4188..c607b2a37ed1c4 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/DependencyInjectionSpecificationTests.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/DependencyInjectionSpecificationTests.cs @@ -122,6 +122,47 @@ public void TransientServiceCanBeResolvedFromScope() } } + [Theory] + [InlineData(ServiceLifetime.Scoped)] + [InlineData(ServiceLifetime.Transient)] + public void NonSingletonService_WithInjectedProvider_ResolvesScopeProvider(ServiceLifetime lifetime) + { + // Arrange + var collection = new TestServiceCollection(); + collection.AddScoped(); + collection.Add(new ServiceDescriptor(typeof(ClassWithServiceProvider), typeof(ClassWithServiceProvider), lifetime)); + var provider = CreateServiceProvider(collection); + + // Act + IFakeService fakeServiceFromScope1 = null; + IFakeService otherFakeServiceFromScope1 = null; + IFakeService fakeServiceFromScope2 = null; + IFakeService otherFakeServiceFromScope2 = null; + + using (var scope1 = provider.CreateScope()) + { + var serviceWithProvider = scope1.ServiceProvider.GetRequiredService(); + fakeServiceFromScope1 = serviceWithProvider.ServiceProvider.GetRequiredService(); + + serviceWithProvider = scope1.ServiceProvider.GetRequiredService(); + otherFakeServiceFromScope1 = serviceWithProvider.ServiceProvider.GetRequiredService(); + } + + using (var scope2 = provider.CreateScope()) + { + var serviceWithProvider = scope2.ServiceProvider.GetRequiredService(); + fakeServiceFromScope2 = serviceWithProvider.ServiceProvider.GetRequiredService(); + + serviceWithProvider = scope2.ServiceProvider.GetRequiredService(); + otherFakeServiceFromScope2 = serviceWithProvider.ServiceProvider.GetRequiredService(); + } + + // Assert + Assert.Same(fakeServiceFromScope1, otherFakeServiceFromScope1); + Assert.Same(fakeServiceFromScope2, otherFakeServiceFromScope2); + Assert.NotSame(fakeServiceFromScope1, fakeServiceFromScope2); + } + [Fact] public void SingletonServiceCanBeResolvedFromScope() { diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/src/DefaultServiceProviderFactory.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/src/DefaultServiceProviderFactory.cs index ac35609032f6a8..67c641096a420a 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/src/DefaultServiceProviderFactory.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/src/DefaultServiceProviderFactory.cs @@ -26,13 +26,8 @@ public DefaultServiceProviderFactory() : this(ServiceProviderOptions.Default) /// with the specified . /// /// The options to use for this instance. - public DefaultServiceProviderFactory(ServiceProviderOptions options) + public DefaultServiceProviderFactory(ServiceProviderOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - _options = options; } diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceCollectionContainerBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceCollectionContainerBuilderExtensions.cs index ce4dd0cb8943ec..2a4b1c2f0dd401 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceCollectionContainerBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceCollectionContainerBuilderExtensions.cs @@ -46,18 +46,8 @@ public static ServiceProvider BuildServiceProvider(this IServiceCollection servi /// Configures various service provider behaviors. /// /// The . - public static ServiceProvider BuildServiceProvider(this IServiceCollection services, ServiceProviderOptions options) + public static ServiceProvider BuildServiceProvider(this IServiceCollection services!!, ServiceProviderOptions options!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return new ServiceProvider(services, options); } } diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs index a4092ca70c83ae..db2701be21ae0c 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs @@ -529,13 +529,8 @@ public void Add(Type type, ServiceCallSite serviceCallSite) _callSiteCache[new ServiceCacheKey(type, DefaultSlot)] = serviceCallSite; } - public bool IsService(Type serviceType) + public bool IsService(Type serviceType!!) { - if (serviceType is null) - { - throw new ArgumentNullException(nameof(serviceType)); - } - // Querying for an open generic should return false (they aren't resolvable) if (serviceType.IsGenericTypeDefinition) { diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/ConstantCallSite.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/ConstantCallSite.cs index 8071c67013352d..851b90a8a011ee 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/ConstantCallSite.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/ConstantCallSite.cs @@ -10,9 +10,9 @@ internal sealed class ConstantCallSite : ServiceCallSite private readonly Type _serviceType; internal object? DefaultValue => Value; - public ConstantCallSite(Type serviceType, object? defaultValue): base(ResultCache.None) + public ConstantCallSite(Type serviceType!!, object? defaultValue): base(ResultCache.None) { - _serviceType = serviceType ?? throw new ArgumentNullException(nameof(serviceType)); + _serviceType = serviceType; if (defaultValue != null && !serviceType.IsInstanceOfType(defaultValue)) { throw new ArgumentException(SR.Format(SR.ConstantCantBeConvertedToServiceType, defaultValue.GetType(), serviceType)); diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Lamar.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Lamar.cs index 795bc330c97754..d5ee66580b2cbc 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Lamar.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Lamar.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +#if !NETFRAMEWORK + using System; namespace Microsoft.Extensions.DependencyInjection.Specification @@ -21,3 +23,5 @@ protected override IServiceProvider CreateServiceProviderImpl(IServiceCollection } } } + +#endif diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/LightInject.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/LightInject.cs index d9c874958e63b7..2c08457b6c2e20 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/LightInject.cs +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/LightInject.cs @@ -8,11 +8,16 @@ namespace Microsoft.Extensions.DependencyInjection.Specification { - public class LightInjectDependencyInjectionSpecificationTests: DependencyInjectionSpecificationTests + public class LightInjectDependencyInjectionSpecificationTests : SkippableDependencyInjectionSpecificationTests { public override bool SupportsIServiceProviderIsService => false; - protected override IServiceProvider CreateServiceProvider(IServiceCollection serviceCollection) + public override string[] SkippedTests => new string[] + { + "NonSingletonService_WithInjectedProvider_ResolvesScopeProvider" + }; + + protected override IServiceProvider CreateServiceProviderImpl(IServiceCollection serviceCollection) { var builder = new ContainerBuilder(); builder.Populate(serviceCollection); diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csproj b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csproj index 51b2fe2717b00c..b6eadff96d555e 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csproj +++ b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csproj @@ -1,4 +1,4 @@ - + $(NetCoreAppCurrent);$(NetFrameworkMinimum) @@ -14,18 +14,20 @@ - + - - - - - - - - + + + + + + + + + + diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/StructureMap.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/StructureMap.cs deleted file mode 100644 index 59a6e00160ec56..00000000000000 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/StructureMap.cs +++ /dev/null @@ -1,33 +0,0 @@ -// 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 StructureMap; - -namespace Microsoft.Extensions.DependencyInjection.Specification -{ - public class StructureMapDependencyInjectionSpecificationTests: SkippableDependencyInjectionSpecificationTests - { - public override bool SupportsIServiceProviderIsService => false; - - public override string[] SkippedTests => new[] - { - "ServiceProviderIsDisposable", - "SelfResolveThenDispose", - "DisposingScopeDisposesService", - "DisposesInReverseOrderOfCreation", - "ResolvesMixedOpenClosedGenericsAsEnumerable" - }; - - protected override IServiceProvider CreateServiceProviderImpl(IServiceCollection serviceCollection) - { - var container = new Container(); - container.Configure(config => - { - config.Populate(serviceCollection); - }); - - return container.GetInstance(); - } - } -} diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Unity.cs b/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Unity.cs deleted file mode 100644 index 1987206fae02ba..00000000000000 --- a/src/libraries/Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Unity.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; - -namespace Microsoft.Extensions.DependencyInjection.Specification -{ - public class UnityDependencyInjectionSpecificationTests: SkippableDependencyInjectionSpecificationTests - { - public override bool SupportsIServiceProviderIsService => false; - - // See https://github.com/unitycontainer/microsoft-dependency-injection/issues/87 - public override bool ExpectStructWithPublicDefaultConstructorInvoked => true; - - public override string[] SkippedTests => new[] - { - "SingletonServiceCanBeResolvedFromScope" - }; - - protected override IServiceProvider CreateServiceProviderImpl(IServiceCollection serviceCollection) - { - return Unity.Microsoft.DependencyInjection.ServiceProviderExtensions.BuildServiceProvider(serviceCollection); - } - } -} diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationLibrary.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationLibrary.cs index fd49bff68e1a99..8785e36d6849e1 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationLibrary.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationLibrary.cs @@ -25,17 +25,13 @@ public CompilationLibrary(string type, string name, string version, string? hash, - IEnumerable assemblies, + IEnumerable assemblies!!, IEnumerable dependencies, bool serviceable, string? path, string? hashPath) : base(type, name, version, hash, dependencies, serviceable, path, hashPath) { - if (assemblies == null) - { - throw new ArgumentNullException(nameof(assemblies)); - } Assemblies = assemblies.ToArray(); } diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationOptions.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationOptions.cs index 676e8a3a88d4f9..2ac677537aceef 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationOptions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/CompilationOptions.cs @@ -47,7 +47,7 @@ public class CompilationOptions emitEntryPoint: null, generateXmlDocumentation: null); - public CompilationOptions(IEnumerable defines, + public CompilationOptions(IEnumerable defines!!, string? languageVersion, string? platform, bool? allowUnsafe, @@ -60,10 +60,6 @@ public CompilationOptions(IEnumerable defines, bool? emitEntryPoint, bool? generateXmlDocumentation) { - if (defines == null) - { - throw new ArgumentNullException(nameof(defines)); - } Defines = defines.ToArray(); LanguageVersion = languageVersion; Platform = platform; diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContext.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContext.cs index 39a6d80a5f0343..9eff25c3064dad 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContext.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContext.cs @@ -16,33 +16,12 @@ public class DependencyContext Justification = "The annotation should be on the static constructor but is Compiler Generated, annotating the caller Default method instead")] private static readonly Lazy _defaultContext = new(LoadDefault); - public DependencyContext(TargetInfo target, - CompilationOptions compilationOptions, - IEnumerable compileLibraries, - IEnumerable runtimeLibraries, - IEnumerable runtimeGraph) + public DependencyContext(TargetInfo target!!, + CompilationOptions compilationOptions!!, + IEnumerable compileLibraries!!, + IEnumerable runtimeLibraries!!, + IEnumerable runtimeGraph!!) { - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } - if (compilationOptions == null) - { - throw new ArgumentNullException(nameof(compilationOptions)); - } - if (compileLibraries == null) - { - throw new ArgumentNullException(nameof(compileLibraries)); - } - if (runtimeLibraries == null) - { - throw new ArgumentNullException(nameof(runtimeLibraries)); - } - if (runtimeGraph == null) - { - throw new ArgumentNullException(nameof(runtimeGraph)); - } - Target = target; CompilationOptions = compilationOptions; CompileLibraries = compileLibraries.ToArray(); @@ -63,13 +42,8 @@ public DependencyContext(TargetInfo target, public IReadOnlyList RuntimeGraph { get; } - public DependencyContext Merge(DependencyContext other) + public DependencyContext Merge(DependencyContext other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - return new DependencyContext( Target, CompilationOptions, diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextExtensions.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextExtensions.cs index ee9f0be63e5b82..6b77fd4ec34a54 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextExtensions.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextExtensions.cs @@ -13,151 +13,63 @@ public static class DependencyContextExtensions { private const string NativeImageSufix = ".ni"; - public static IEnumerable GetDefaultNativeAssets(this DependencyContext self) + public static IEnumerable GetDefaultNativeAssets(this DependencyContext self!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } return self.RuntimeLibraries.SelectMany(library => library.GetDefaultNativeAssets(self)); } - public static IEnumerable GetDefaultNativeRuntimeFileAssets(this DependencyContext self) + public static IEnumerable GetDefaultNativeRuntimeFileAssets(this DependencyContext self!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } return self.RuntimeLibraries.SelectMany(library => library.GetDefaultNativeRuntimeFileAssets(self)); } - public static IEnumerable GetRuntimeNativeAssets(this DependencyContext self, string runtimeIdentifier) + public static IEnumerable GetRuntimeNativeAssets(this DependencyContext self!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return self.RuntimeLibraries.SelectMany(library => library.GetRuntimeNativeAssets(self, runtimeIdentifier)); } - public static IEnumerable GetRuntimeNativeRuntimeFileAssets(this DependencyContext self, string runtimeIdentifier) + public static IEnumerable GetRuntimeNativeRuntimeFileAssets(this DependencyContext self!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return self.RuntimeLibraries.SelectMany(library => library.GetRuntimeNativeRuntimeFileAssets(self, runtimeIdentifier)); } - public static IEnumerable GetDefaultNativeAssets(this RuntimeLibrary self, DependencyContext context) + public static IEnumerable GetDefaultNativeAssets(this RuntimeLibrary self!!, DependencyContext context) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } return ResolveAssets(context, string.Empty, self.NativeLibraryGroups); } - public static IEnumerable GetDefaultNativeRuntimeFileAssets(this RuntimeLibrary self, DependencyContext context) + public static IEnumerable GetDefaultNativeRuntimeFileAssets(this RuntimeLibrary self!!, DependencyContext context) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } return ResolveRuntimeFiles(context, string.Empty, self.NativeLibraryGroups); } - public static IEnumerable GetRuntimeNativeAssets(this RuntimeLibrary self, DependencyContext context, string runtimeIdentifier) + public static IEnumerable GetRuntimeNativeAssets(this RuntimeLibrary self!!, DependencyContext context!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return ResolveAssets(context, runtimeIdentifier, self.NativeLibraryGroups); } - public static IEnumerable GetRuntimeNativeRuntimeFileAssets(this RuntimeLibrary self, DependencyContext context, string runtimeIdentifier) + public static IEnumerable GetRuntimeNativeRuntimeFileAssets(this RuntimeLibrary self!!, DependencyContext context!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return ResolveRuntimeFiles(context, runtimeIdentifier, self.NativeLibraryGroups); } - public static IEnumerable GetDefaultAssemblyNames(this DependencyContext self) + public static IEnumerable GetDefaultAssemblyNames(this DependencyContext self!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } return self.RuntimeLibraries.SelectMany(library => library.GetDefaultAssemblyNames(self)); } - public static IEnumerable GetRuntimeAssemblyNames(this DependencyContext self, string runtimeIdentifier) + public static IEnumerable GetRuntimeAssemblyNames(this DependencyContext self!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return self.RuntimeLibraries.SelectMany(library => library.GetRuntimeAssemblyNames(self, runtimeIdentifier)); } - public static IEnumerable GetDefaultAssemblyNames(this RuntimeLibrary self, DependencyContext context) + public static IEnumerable GetDefaultAssemblyNames(this RuntimeLibrary self!!, DependencyContext context!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } return ResolveAssets(context, string.Empty, self.RuntimeAssemblyGroups).Select(GetAssemblyName); } - public static IEnumerable GetRuntimeAssemblyNames(this RuntimeLibrary self, DependencyContext context, string runtimeIdentifier) + public static IEnumerable GetRuntimeAssemblyNames(this RuntimeLibrary self!!, DependencyContext context!!, string runtimeIdentifier!!) { - if (self == null) - { - throw new ArgumentNullException(nameof(self)); - } - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (runtimeIdentifier == null) - { - throw new ArgumentNullException(nameof(runtimeIdentifier)); - } return ResolveAssets(context, runtimeIdentifier, self.RuntimeAssemblyGroups).Select(GetAssemblyName); } diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextJsonReader.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextJsonReader.cs index e4b26591038502..fb3e4faeccf70d 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextJsonReader.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextJsonReader.cs @@ -19,13 +19,8 @@ public class DependencyContextJsonReader : IDependencyContextReader private readonly IDictionary _stringPool = new Dictionary(); - public DependencyContext Read(Stream stream) + public DependencyContext Read(Stream stream!!) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - ArraySegment buffer = ReadToEnd(stream); try { diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextLoader.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextLoader.cs index 2249ff69d87056..087db03c039afa 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextLoader.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextLoader.cs @@ -52,13 +52,8 @@ private static bool IsEntryAssembly(Assembly assembly) } [RequiresAssemblyFiles("DependencyContext for an assembly from a application published as single-file is not supported. The method will return null. Make sure the calling code can handle this case.")] - public DependencyContext? Load(Assembly assembly) + public DependencyContext? Load(Assembly assembly!!) { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - DependencyContext? context = null; using (IDependencyContextReader reader = _jsonReaderFactory()) { diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextWriter.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextWriter.cs index 77199168537287..0fb34c4db048bd 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextWriter.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextWriter.cs @@ -13,17 +13,8 @@ namespace Microsoft.Extensions.DependencyModel { public class DependencyContextWriter { - public void Write(DependencyContext context, Stream stream) + public void Write(DependencyContext context!!, Stream stream!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - // Custom encoder is required to fix https://github.com/dotnet/core-setup/issues/7137 // Since the JSON is only written to a file that is read by the SDK (and not transmitted over the wire), // it is safe to skip escaping certain characters in this scenario diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/AppBaseCompilationAssemblyResolver.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/AppBaseCompilationAssemblyResolver.cs index e6d99ea4aec7ae..c190e658b6fc95 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/AppBaseCompilationAssemblyResolver.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/AppBaseCompilationAssemblyResolver.cs @@ -30,20 +30,15 @@ internal AppBaseCompilationAssemblyResolver(IFileSystem fileSystem) { } - internal AppBaseCompilationAssemblyResolver(IFileSystem fileSystem, string basePath, DependencyContextPaths dependencyContextPaths) + internal AppBaseCompilationAssemblyResolver(IFileSystem fileSystem!!, string basePath!!, DependencyContextPaths dependencyContextPaths!!) { - _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); - _basePath = basePath ?? throw new ArgumentNullException(nameof(basePath)); - _dependencyContextPaths = dependencyContextPaths ?? throw new ArgumentNullException(nameof(dependencyContextPaths)); + _fileSystem = fileSystem; + _basePath = basePath; + _dependencyContextPaths = dependencyContextPaths; } - public bool TryResolveAssemblyPaths(CompilationLibrary library, List? assemblies) + public bool TryResolveAssemblyPaths(CompilationLibrary library!!, List? assemblies) { - if (library is null) - { - throw new ArgumentNullException(nameof(library)); - } - bool isProject = string.Equals(library.Type, "project", StringComparison.OrdinalIgnoreCase) || string.Equals(library.Type, "msbuildproject", StringComparison.OrdinalIgnoreCase); diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/CompositeCompilationAssemblyResolver.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/CompositeCompilationAssemblyResolver.cs index fb758d084e9777..469afe37fd2022 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/CompositeCompilationAssemblyResolver.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/CompositeCompilationAssemblyResolver.cs @@ -10,9 +10,9 @@ public class CompositeCompilationAssemblyResolver: ICompilationAssemblyResolver { private readonly ICompilationAssemblyResolver[] _resolvers; - public CompositeCompilationAssemblyResolver(ICompilationAssemblyResolver[] resolvers) + public CompositeCompilationAssemblyResolver(ICompilationAssemblyResolver[] resolvers!!) { - _resolvers = resolvers ?? throw new ArgumentNullException(nameof(resolvers)); + _resolvers = resolvers; } public bool TryResolveAssemblyPaths(CompilationLibrary library, List? assemblies) diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/PackageCompilationAssemblyResolver.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/PackageCompilationAssemblyResolver.cs index efb8cf12b91d6d..b7966379e2b336 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/PackageCompilationAssemblyResolver.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/PackageCompilationAssemblyResolver.cs @@ -29,10 +29,10 @@ internal PackageCompilationAssemblyResolver(IEnvironment environment, { } - internal PackageCompilationAssemblyResolver(IFileSystem fileSystem, string[] nugetPackageDirectories) + internal PackageCompilationAssemblyResolver(IFileSystem fileSystem!!, string[] nugetPackageDirectories!!) { - _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); - _nugetPackageDirectories = nugetPackageDirectories ?? throw new ArgumentNullException(nameof(nugetPackageDirectories)); + _fileSystem = fileSystem; + _nugetPackageDirectories = nugetPackageDirectories; } internal static string[] GetDefaultProbeDirectories(IEnvironment environment) @@ -71,13 +71,8 @@ internal static string[] GetDefaultProbeDirectories(IEnvironment environment) return new string[] { Path.Combine(basePath, ".nuget", "packages") }; } - public bool TryResolveAssemblyPaths(CompilationLibrary library, List? assemblies) + public bool TryResolveAssemblyPaths(CompilationLibrary library!!, List? assemblies) { - if (library is null) - { - throw new ArgumentNullException(nameof(library)); - } - if (_nugetPackageDirectories == null || _nugetPackageDirectories.Length == 0 || !string.Equals(library.Type, "package", StringComparison.OrdinalIgnoreCase)) { diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/ReferenceAssemblyPathResolver.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/ReferenceAssemblyPathResolver.cs index 39ccb9bf228fa4..c1e04a419e0937 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/ReferenceAssemblyPathResolver.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/Resolution/ReferenceAssemblyPathResolver.cs @@ -31,20 +31,15 @@ internal ReferenceAssemblyPathResolver(IFileSystem fileSystem, IEnvironment envi { } - internal ReferenceAssemblyPathResolver(IFileSystem fileSystem, string? defaultReferenceAssembliesPath, string[] fallbackSearchPaths) + internal ReferenceAssemblyPathResolver(IFileSystem fileSystem!!, string? defaultReferenceAssembliesPath, string[] fallbackSearchPaths!!) { - _fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem)); + _fileSystem = fileSystem; _defaultReferenceAssembliesPath = defaultReferenceAssembliesPath; - _fallbackSearchPaths = fallbackSearchPaths ?? throw new ArgumentNullException(nameof(fallbackSearchPaths)); + _fallbackSearchPaths = fallbackSearchPaths; } - public bool TryResolveAssemblyPaths(CompilationLibrary library, List? assemblies) + public bool TryResolveAssemblyPaths(CompilationLibrary library!!, List? assemblies) { - if (library is null) - { - throw new ArgumentNullException(nameof(library)); - } - if (!string.Equals(library.Type, "referenceassembly", StringComparison.OrdinalIgnoreCase)) { return false; diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/RuntimeLibrary.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/RuntimeLibrary.cs index 1b03ce8a181da8..74e97f2895729f 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/RuntimeLibrary.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/RuntimeLibrary.cs @@ -87,9 +87,9 @@ public RuntimeLibrary(string type, string name, string version, string? hash, - IReadOnlyList runtimeAssemblyGroups, - IReadOnlyList nativeLibraryGroups, - IEnumerable resourceAssemblies, + IReadOnlyList runtimeAssemblyGroups!!, + IReadOnlyList nativeLibraryGroups!!, + IEnumerable resourceAssemblies!!, IEnumerable dependencies, bool serviceable, string? path, @@ -105,18 +105,6 @@ public RuntimeLibrary(string type, hashPath, runtimeStoreManifestName) { - if (runtimeAssemblyGroups == null) - { - throw new ArgumentNullException(nameof(runtimeAssemblyGroups)); - } - if (nativeLibraryGroups == null) - { - throw new ArgumentNullException(nameof(nativeLibraryGroups)); - } - if (resourceAssemblies == null) - { - throw new ArgumentNullException(nameof(resourceAssemblies)); - } RuntimeAssemblyGroups = runtimeAssemblyGroups; ResourceAssemblies = resourceAssemblies.ToArray(); NativeLibraryGroups = nativeLibraryGroups; diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeDirectoryContents.cs b/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeDirectoryContents.cs index 3d7b73f3e334d0..653b76e1f2e6a7 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeDirectoryContents.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeDirectoryContents.cs @@ -25,12 +25,8 @@ public class CompositeDirectoryContents : IDirectoryContents /// /// The list of for which the results have to be composed. /// The path. - public CompositeDirectoryContents(IList fileProviders, string subpath) + public CompositeDirectoryContents(IList fileProviders!!, string subpath) { - if (fileProviders == null) - { - throw new ArgumentNullException(nameof(fileProviders)); - } _fileProviders = fileProviders; _subPath = subpath; } diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeFileProvider.cs b/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeFileProvider.cs index 4f2ef8f406d014..c231b57098c60e 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeFileProvider.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Composite/src/CompositeFileProvider.cs @@ -29,12 +29,8 @@ public CompositeFileProvider(params IFileProvider[] fileProviders) /// Initializes a new instance of the class using a collection of file provider. /// /// The collection of - public CompositeFileProvider(IEnumerable fileProviders) + public CompositeFileProvider(IEnumerable fileProviders!!) { - if (fileProviders == null) - { - throw new ArgumentNullException(nameof(fileProviders)); - } _fileProviders = fileProviders.ToArray(); } diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/Internal/PhysicalDirectoryContents.cs b/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/Internal/PhysicalDirectoryContents.cs index 3fa750bb407651..b78b9f5bb78044 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/Internal/PhysicalDirectoryContents.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/Internal/PhysicalDirectoryContents.cs @@ -33,9 +33,9 @@ public PhysicalDirectoryContents(string directory) /// /// The directory /// Specifies which files or directories are excluded from enumeration. - public PhysicalDirectoryContents(string directory, ExclusionFilters filters) + public PhysicalDirectoryContents(string directory!!, ExclusionFilters filters) { - _directory = directory ?? throw new ArgumentNullException(nameof(directory)); + _directory = directory; _filters = filters; } diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/PhysicalFilesWatcher.cs b/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/PhysicalFilesWatcher.cs index 312e600b05399f..9e99d2576c2c07 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/PhysicalFilesWatcher.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Physical/src/PhysicalFilesWatcher.cs @@ -131,13 +131,8 @@ public PhysicalFilesWatcher( /// A globbing pattern for files and directories to watch /// A change token for all files that match the filter /// When is null - public IChangeToken CreateFileChangeToken(string filter) + public IChangeToken CreateFileChangeToken(string filter!!) { - if (filter == null) - { - throw new ArgumentNullException(nameof(filter)); - } - filter = NormalizePath(filter); // Absolute paths and paths traversing above root not permitted. diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Abstractions/FileInfoWrapper.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Abstractions/FileInfoWrapper.cs index 3967a31da9c265..e02eb2da05374a 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Abstractions/FileInfoWrapper.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Abstractions/FileInfoWrapper.cs @@ -17,9 +17,9 @@ public class FileInfoWrapper : FileInfoBase /// Initializes instance of to wrap the specified object . /// /// The - public FileInfoWrapper(FileInfo fileInfo) + public FileInfoWrapper(FileInfo fileInfo!!) { - _fileInfo = fileInfo ?? throw new ArgumentNullException(nameof(fileInfo)); + _fileInfo = fileInfo; } /// diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/FilePatternMatch.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/FilePatternMatch.cs index 79390d6fd6bffb..9e8e1416e41d37 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/FilePatternMatch.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/FilePatternMatch.cs @@ -35,9 +35,9 @@ public struct FilePatternMatch : IEquatable /// /// The path to the file matched, relative to the beginning of the matching search pattern. /// The subpath to the file matched, relative to the first wildcard in the matching search pattern. - public FilePatternMatch(string path, string? stem) + public FilePatternMatch(string path!!, string? stem) { - Path = path ?? throw new ArgumentNullException(nameof(path)); + Path = path; Stem = stem; } diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/LiteralPathSegment.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/LiteralPathSegment.cs index d5f69305ced259..490c5bec25354a 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/LiteralPathSegment.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/LiteralPathSegment.cs @@ -13,10 +13,9 @@ public class LiteralPathSegment : IPathSegment public bool CanProduceStem => false; - public LiteralPathSegment(string value, StringComparison comparisonType) + public LiteralPathSegment(string value!!, StringComparison comparisonType) { - Value = value ?? throw new ArgumentNullException(nameof(value)); - + Value = value; _comparisonType = comparisonType; } diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/WildcardPathSegment.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/WildcardPathSegment.cs index a8de519f761a26..5f925b2d83f9b5 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/WildcardPathSegment.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PathSegments/WildcardPathSegment.cs @@ -15,11 +15,11 @@ public class WildcardPathSegment : IPathSegment private readonly StringComparison _comparisonType; - public WildcardPathSegment(string beginsWith, List contains, string endsWith, StringComparison comparisonType) + public WildcardPathSegment(string beginsWith!!, List contains!!, string endsWith!!, StringComparison comparisonType) { - BeginsWith = beginsWith ?? throw new ArgumentNullException(nameof(beginsWith)); - Contains = contains ?? throw new ArgumentNullException(nameof(contains)); - EndsWith = endsWith ?? throw new ArgumentNullException(nameof(endsWith)); + BeginsWith = beginsWith; + Contains = contains; + EndsWith = endsWith; _comparisonType = comparisonType; } diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextLinear.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextLinear.cs index b03621d46aa685..de726bbb7793c8 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextLinear.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextLinear.cs @@ -10,9 +10,9 @@ namespace Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts public abstract class PatternContextLinear : PatternContext { - public PatternContextLinear(ILinearPattern pattern) + public PatternContextLinear(ILinearPattern pattern!!) { - Pattern = pattern ?? throw new ArgumentNullException(nameof(pattern)); + Pattern = pattern; } public override PatternTestResult Test(FileInfoBase file) diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextRagged.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextRagged.cs index 06df2db3b968e0..bbce5625337db3 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextRagged.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/PatternContexts/PatternContextRagged.cs @@ -9,9 +9,9 @@ namespace Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts { public abstract class PatternContextRagged : PatternContext { - public PatternContextRagged(IRaggedPattern pattern) + public PatternContextRagged(IRaggedPattern pattern!!) { - Pattern = pattern ?? throw new ArgumentNullException(nameof(pattern)); + Pattern = pattern; } public override PatternTestResult Test(FileInfoBase file) diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/Patterns/PatternBuilder.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/Patterns/PatternBuilder.cs index eca50420795bb5..f519150c450411 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/Patterns/PatternBuilder.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Internal/Patterns/PatternBuilder.cs @@ -25,13 +25,8 @@ public PatternBuilder(StringComparison comparisonType) public StringComparison ComparisonType { get; } - public IPattern Build(string pattern) + public IPattern Build(string pattern!!) { - if (pattern == null) - { - throw new ArgumentNullException(nameof(pattern)); - } - pattern = pattern.TrimStart(_slashes); if (pattern.TrimEnd(_slashes).Length < pattern.Length) diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Matcher.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Matcher.cs index e87333e109b4e3..f298d001f8906e 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Matcher.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/Matcher.cs @@ -160,13 +160,8 @@ public virtual Matcher AddExclude(string pattern) /// /// The root directory for the search /// Always returns instance of , even if no files were matched - public virtual PatternMatchingResult Execute(DirectoryInfoBase directoryInfo) + public virtual PatternMatchingResult Execute(DirectoryInfoBase directoryInfo!!) { - if (directoryInfo is null) - { - throw new ArgumentNullException(nameof(directoryInfo)); - } - var context = new MatcherContext(_includePatterns, _excludePatterns, directoryInfo, _comparison); return context.Execute(); } diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/MatcherExtensions.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/MatcherExtensions.cs index 91204a08f6a70b..4c2ab4ac04e9de 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/MatcherExtensions.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/MatcherExtensions.cs @@ -98,13 +98,8 @@ public static PatternMatchingResult Match(this Matcher matcher, IEnumerableThe root directory for the matcher to match the files from. /// The files to run the matcher against. /// The match results. - public static PatternMatchingResult Match(this Matcher matcher, string rootDir, IEnumerable? files) + public static PatternMatchingResult Match(this Matcher matcher!!, string rootDir, IEnumerable? files) { - if (matcher == null) - { - throw new ArgumentNullException(nameof(matcher)); - } - return matcher.Execute(new InMemoryDirectoryInfo(rootDir, files)); } } diff --git a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/PatternMatchingResult.cs b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/PatternMatchingResult.cs index c907984daa6f52..e0536ece0c315d 100644 --- a/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/PatternMatchingResult.cs +++ b/src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/PatternMatchingResult.cs @@ -27,9 +27,9 @@ public PatternMatchingResult(IEnumerable files) /// /// A collection of /// A value that determines if has any matches. - public PatternMatchingResult(IEnumerable files, bool hasMatches) + public PatternMatchingResult(IEnumerable files!!, bool hasMatches) { - Files = files ?? throw new ArgumentNullException(nameof(files)); + Files = files; HasMatches = hasMatches; } diff --git a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostBuilderContext.cs b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostBuilderContext.cs index 4caa38a5dc1edc..94ae0c004fd659 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostBuilderContext.cs +++ b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostBuilderContext.cs @@ -11,9 +11,9 @@ namespace Microsoft.Extensions.Hosting /// public class HostBuilderContext { - public HostBuilderContext(IDictionary properties) + public HostBuilderContext(IDictionary properties!!) { - Properties = properties ?? throw new System.ArgumentNullException(nameof(properties)); + Properties = properties; } /// diff --git a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostEnvironmentEnvExtensions.cs b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostEnvironmentEnvExtensions.cs index f51299ad154194..e722f2ddb812be 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostEnvironmentEnvExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostEnvironmentEnvExtensions.cs @@ -15,13 +15,8 @@ public static class HostEnvironmentEnvExtensions /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsDevelopment(this IHostEnvironment hostEnvironment) + public static bool IsDevelopment(this IHostEnvironment hostEnvironment!!) { - if (hostEnvironment == null) - { - throw new ArgumentNullException(nameof(hostEnvironment)); - } - return hostEnvironment.IsEnvironment(Environments.Development); } @@ -30,13 +25,8 @@ public static bool IsDevelopment(this IHostEnvironment hostEnvironment) /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsStaging(this IHostEnvironment hostEnvironment) + public static bool IsStaging(this IHostEnvironment hostEnvironment!!) { - if (hostEnvironment == null) - { - throw new ArgumentNullException(nameof(hostEnvironment)); - } - return hostEnvironment.IsEnvironment(Environments.Staging); } @@ -45,13 +35,8 @@ public static bool IsStaging(this IHostEnvironment hostEnvironment) /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsProduction(this IHostEnvironment hostEnvironment) + public static bool IsProduction(this IHostEnvironment hostEnvironment!!) { - if (hostEnvironment == null) - { - throw new ArgumentNullException(nameof(hostEnvironment)); - } - return hostEnvironment.IsEnvironment(Environments.Production); } @@ -62,14 +47,9 @@ public static bool IsProduction(this IHostEnvironment hostEnvironment) /// Environment name to validate against. /// True if the specified name is the same as the current environment, otherwise false. public static bool IsEnvironment( - this IHostEnvironment hostEnvironment, + this IHostEnvironment hostEnvironment!!, string environmentName) { - if (hostEnvironment == null) - { - throw new ArgumentNullException(nameof(hostEnvironment)); - } - return string.Equals( hostEnvironment.EnvironmentName, environmentName, diff --git a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostingEnvironmentExtensions.cs b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostingEnvironmentExtensions.cs index e34f2b140ef33f..8871b3d20cb1bb 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostingEnvironmentExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/HostingEnvironmentExtensions.cs @@ -16,13 +16,8 @@ public static class HostingEnvironmentExtensions /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsDevelopment(this IHostingEnvironment hostingEnvironment) + public static bool IsDevelopment(this IHostingEnvironment hostingEnvironment!!) { - if (hostingEnvironment == null) - { - throw new ArgumentNullException(nameof(hostingEnvironment)); - } - return hostingEnvironment.IsEnvironment(EnvironmentName.Development); } @@ -31,13 +26,8 @@ public static bool IsDevelopment(this IHostingEnvironment hostingEnvironment) /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsStaging(this IHostingEnvironment hostingEnvironment) + public static bool IsStaging(this IHostingEnvironment hostingEnvironment!!) { - if (hostingEnvironment == null) - { - throw new ArgumentNullException(nameof(hostingEnvironment)); - } - return hostingEnvironment.IsEnvironment(EnvironmentName.Staging); } @@ -46,13 +36,8 @@ public static bool IsStaging(this IHostingEnvironment hostingEnvironment) /// /// An instance of . /// True if the environment name is , otherwise false. - public static bool IsProduction(this IHostingEnvironment hostingEnvironment) + public static bool IsProduction(this IHostingEnvironment hostingEnvironment!!) { - if (hostingEnvironment == null) - { - throw new ArgumentNullException(nameof(hostingEnvironment)); - } - return hostingEnvironment.IsEnvironment(EnvironmentName.Production); } @@ -63,14 +48,9 @@ public static bool IsProduction(this IHostingEnvironment hostingEnvironment) /// Environment name to validate against. /// True if the specified name is the same as the current environment, otherwise false. public static bool IsEnvironment( - this IHostingEnvironment hostingEnvironment, + this IHostingEnvironment hostingEnvironment!!, string environmentName) { - if (hostingEnvironment == null) - { - throw new ArgumentNullException(nameof(hostingEnvironment)); - } - return string.Equals( hostingEnvironment.EnvironmentName, environmentName, diff --git a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdLifetime.cs b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdLifetime.cs index 9f6aea155fff24..af166430ad4be8 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdLifetime.cs +++ b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdLifetime.cs @@ -19,11 +19,11 @@ public partial class SystemdLifetime : IHostLifetime, IDisposable private CancellationTokenRegistration _applicationStartedRegistration; private CancellationTokenRegistration _applicationStoppingRegistration; - public SystemdLifetime(IHostEnvironment environment, IHostApplicationLifetime applicationLifetime, ISystemdNotifier systemdNotifier, ILoggerFactory loggerFactory) + public SystemdLifetime(IHostEnvironment environment!!, IHostApplicationLifetime applicationLifetime!!, ISystemdNotifier systemdNotifier!!, ILoggerFactory loggerFactory) { - Environment = environment ?? throw new ArgumentNullException(nameof(environment)); - ApplicationLifetime = applicationLifetime ?? throw new ArgumentNullException(nameof(applicationLifetime)); - SystemdNotifier = systemdNotifier ?? throw new ArgumentNullException(nameof(systemdNotifier)); + Environment = environment; + ApplicationLifetime = applicationLifetime; + SystemdNotifier = systemdNotifier; Logger = loggerFactory.CreateLogger("Microsoft.Hosting.Lifetime"); } diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs b/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs index 5f0ad5f68d5244..98d25d625e32f2 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs @@ -46,9 +46,9 @@ public partial class HostBuilder : IHostBuilder /// The delegate for configuring the that will be used /// to construct the for the host. /// The same instance of the for chaining. - public IHostBuilder ConfigureHostConfiguration(Action configureDelegate) + public IHostBuilder ConfigureHostConfiguration(Action configureDelegate!!) { - _configureHostConfigActions.Add(configureDelegate ?? throw new ArgumentNullException(nameof(configureDelegate))); + _configureHostConfigActions.Add(configureDelegate); return this; } @@ -60,9 +60,9 @@ public IHostBuilder ConfigureHostConfiguration(Action con /// The delegate for configuring the that will be used /// to construct the for the host. /// The same instance of the for chaining. - public IHostBuilder ConfigureAppConfiguration(Action configureDelegate) + public IHostBuilder ConfigureAppConfiguration(Action configureDelegate!!) { - _configureAppConfigActions.Add(configureDelegate ?? throw new ArgumentNullException(nameof(configureDelegate))); + _configureAppConfigActions.Add(configureDelegate); return this; } @@ -72,9 +72,9 @@ public IHostBuilder ConfigureAppConfiguration(ActionThe delegate for configuring the that will be used /// to construct the for the host. /// The same instance of the for chaining. - public IHostBuilder ConfigureServices(Action configureDelegate) + public IHostBuilder ConfigureServices(Action configureDelegate!!) { - _configureServicesActions.Add(configureDelegate ?? throw new ArgumentNullException(nameof(configureDelegate))); + _configureServicesActions.Add(configureDelegate); return this; } @@ -84,9 +84,9 @@ public IHostBuilder ConfigureServices(ActionThe type of the builder to create. /// A factory used for creating service providers. /// The same instance of the for chaining. - public IHostBuilder UseServiceProviderFactory(IServiceProviderFactory factory) + public IHostBuilder UseServiceProviderFactory(IServiceProviderFactory factory!!) { - _serviceProviderFactory = new ServiceFactoryAdapter(factory ?? throw new ArgumentNullException(nameof(factory))); + _serviceProviderFactory = new ServiceFactoryAdapter(factory); return this; } @@ -96,9 +96,9 @@ public IHostBuilder UseServiceProviderFactory(IServiceProvide /// A factory used for creating service providers. /// The type of the builder to create. /// The same instance of the for chaining. - public IHostBuilder UseServiceProviderFactory(Func> factory) + public IHostBuilder UseServiceProviderFactory(Func> factory!!) { - _serviceProviderFactory = new ServiceFactoryAdapter(() => _hostBuilderContext, factory ?? throw new ArgumentNullException(nameof(factory))); + _serviceProviderFactory = new ServiceFactoryAdapter(() => _hostBuilderContext, factory); return this; } @@ -110,10 +110,9 @@ public IHostBuilder UseServiceProviderFactory(FuncThe delegate for configuring the that will be used /// to construct the for the host. /// The same instance of the for chaining. - public IHostBuilder ConfigureContainer(Action configureDelegate) + public IHostBuilder ConfigureContainer(Action configureDelegate!!) { - _configureContainerActions.Add(new ConfigureContainerAdapter(configureDelegate - ?? throw new ArgumentNullException(nameof(configureDelegate)))); + _configureContainerActions.Add(new ConfigureContainerAdapter(configureDelegate)); return this; } diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/HostOptions.cs b/src/libraries/Microsoft.Extensions.Hosting/src/HostOptions.cs index 208d945678db7b..ac7cc3f4863b3f 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/HostOptions.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/HostOptions.cs @@ -15,7 +15,7 @@ public class HostOptions /// /// The default timeout for . /// - public TimeSpan ShutdownTimeout { get; set; } = TimeSpan.FromSeconds(5); + public TimeSpan ShutdownTimeout { get; set; } = TimeSpan.FromSeconds(30); /// /// The behavior the will follow when any of diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ConfigureContainerAdapter.cs b/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ConfigureContainerAdapter.cs index 13f7fc3f112b51..a1e8efdaf9447b 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ConfigureContainerAdapter.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ConfigureContainerAdapter.cs @@ -9,9 +9,9 @@ internal sealed class ConfigureContainerAdapter : IConfigureC { private Action _action; - public ConfigureContainerAdapter(Action action) + public ConfigureContainerAdapter(Action action!!) { - _action = action ?? throw new ArgumentNullException(nameof(action)); + _action = action; } public void ConfigureContainer(HostBuilderContext hostContext, object containerBuilder) diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ServiceFactoryAdapter.cs b/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ServiceFactoryAdapter.cs index fc738ef0bb5e98..c75eca2944f62b 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ServiceFactoryAdapter.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/Internal/ServiceFactoryAdapter.cs @@ -12,15 +12,15 @@ internal sealed class ServiceFactoryAdapter : IServiceFactory private readonly Func _contextResolver; private Func> _factoryResolver; - public ServiceFactoryAdapter(IServiceProviderFactory serviceProviderFactory) + public ServiceFactoryAdapter(IServiceProviderFactory serviceProviderFactory!!) { - _serviceProviderFactory = serviceProviderFactory ?? throw new ArgumentNullException(nameof(serviceProviderFactory)); + _serviceProviderFactory = serviceProviderFactory; } - public ServiceFactoryAdapter(Func contextResolver, Func> factoryResolver) + public ServiceFactoryAdapter(Func contextResolver!!, Func> factoryResolver!!) { - _contextResolver = contextResolver ?? throw new ArgumentNullException(nameof(contextResolver)); - _factoryResolver = factoryResolver ?? throw new ArgumentNullException(nameof(factoryResolver)); + _contextResolver = contextResolver; + _factoryResolver = factoryResolver; } public object CreateBuilder(IServiceCollection services) diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs index d24d54235e6991..a8e8f064fd8463 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/OptionsBuilderExtensions.cs @@ -20,14 +20,9 @@ public static class OptionsBuilderExtensions /// The type of options. /// The to configure options instance. /// The so that additional calls can be chained. - public static OptionsBuilder ValidateOnStart<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions>(this OptionsBuilder optionsBuilder) + public static OptionsBuilder ValidateOnStart<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions>(this OptionsBuilder optionsBuilder!!) where TOptions : class { - if (optionsBuilder == null) - { - throw new ArgumentNullException(nameof(optionsBuilder)); - } - optionsBuilder.Services.AddHostedService(); optionsBuilder.Services.AddOptions() .Configure>((vo, options) => diff --git a/src/libraries/Microsoft.Extensions.Hosting/src/ValidationHostedService.cs b/src/libraries/Microsoft.Extensions.Hosting/src/ValidationHostedService.cs index 054dde6d61f143..d8ad460c8bc747 100644 --- a/src/libraries/Microsoft.Extensions.Hosting/src/ValidationHostedService.cs +++ b/src/libraries/Microsoft.Extensions.Hosting/src/ValidationHostedService.cs @@ -54,4 +54,4 @@ public Task StartAsync(CancellationToken cancellationToken) public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; } -} \ No newline at end of file +} diff --git a/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs b/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs index 059111a2e66b27..943a68ebf6ab9a 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/DefaultHttpClientFactory.cs @@ -59,37 +59,12 @@ internal class DefaultHttpClientFactory : IHttpClientFactory, IHttpMessageHandle private readonly TimerCallback _expiryCallback; public DefaultHttpClientFactory( - IServiceProvider services, - IServiceScopeFactory scopeFactory, - ILoggerFactory loggerFactory, - IOptionsMonitor optionsMonitor, - IEnumerable filters) + IServiceProvider services!!, + IServiceScopeFactory scopeFactory!!, + ILoggerFactory loggerFactory!!, + IOptionsMonitor optionsMonitor!!, + IEnumerable filters!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (scopeFactory == null) - { - throw new ArgumentNullException(nameof(scopeFactory)); - } - - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - - if (optionsMonitor == null) - { - throw new ArgumentNullException(nameof(optionsMonitor)); - } - - if (filters == null) - { - throw new ArgumentNullException(nameof(filters)); - } - _services = services; _scopeFactory = scopeFactory; _optionsMonitor = optionsMonitor; @@ -114,13 +89,8 @@ public DefaultHttpClientFactory( _cleanupActiveLock = new object(); } - public HttpClient CreateClient(string name) + public HttpClient CreateClient(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - HttpMessageHandler handler = CreateHandler(name); var client = new HttpClient(handler, disposeHandler: false); @@ -133,13 +103,8 @@ public HttpClient CreateClient(string name) return client; } - public HttpMessageHandler CreateHandler(string name) + public HttpMessageHandler CreateHandler(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - ActiveHandlerTrackingEntry entry = _activeHandlers.GetOrAdd(name, _entryFactory).Value; StartHandlerEntryTimer(entry); diff --git a/src/libraries/Microsoft.Extensions.Http/src/DefaultTypedHttpClientFactory.cs b/src/libraries/Microsoft.Extensions.Http/src/DefaultTypedHttpClientFactory.cs index 02215b040042f0..4b913fc8d4dc97 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/DefaultTypedHttpClientFactory.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/DefaultTypedHttpClientFactory.cs @@ -15,29 +15,14 @@ internal sealed class DefaultTypedHttpClientFactory<[DynamicallyAccessedMembers( private readonly Cache _cache; private readonly IServiceProvider _services; - public DefaultTypedHttpClientFactory(Cache cache, IServiceProvider services) + public DefaultTypedHttpClientFactory(Cache cache!!, IServiceProvider services) { - if (cache == null) - { - throw new ArgumentNullException(nameof(cache)); - } - - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - _cache = cache; _services = services; } - public TClient CreateClient(HttpClient httpClient) + public TClient CreateClient(HttpClient httpClient!!) { - if (httpClient == null) - { - throw new ArgumentNullException(nameof(httpClient)); - } - return (TClient)_cache.Activator(_services, new object[] { httpClient }); } diff --git a/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientBuilderExtensions.cs b/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientBuilderExtensions.cs index a7d428b469d742..8162d9af2ec840 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientBuilderExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientBuilderExtensions.cs @@ -24,18 +24,8 @@ public static class HttpClientBuilderExtensions /// The . /// A delegate that is used to configure an . /// An that can be used to configure the client. - public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder builder, Action configureClient) + public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder builder!!, Action configureClient!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - builder.Services.Configure(builder.Name, options => options.HttpClientActions.Add(configureClient)); return builder; @@ -51,18 +41,8 @@ public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder bui /// The provided to will be the /// same application's root service provider instance. /// - public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder builder, Action configureClient) + public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder builder!!, Action configureClient!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - builder.Services.AddTransient>(services => { return new ConfigureNamedOptions(builder.Name, (options) => @@ -84,18 +64,8 @@ public static IHttpClientBuilder ConfigureHttpClient(this IHttpClientBuilder bui /// The delegate should return a new instance of the message handler each time it /// is invoked. /// - public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder, Func configureHandler) + public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder!!, Func configureHandler!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureHandler == null) - { - throw new ArgumentNullException(nameof(configureHandler)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.AdditionalHandlers.Add(configureHandler())); @@ -119,18 +89,8 @@ public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder b /// a reference to a scoped service provider that shares the lifetime of the handler being constructed. /// /// - public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder, Func configureHandler) + public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder!!, Func configureHandler!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureHandler == null) - { - throw new ArgumentNullException(nameof(configureHandler)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.AdditionalHandlers.Add(configureHandler(b.Services))); @@ -153,14 +113,9 @@ public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder b /// the lifetime of the handler being constructed. /// /// - public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder) + public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClientBuilder builder!!) where THandler : DelegatingHandler { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.AdditionalHandlers.Add(b.Services.GetRequiredService())); @@ -180,18 +135,8 @@ public static IHttpClientBuilder AddHttpMessageHandler(this IHttpClien /// The delegate should return a new instance of the message handler each time it /// is invoked. /// - public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder, Func configureHandler) + public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder!!, Func configureHandler!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureHandler == null) - { - throw new ArgumentNullException(nameof(configureHandler)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.PrimaryHandler = configureHandler()); @@ -217,18 +162,8 @@ public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpCl /// a reference to a scoped service provider that shares the lifetime of the handler being constructed. /// /// - public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder, Func configureHandler) + public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder!!, Func configureHandler!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureHandler == null) - { - throw new ArgumentNullException(nameof(configureHandler)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.PrimaryHandler = configureHandler(b.Services)); @@ -252,14 +187,9 @@ public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpCl /// the lifetime of the handler being constructed. /// /// - public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder) + public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(this IHttpClientBuilder builder!!) where THandler : HttpMessageHandler { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - builder.Services.Configure(builder.Name, options => { options.HttpMessageHandlerBuilderActions.Add(b => b.PrimaryHandler = b.Services.GetRequiredService()); @@ -275,18 +205,8 @@ public static IHttpClientBuilder ConfigurePrimaryHttpMessageHandler(th /// The . /// A delegate that is used to configure an . /// An that can be used to configure the client. - public static IHttpClientBuilder ConfigureHttpMessageHandlerBuilder(this IHttpClientBuilder builder, Action configureBuilder) + public static IHttpClientBuilder ConfigureHttpMessageHandlerBuilder(this IHttpClientBuilder builder!!, Action configureBuilder!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (configureBuilder == null) - { - throw new ArgumentNullException(nameof(configureBuilder)); - } - builder.Services.Configure(builder.Name, options => options.HttpMessageHandlerBuilderActions.Add(configureBuilder)); return builder; @@ -318,14 +238,9 @@ public static IHttpClientBuilder ConfigureHttpMessageHandlerBuilder(this IHttpCl /// /// public static IHttpClientBuilder AddTypedClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IHttpClientBuilder builder) + this IHttpClientBuilder builder!!) where TClient : class { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - return AddTypedClientCore(builder, validateSingleType: false); } @@ -383,15 +298,10 @@ private static TClient AddTransientHelper(IServiceProvider s, IHttpClie /// /// public static IHttpClientBuilder AddTypedClient( - this IHttpClientBuilder builder) + this IHttpClientBuilder builder!!) where TClient : class where TImplementation : class, TClient { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - return AddTypedClientCore(builder, validateSingleType: false); } @@ -439,19 +349,9 @@ private static TClient AddTransientHelper(IServiceProv /// will register a typed client binding that creates using the provided factory function. /// /// - public static IHttpClientBuilder AddTypedClient(this IHttpClientBuilder builder, Func factory) + public static IHttpClientBuilder AddTypedClient(this IHttpClientBuilder builder!!, Func factory!!) where TClient : class { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - return AddTypedClientCore(builder, factory, validateSingleType: false); } @@ -492,35 +392,15 @@ internal static IHttpClientBuilder AddTypedClientCore(this IHttpClientB /// will register a typed client binding that creates using the provided factory function. /// /// - public static IHttpClientBuilder AddTypedClient(this IHttpClientBuilder builder, Func factory) + public static IHttpClientBuilder AddTypedClient(this IHttpClientBuilder builder!!, Func factory!!) where TClient : class { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - return AddTypedClientCore(builder, factory, validateSingleType: false); } - internal static IHttpClientBuilder AddTypedClientCore(this IHttpClientBuilder builder, Func factory, bool validateSingleType) + internal static IHttpClientBuilder AddTypedClientCore(this IHttpClientBuilder builder!!, Func factory!!, bool validateSingleType) where TClient : class { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - ReserveClient(builder, typeof(TClient), builder.Name, validateSingleType); builder.Services.AddTransient(s => @@ -542,18 +422,8 @@ internal static IHttpClientBuilder AddTypedClientCore(this IHttpClientB /// The . /// The provided predicate will be evaluated for each header value when logging. If the predicate returns true then the header value will be replaced with a marker value * in logs; otherwise the header value will be logged. /// - public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder builder, Func shouldRedactHeaderValue) + public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder builder!!, Func shouldRedactHeaderValue!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (shouldRedactHeaderValue == null) - { - throw new ArgumentNullException(nameof(shouldRedactHeaderValue)); - } - builder.Services.Configure(builder.Name, options => { options.ShouldRedactHeaderValue = shouldRedactHeaderValue; @@ -568,18 +438,8 @@ public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder bui /// The . /// The collection of HTTP headers names for which values should be redacted before logging. /// The . - public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder builder, IEnumerable redactedLoggedHeaderNames) + public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder builder!!, IEnumerable redactedLoggedHeaderNames!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (redactedLoggedHeaderNames == null) - { - throw new ArgumentNullException(nameof(redactedLoggedHeaderNames)); - } - builder.Services.Configure(builder.Name, options => { var sensitiveHeaders = new HashSet(redactedLoggedHeaderNames, StringComparer.OrdinalIgnoreCase); @@ -614,13 +474,8 @@ public static IHttpClientBuilder RedactLoggedHeaders(this IHttpClientBuilder bui /// disposed until all references are garbage-collected. /// /// - public static IHttpClientBuilder SetHandlerLifetime(this IHttpClientBuilder builder, TimeSpan handlerLifetime) + public static IHttpClientBuilder SetHandlerLifetime(this IHttpClientBuilder builder!!, TimeSpan handlerLifetime) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - if (handlerLifetime != Timeout.InfiniteTimeSpan && handlerLifetime < HttpClientFactoryOptions.MinimumHandlerLifetime) { throw new ArgumentException(SR.HandlerLifetime_InvalidValue, nameof(handlerLifetime)); diff --git a/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientFactoryServiceCollectionExtensions.cs b/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientFactoryServiceCollectionExtensions.cs index b0a34b788e4305..5a2ad822f7421a 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientFactoryServiceCollectionExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/DependencyInjection/HttpClientFactoryServiceCollectionExtensions.cs @@ -20,13 +20,8 @@ public static class HttpClientFactoryServiceCollectionExtensions /// /// The . /// The . - public static IServiceCollection AddHttpClient(this IServiceCollection services) + public static IServiceCollection AddHttpClient(this IServiceCollection services!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.AddLogging(); services.AddOptions(); @@ -78,18 +73,8 @@ public static IServiceCollection AddHttpClient(this IServiceCollection services) /// Use as the name to configure the default client. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, string name!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - AddHttpClient(services); return new DefaultHttpClientBuilder(services, name); @@ -112,23 +97,8 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// Use as the name to configure the default client. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, Action configureClient) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, string name!!, Action configureClient!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -153,23 +123,8 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// Use as the name to configure the default client. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, Action configureClient) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, string name!!, Action configureClient!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -200,14 +155,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services) + this IServiceCollection services!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -243,15 +193,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services) + this IServiceCollection services!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -286,19 +231,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services, string name) + this IServiceCollection services!!, string name!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -337,20 +272,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services, string name) + this IServiceCollection services!!, string name!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -382,19 +307,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services, Action configureClient) + this IServiceCollection services!!, Action configureClient!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -428,19 +343,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services, Action configureClient) + this IServiceCollection services!!, Action configureClient!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -478,20 +383,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services, Action configureClient) + this IServiceCollection services!!, Action configureClient!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -529,20 +424,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services, Action configureClient) + this IServiceCollection services!!, Action configureClient!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); @@ -579,24 +464,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services, string name, Action configureClient) + this IServiceCollection services!!, string name!!, Action configureClient!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -632,24 +502,9 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TClient>( - this IServiceCollection services, string name, Action configureClient) + this IServiceCollection services!!, string name!!, Action configureClient!!) where TClient : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -689,25 +544,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services, string name, Action configureClient) + this IServiceCollection services!!, string name!!, Action configureClient!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -747,25 +587,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// /// public static IHttpClientBuilder AddHttpClient( - this IServiceCollection services, string name, Action configureClient) + this IServiceCollection services!!, string name!!, Action configureClient!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (configureClient == null) - { - throw new ArgumentNullException(nameof(configureClient)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -799,20 +624,10 @@ public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, /// as the service type. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, Func factory) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, Func factory!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); return AddHttpClient(services, name, factory); } @@ -845,25 +660,10 @@ public static IHttpClientBuilder AddHttpClient(this IS /// /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, Func factory) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, string name!!, Func factory!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); @@ -896,20 +696,10 @@ public static IHttpClientBuilder AddHttpClient(this IS /// as the service type. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, Func factory) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, Func factory!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - string name = TypeNameHelper.GetTypeDisplayName(typeof(TClient), fullName: false); return AddHttpClient(services, name, factory); } @@ -940,25 +730,10 @@ public static IHttpClientBuilder AddHttpClient(this IS /// as the service type. /// /// - public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, Func factory) + public static IHttpClientBuilder AddHttpClient(this IServiceCollection services!!, string name!!, Func factory!!) where TClient : class where TImplementation : class, TClient { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - AddHttpClient(services); var builder = new DefaultHttpClientBuilder(services, name); diff --git a/src/libraries/Microsoft.Extensions.Http/src/HttpClientFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Http/src/HttpClientFactoryExtensions.cs index 876618f7a63d95..77c798f09740cf 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/HttpClientFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/HttpClientFactoryExtensions.cs @@ -15,13 +15,8 @@ public static class HttpClientFactoryExtensions /// /// The . /// An configured using the default configuration. - public static HttpClient CreateClient(this IHttpClientFactory factory) + public static HttpClient CreateClient(this IHttpClientFactory factory!!) { - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - return factory.CreateClient(Options.DefaultName); } } diff --git a/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerBuilder.cs b/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerBuilder.cs index 862a33dfa523ef..9bbe559fe6a913 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerBuilder.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerBuilder.cs @@ -76,21 +76,11 @@ public abstract class HttpMessageHandlerBuilder /// contains a entry. /// -or- /// The DelegatingHandler.InnerHandler property must be . DelegatingHandler instances provided to HttpMessageHandlerBuilder must not be reused or cached. - protected internal static HttpMessageHandler CreateHandlerPipeline(HttpMessageHandler primaryHandler, IEnumerable additionalHandlers) + protected internal static HttpMessageHandler CreateHandlerPipeline(HttpMessageHandler primaryHandler!!, IEnumerable additionalHandlers!!) { // This is similar to https://github.com/aspnet/AspNetWebStack/blob/master/src/System.Net.Http.Formatting/HttpClientFactory.cs#L58 // but we don't want to take that package as a dependency. - if (primaryHandler == null) - { - throw new ArgumentNullException(nameof(primaryHandler)); - } - - if (additionalHandlers == null) - { - throw new ArgumentNullException(nameof(additionalHandlers)); - } - IReadOnlyList additionalHandlersList = additionalHandlers as IReadOnlyList ?? additionalHandlers.ToArray(); HttpMessageHandler next = primaryHandler; diff --git a/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerFactoryExtensions.cs index d69c459d5b3b7b..823c1231669b96 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/HttpMessageHandlerFactoryExtensions.cs @@ -15,13 +15,8 @@ public static class HttpMessageHandlerFactoryExtensions /// /// The . /// An configured using the default configuration. - public static HttpMessageHandler CreateHandler(this IHttpMessageHandlerFactory factory) + public static HttpMessageHandler CreateHandler(this IHttpMessageHandlerFactory factory!!) { - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - return factory.CreateHandler(Options.DefaultName); } } diff --git a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandler.cs b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandler.cs index cca20cbca1a1ed..c7c502be236e0c 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandler.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandler.cs @@ -25,13 +25,8 @@ public class LoggingHttpMessageHandler : DelegatingHandler /// /// The to log to. /// is . - public LoggingHttpMessageHandler(ILogger logger) + public LoggingHttpMessageHandler(ILogger logger!!) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - _logger = logger; } @@ -41,31 +36,16 @@ public LoggingHttpMessageHandler(ILogger logger) /// The to log to. /// The used to configure the instance. /// or is . - public LoggingHttpMessageHandler(ILogger logger, HttpClientFactoryOptions options) + public LoggingHttpMessageHandler(ILogger logger!!, HttpClientFactoryOptions options!!) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - _logger = logger; _options = options; } /// /// Loggs the request to and response from the sent . - protected async override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected async override Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request)); - } - Func shouldRedactHeaderValue = _options?.ShouldRedactHeaderValue ?? _shouldNotRedactHeaderValue; // Not using a scope here because we always expect this to be at the end of the pipeline, thus there's diff --git a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandlerBuilderFilter.cs b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandlerBuilderFilter.cs index ebefa2047bb47d..b3a6f66004578f 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandlerBuilderFilter.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingHttpMessageHandlerBuilderFilter.cs @@ -14,29 +14,14 @@ internal sealed class LoggingHttpMessageHandlerBuilderFilter : IHttpMessageHandl private readonly ILoggerFactory _loggerFactory; private readonly IOptionsMonitor _optionsMonitor; - public LoggingHttpMessageHandlerBuilderFilter(ILoggerFactory loggerFactory, IOptionsMonitor optionsMonitor) + public LoggingHttpMessageHandlerBuilderFilter(ILoggerFactory loggerFactory!!, IOptionsMonitor optionsMonitor!!) { - if (loggerFactory == null) - { - throw new ArgumentNullException(nameof(loggerFactory)); - } - - if (optionsMonitor == null) - { - throw new ArgumentNullException(nameof(optionsMonitor)); - } - _loggerFactory = loggerFactory; _optionsMonitor = optionsMonitor; } - public Action Configure(Action next) + public Action Configure(Action next!!) { - if (next == null) - { - throw new ArgumentNullException(nameof(next)); - } - return (builder) => { // Run other configuration first, we want to decorate. diff --git a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingScopeHttpMessageHandler.cs b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingScopeHttpMessageHandler.cs index 92fab8b7d06f34..6b9536b92e01ed 100644 --- a/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingScopeHttpMessageHandler.cs +++ b/src/libraries/Microsoft.Extensions.Http/src/Logging/LoggingScopeHttpMessageHandler.cs @@ -25,13 +25,8 @@ public class LoggingScopeHttpMessageHandler : DelegatingHandler /// /// The to log to. /// is . - public LoggingScopeHttpMessageHandler(ILogger logger) + public LoggingScopeHttpMessageHandler(ILogger logger!!) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - _logger = logger; } @@ -41,31 +36,16 @@ public LoggingScopeHttpMessageHandler(ILogger logger) /// The to log to. /// The used to configure the instance. /// or is . - public LoggingScopeHttpMessageHandler(ILogger logger, HttpClientFactoryOptions options) + public LoggingScopeHttpMessageHandler(ILogger logger!!, HttpClientFactoryOptions options!!) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - _logger = logger; _options = options; } /// /// Loggs the request to and response from the sent . - protected async override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected async override Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request)); - } - var stopwatch = ValueStopwatch.StartNew(); Func shouldRedactHeaderValue = _options?.ShouldRedactHeaderValue ?? _shouldNotRedactHeaderValue; diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LogValuesFormatter.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LogValuesFormatter.cs index 24dfb06b014928..4d2b3e66c96a93 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LogValuesFormatter.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LogValuesFormatter.cs @@ -23,13 +23,8 @@ internal sealed class LogValuesFormatter // - Be annotated as [SkipLocalsInit] to avoid zero'ing the stackalloc'd char span // - Format _valueNames.Count directly into a span - public LogValuesFormatter(string format) + public LogValuesFormatter(string format!!) { - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - OriginalFormat = format; var vsb = new ValueStringBuilder(stackalloc char[256]); diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs index 4ef6c371e2b918..64c53da7275d11 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerExtensions.cs @@ -383,13 +383,8 @@ public static void Log(this ILogger logger, LogLevel logLevel, Exception? except /// The exception to log. /// Format string of the log message. /// An object array that contains zero or more objects to format. - public static void Log(this ILogger logger, LogLevel logLevel, EventId eventId, Exception? exception, string? message, params object?[] args) + public static void Log(this ILogger logger!!, LogLevel logLevel, EventId eventId, Exception? exception, string? message, params object?[] args) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - logger.Log(logLevel, eventId, new FormattedLogValues(message, args), exception, _messageFormatter); } @@ -408,15 +403,10 @@ public static void Log(this ILogger logger, LogLevel logLevel, EventId eventId, /// } /// public static IDisposable BeginScope( - this ILogger logger, + this ILogger logger!!, string messageFormat, params object?[] args) { - if (logger == null) - { - throw new ArgumentNullException(nameof(logger)); - } - return logger.BeginScope(new FormattedLogValues(messageFormat, args)); } diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerFactoryExtensions.cs index 96b02320918f74..6333a7e7b676f6 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerFactoryExtensions.cs @@ -17,12 +17,8 @@ public static class LoggerFactoryExtensions /// The factory. /// The type. /// The that was created. - public static ILogger CreateLogger(this ILoggerFactory factory) + public static ILogger CreateLogger(this ILoggerFactory factory!!) { - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } return new Logger(factory); } /// @@ -31,18 +27,8 @@ public static ILogger CreateLogger(this ILoggerFactory factory) /// The factory. /// The type. /// The that was created. - public static ILogger CreateLogger(this ILoggerFactory factory, Type type) + public static ILogger CreateLogger(this ILoggerFactory factory!!, Type type!!) { - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - return factory.CreateLogger(TypeNameHelper.GetTypeDisplayName(type, includeGenericParameters: false, nestedTypeDelimiter: '.')); } } diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs index bea9a8bdeff700..05022936317194 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/src/LoggerT.cs @@ -19,13 +19,8 @@ public class Logger : ILogger /// Creates a new . /// /// The factory. - public Logger(ILoggerFactory factory) + public Logger(ILoggerFactory factory!!) { - if (factory == null) - { - throw new ArgumentNullException(nameof(factory)); - } - _logger = factory.CreateLogger(TypeNameHelper.GetTypeDisplayName(typeof(T), includeGenericParameters: false, nestedTypeDelimiter: '.')); } diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/AnsiParser.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/AnsiParser.cs index cf6c22f67f37af..8d87d6b0fa2def 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/AnsiParser.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/AnsiParser.cs @@ -10,12 +10,8 @@ namespace Microsoft.Extensions.Logging.Console internal sealed class AnsiParser { private readonly Action _onParseWrite; - public AnsiParser(Action onParseWrite) + public AnsiParser(Action onParseWrite!!) { - if (onParseWrite == null) - { - throw new ArgumentNullException(nameof(onParseWrite)); - } _onParseWrite = onParseWrite; } diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleFormatter.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleFormatter.cs index 716502fb33faa9..b4c20770f830c4 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleFormatter.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleFormatter.cs @@ -12,9 +12,9 @@ namespace Microsoft.Extensions.Logging.Console /// public abstract class ConsoleFormatter { - protected ConsoleFormatter(string name) + protected ConsoleFormatter(string name!!) { - Name = name ?? throw new ArgumentNullException(nameof(name)); + Name = name; } /// diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLogger.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLogger.cs index 906f703a8d679c..301ed0a9fbc5fc 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLogger.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLogger.cs @@ -14,13 +14,8 @@ internal sealed class ConsoleLogger : ILogger private readonly string _name; private readonly ConsoleLoggerProcessor _queueProcessor; - internal ConsoleLogger(string name, ConsoleLoggerProcessor loggerProcessor) + internal ConsoleLogger(string name!!, ConsoleLoggerProcessor loggerProcessor) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - _name = name; _queueProcessor = loggerProcessor; } diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.cs index 8a91327d95c32c..ef1e80a113627a 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Console/src/ConsoleLoggerExtensions.cs @@ -44,13 +44,8 @@ public static ILoggingBuilder AddConsole(this ILoggingBuilder builder) /// /// The to use. /// A delegate to configure the . - public static ILoggingBuilder AddConsole(this ILoggingBuilder builder, Action configure) + public static ILoggingBuilder AddConsole(this ILoggingBuilder builder, Action configure!!) { - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - builder.AddConsole(); builder.Services.Configure(configure); @@ -108,13 +103,9 @@ public static ILoggingBuilder AddSystemdConsole(this ILoggingBuilder builder, Ac public static ILoggingBuilder AddSystemdConsole(this ILoggingBuilder builder) => builder.AddFormatterWithName(ConsoleFormatterNames.Systemd); - internal static ILoggingBuilder AddConsoleWithFormatter(this ILoggingBuilder builder, string name, Action configure) + internal static ILoggingBuilder AddConsoleWithFormatter(this ILoggingBuilder builder, string name, Action configure!!) where TOptions : ConsoleFormatterOptions { - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } builder.AddFormatterWithName(name); builder.Services.Configure(configure); @@ -148,15 +139,10 @@ private static ILoggingBuilder AddFormatterWithName(this ILoggingBuilder builder /// The to use. /// A delegate to configure options 'TOptions' for custom formatter 'TFormatter'. [RequiresUnreferencedCode(TrimmingRequiresUnreferencedCodeMessage)] - public static ILoggingBuilder AddConsoleFormatter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFormatter, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this ILoggingBuilder builder, Action configure) + public static ILoggingBuilder AddConsoleFormatter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFormatter, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this ILoggingBuilder builder, Action configure!!) where TOptions : ConsoleFormatterOptions where TFormatter : ConsoleFormatter { - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - builder.AddConsoleFormatter(); builder.Services.Configure(configure); return builder; diff --git a/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLogLogger.cs b/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLogLogger.cs index 36501319caf438..c8eac36b02acb2 100644 --- a/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLogLogger.cs +++ b/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLogLogger.cs @@ -27,10 +27,10 @@ internal sealed class EventLogLogger : ILogger /// The name of the logger. /// The . /// The . - public EventLogLogger(string name, EventLogSettings settings, IExternalScopeProvider externalScopeProvider) + public EventLogLogger(string name!!, EventLogSettings settings!!, IExternalScopeProvider externalScopeProvider) { - _name = name ?? throw new ArgumentNullException(nameof(name)); - _settings = settings ?? throw new ArgumentNullException(nameof(settings)); + _name = name; + _settings = settings; _externalScopeProvider = externalScopeProvider; EventLog = settings.EventLog; diff --git a/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLoggerFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLoggerFactoryExtensions.cs index 2c10135436a989..17c2c8b0466269 100644 --- a/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLoggerFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.EventLog/src/EventLoggerFactoryExtensions.cs @@ -18,13 +18,8 @@ public static class EventLoggerFactoryExtensions /// /// The extension method argument. /// The so that additional calls can be chained. - public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder) + public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton()); return builder; @@ -36,18 +31,8 @@ public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder) /// The extension method argument. /// The . /// The so that additional calls can be chained. - public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, EventLogSettings settings) + public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder!!, EventLogSettings settings!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (settings == null) - { - throw new ArgumentNullException(nameof(settings)); - } - builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton(new EventLogLoggerProvider(settings))); return builder; @@ -59,13 +44,8 @@ public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, EventLog /// The extension method argument. /// A delegate to configure the . /// The so that additional calls can be chained. - public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, Action configure) + public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, Action configure!!) { - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - builder.AddEventLog(); builder.Services.Configure(configure); diff --git a/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerFactoryExtensions.cs index 5e6994495f4ddf..de15d2e5b0ea8f 100644 --- a/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerFactoryExtensions.cs @@ -19,13 +19,8 @@ public static class EventSourceLoggerFactoryExtensions /// /// The extension method argument. /// The so that additional calls can be chained. - public static ILoggingBuilder AddEventSourceLogger(this ILoggingBuilder builder) + public static ILoggingBuilder AddEventSourceLogger(this ILoggingBuilder builder!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - builder.Services.TryAddSingleton(LoggingEventSource.Instance); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton, EventLogFiltersConfigureOptions>()); diff --git a/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerProvider.cs b/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerProvider.cs index 3d6036f7c0b05a..e4e5e55872209c 100644 --- a/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerProvider.cs +++ b/src/libraries/Microsoft.Extensions.Logging.EventSource/src/EventSourceLoggerProvider.cs @@ -20,12 +20,8 @@ public class EventSourceLoggerProvider : ILoggerProvider private EventSourceLogger _loggers; // Linked list of loggers that I have created private readonly LoggingEventSource _eventSource; - public EventSourceLoggerProvider(LoggingEventSource eventSource) + public EventSourceLoggerProvider(LoggingEventSource eventSource!!) { - if (eventSource == null) - { - throw new ArgumentNullException(nameof(eventSource)); - } _eventSource = eventSource; _factoryID = Interlocked.Increment(ref _globalFactoryID); } diff --git a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceFactoryExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceFactoryExtensions.cs index fb8320b4b179c6..d4288e3fd7bb80 100644 --- a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceFactoryExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceFactoryExtensions.cs @@ -20,19 +20,9 @@ public static class TraceSourceFactoryExtensions /// The name of the to use. /// The so that additional calls can be chained. public static ILoggingBuilder AddTraceSource( - this ILoggingBuilder builder, - string switchName) + this ILoggingBuilder builder!!, + string switchName!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (switchName == null) - { - throw new ArgumentNullException(nameof(switchName)); - } - return builder.AddTraceSource(new SourceSwitch(switchName)); } @@ -44,25 +34,10 @@ public static ILoggingBuilder AddTraceSource( /// The to use. /// The so that additional calls can be chained. public static ILoggingBuilder AddTraceSource( - this ILoggingBuilder builder, - string switchName, - TraceListener listener) + this ILoggingBuilder builder!!, + string switchName!!, + TraceListener listener!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (switchName == null) - { - throw new ArgumentNullException(nameof(switchName)); - } - - if (listener == null) - { - throw new ArgumentNullException(nameof(listener)); - } - return builder.AddTraceSource(new SourceSwitch(switchName), listener); } @@ -73,19 +48,9 @@ public static ILoggingBuilder AddTraceSource( /// The to use. /// The so that additional calls can be chained. public static ILoggingBuilder AddTraceSource( - this ILoggingBuilder builder, - SourceSwitch sourceSwitch) + this ILoggingBuilder builder!!, + SourceSwitch sourceSwitch!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (sourceSwitch == null) - { - throw new ArgumentNullException(nameof(sourceSwitch)); - } - builder.Services.AddSingleton(_ => new TraceSourceLoggerProvider(sourceSwitch)); return builder; @@ -99,25 +64,10 @@ public static ILoggingBuilder AddTraceSource( /// The to use. /// The so that additional calls can be chained. public static ILoggingBuilder AddTraceSource( - this ILoggingBuilder builder, - SourceSwitch sourceSwitch, - TraceListener listener) + this ILoggingBuilder builder!!, + SourceSwitch sourceSwitch!!, + TraceListener listener!!) { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - if (sourceSwitch == null) - { - throw new ArgumentNullException(nameof(sourceSwitch)); - } - - if (listener == null) - { - throw new ArgumentNullException(nameof(listener)); - } - builder.Services.AddSingleton(_ => new TraceSourceLoggerProvider(sourceSwitch, listener)); return builder; diff --git a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs index c23fa4605d85b8..6983adab855cbe 100644 --- a/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs +++ b/src/libraries/Microsoft.Extensions.Logging.TraceSource/src/TraceSourceLoggerProvider.cs @@ -35,13 +35,8 @@ public TraceSourceLoggerProvider(SourceSwitch rootSourceSwitch) /// /// The to use. /// The to use. - public TraceSourceLoggerProvider(SourceSwitch rootSourceSwitch, TraceListener rootTraceListener) + public TraceSourceLoggerProvider(SourceSwitch rootSourceSwitch!!, TraceListener rootTraceListener) { - if (rootSourceSwitch == null) - { - throw new ArgumentNullException(nameof(rootSourceSwitch)); - } - _rootSourceSwitch = rootSourceSwitch; _rootTraceListener = rootTraceListener; } diff --git a/src/libraries/Microsoft.Extensions.Logging/src/LoggingServiceCollectionExtensions.cs b/src/libraries/Microsoft.Extensions.Logging/src/LoggingServiceCollectionExtensions.cs index 7e2e1a67f97cae..b04b31b87d4125 100644 --- a/src/libraries/Microsoft.Extensions.Logging/src/LoggingServiceCollectionExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging/src/LoggingServiceCollectionExtensions.cs @@ -29,13 +29,8 @@ public static IServiceCollection AddLogging(this IServiceCollection services) /// The to add services to. /// The configuration delegate. /// The so that additional calls can be chained. - public static IServiceCollection AddLogging(this IServiceCollection services, Action configure) + public static IServiceCollection AddLogging(this IServiceCollection services!!, Action configure) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.AddOptions(); services.TryAdd(ServiceDescriptor.Singleton()); diff --git a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigurationChangeTokenSource.cs b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigurationChangeTokenSource.cs index 2a414c7bce237e..225d1abb43a3d0 100644 --- a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigurationChangeTokenSource.cs +++ b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigurationChangeTokenSource.cs @@ -21,19 +21,16 @@ public class ConfigurationChangeTokenSource : IOptionsChangeTokenSourc /// /// The configuration instance. public ConfigurationChangeTokenSource(IConfiguration config) : this(Options.DefaultName, config) - { } + { + } /// /// Constructor taking the instance to watch. /// /// The name of the options instance being watched. /// The configuration instance. - public ConfigurationChangeTokenSource(string name, IConfiguration config) + public ConfigurationChangeTokenSource(string name, IConfiguration config!!) { - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } _config = config; Name = name ?? Options.DefaultName; } diff --git a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigureFromConfigurationOptions.cs b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigureFromConfigurationOptions.cs index b9b3d00ee1fba2..c0bd89c168ea24 100644 --- a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigureFromConfigurationOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/ConfigureFromConfigurationOptions.cs @@ -23,13 +23,9 @@ public class ConfigureFromConfigurationOptions<[DynamicallyAccessedMembers(Dynam /// The instance. //Even though TOptions is annotated, we need to annotate as RUC as we can't guarantee properties on referenced types are preserved. [RequiresUnreferencedCode(OptionsBuilderConfigurationExtensions.TrimmingRequiredUnreferencedCodeMessage)] - public ConfigureFromConfigurationOptions(IConfiguration config) + public ConfigureFromConfigurationOptions(IConfiguration config!!) : base(options => BindFromOptions(options, config)) { - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } } [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", diff --git a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/NamedConfigureFromConfigurationOptions.cs b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/NamedConfigureFromConfigurationOptions.cs index df5b7e4cb92a3f..78c791abea2a94 100644 --- a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/NamedConfigureFromConfigurationOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/NamedConfigureFromConfigurationOptions.cs @@ -32,13 +32,9 @@ public NamedConfigureFromConfigurationOptions(string name, IConfiguration config /// The instance. /// Used to configure the . [RequiresUnreferencedCode(OptionsBuilderConfigurationExtensions.TrimmingRequiredUnreferencedCodeMessage)] - public NamedConfigureFromConfigurationOptions(string name, IConfiguration config, Action configureBinder) + public NamedConfigureFromConfigurationOptions(string name, IConfiguration config!!, Action configureBinder) : base(name, options => BindFromOptions(options, config, configureBinder)) { - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } } [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", diff --git a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsBuilderConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsBuilderConfigurationExtensions.cs index 128f0eda38aa4a..d020d8a5df9453 100644 --- a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsBuilderConfigurationExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsBuilderConfigurationExtensions.cs @@ -35,13 +35,8 @@ public static class OptionsBuilderConfigurationExtensions /// Used to configure the . /// The so that additional calls can be chained. [RequiresUnreferencedCode(TrimmingRequiredUnreferencedCodeMessage)] - public static OptionsBuilder Bind<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this OptionsBuilder optionsBuilder, IConfiguration config, Action configureBinder) where TOptions : class + public static OptionsBuilder Bind<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this OptionsBuilder optionsBuilder!!, IConfiguration config, Action configureBinder) where TOptions : class { - if (optionsBuilder == null) - { - throw new ArgumentNullException(nameof(optionsBuilder)); - } - optionsBuilder.Services.Configure(optionsBuilder.Name, config, configureBinder); return optionsBuilder; } @@ -61,13 +56,13 @@ public static class OptionsBuilderConfigurationExtensions /// [RequiresUnreferencedCode(TrimmingRequiredUnreferencedCodeMessage)] public static OptionsBuilder BindConfiguration<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>( - this OptionsBuilder optionsBuilder, - string configSectionPath, + this OptionsBuilder optionsBuilder!!, + string configSectionPath!!, Action configureBinder = null) where TOptions : class { - _ = optionsBuilder ?? throw new ArgumentNullException(nameof(optionsBuilder)); - _ = configSectionPath ?? throw new ArgumentNullException(nameof(configSectionPath)); + _ = optionsBuilder; + _ = configSectionPath; optionsBuilder.Configure((opts, config) => BindFromOptions(opts, config, configSectionPath, configureBinder)); optionsBuilder.Services.AddSingleton, ConfigurationChangeTokenSource>(); diff --git a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsConfigurationServiceCollectionExtensions.cs b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsConfigurationServiceCollectionExtensions.cs index 3606ae73f9a274..8851b87e5460c2 100644 --- a/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsConfigurationServiceCollectionExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Options.ConfigurationExtensions/src/OptionsConfigurationServiceCollectionExtensions.cs @@ -59,19 +59,9 @@ public static class OptionsConfigurationServiceCollectionExtensions /// Used to configure the . /// The so that additional calls can be chained. [RequiresUnreferencedCode(OptionsBuilderConfigurationExtensions.TrimmingRequiredUnreferencedCodeMessage)] - public static IServiceCollection Configure<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this IServiceCollection services, string name, IConfiguration config, Action configureBinder) + public static IServiceCollection Configure<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TOptions>(this IServiceCollection services!!, string name, IConfiguration config!!, Action configureBinder) where TOptions : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } - services.AddOptions(); services.AddSingleton>(new ConfigurationChangeTokenSource(name, config)); return services.AddSingleton>(new NamedConfigureFromConfigurationOptions(name, config, configureBinder)); diff --git a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.cs b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.cs index a75af9f995e7bd..874dd859fe83e8 100644 --- a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.cs +++ b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.cs @@ -17,8 +17,8 @@ namespace Microsoft.Extensions.Options public partial class DataAnnotationValidateOptions<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties)] TOptions> : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("The implementation of Validate method on this type will walk through all properties of the passed in options object, and its type cannot be statically analyzed so its members may be trimmed.")] - public DataAnnotationValidateOptions(string name) { } - public string Name { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public DataAnnotationValidateOptions(string? name) { } + public string? Name { get { throw null; } } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } } diff --git a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.csproj b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.csproj index cf0ef4021364f6..97adcd8f7059be 100644 --- a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.csproj +++ b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/ref/Microsoft.Extensions.Options.DataAnnotations.csproj @@ -1,6 +1,7 @@ $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.1;netstandard2.0;$(NetFrameworkMinimum) + enable diff --git a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/DataAnnotationValidateOptions.cs b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/DataAnnotationValidateOptions.cs index fee4bca8cad4bd..c3e025873b7f11 100644 --- a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/DataAnnotationValidateOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/DataAnnotationValidateOptions.cs @@ -21,7 +21,7 @@ public class DataAnnotationValidateOptions<[DynamicallyAccessedMembers(Dynamical /// The name of the option. [RequiresUnreferencedCode("The implementation of Validate method on this type will walk through all properties of the passed in options object, and its type cannot be " + "statically analyzed so its members may be trimmed.")] - public DataAnnotationValidateOptions(string name) + public DataAnnotationValidateOptions(string? name) { Name = name; } @@ -29,7 +29,7 @@ public DataAnnotationValidateOptions(string name) /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// Validates a specific named options instance (or all when is null). @@ -39,7 +39,7 @@ public DataAnnotationValidateOptions(string name) /// The result. [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "Suppressing the warnings on this method since the constructor of the type is annotated as RequiresUnreferencedCode.")] - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // Null name is used to configure all named options. if (Name != null && Name != name) diff --git a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj index 43c6bc5b40e100..1ba2440004af9a 100644 --- a/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj +++ b/src/libraries/Microsoft.Extensions.Options.DataAnnotations/src/Microsoft.Extensions.Options.DataAnnotations.csproj @@ -2,6 +2,7 @@ $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.1;netstandard2.0;$(NetFrameworkMinimum) + enable true false diff --git a/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.cs b/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.cs index c596b9d96463e5..8b3dd4b7629cce 100644 --- a/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.cs +++ b/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.cs @@ -10,92 +10,92 @@ public static partial class OptionsServiceCollectionExtensions { public static Microsoft.Extensions.DependencyInjection.IServiceCollection AddOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) { throw null; } public static Microsoft.Extensions.Options.OptionsBuilder AddOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) where TOptions : class { throw null; } - public static Microsoft.Extensions.Options.OptionsBuilder AddOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string name) where TOptions : class { throw null; } + public static Microsoft.Extensions.Options.OptionsBuilder AddOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string? name) where TOptions : class { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureAll(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) where TOptions : class { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, object configureInstance) { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureOptions(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] System.Type configureType) { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureOptions<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] TConfigureOptions>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services) where TConfigureOptions : class { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection Configure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) where TOptions : class { throw null; } - public static Microsoft.Extensions.DependencyInjection.IServiceCollection Configure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string name, System.Action configureOptions) where TOptions : class { throw null; } + public static Microsoft.Extensions.DependencyInjection.IServiceCollection Configure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string? name, System.Action configureOptions) where TOptions : class { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection PostConfigureAll(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) where TOptions : class { throw null; } public static Microsoft.Extensions.DependencyInjection.IServiceCollection PostConfigure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configureOptions) where TOptions : class { throw null; } - public static Microsoft.Extensions.DependencyInjection.IServiceCollection PostConfigure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string name, System.Action configureOptions) where TOptions : class { throw null; } + public static Microsoft.Extensions.DependencyInjection.IServiceCollection PostConfigure(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string? name, System.Action configureOptions) where TOptions : class { throw null; } } } namespace Microsoft.Extensions.Options { public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class { - public ConfigureNamedOptions(string name, System.Action action) { } - public System.Action Action { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public ConfigureNamedOptions(string? name, System.Action? action) { } + public System.Action? Action { get { throw null; } } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class where TDep : class { - public ConfigureNamedOptions(string name, TDep dependency, System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureNamedOptions(string? name, TDep dependency, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep Dependency { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class { - public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureNamedOptions(string? name, TDep1 dependency, TDep2 dependency2, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class { - public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureNamedOptions(string? name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class { - public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureNamedOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureNamedOptions, Microsoft.Extensions.Options.IConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class where TDep5 : class { - public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureNamedOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } public TDep5 Dependency5 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void Configure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void Configure(string? name, TOptions options) { } public void Configure(TOptions options) { } } public partial class ConfigureOptions : Microsoft.Extensions.Options.IConfigureOptions where TOptions : class { - public ConfigureOptions(System.Action action) { } - public System.Action Action { get { throw null; } } + public ConfigureOptions(System.Action? action) { } + public System.Action? Action { get { throw null; } } public virtual void Configure(TOptions options) { } } public partial interface IConfigureNamedOptions : Microsoft.Extensions.Options.IConfigureOptions where TOptions : class { - void Configure(string name, TOptions options); + void Configure(string? name, TOptions options); } public partial interface IConfigureOptions where TOptions : class { @@ -103,7 +103,7 @@ public partial interface IConfigureOptions where TOptions : class } public partial interface IOptionsChangeTokenSource { - string Name { get; } + string? Name { get; } Microsoft.Extensions.Primitives.IChangeToken GetChangeToken(); } public partial interface IOptionsFactory<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions> where TOptions : class @@ -113,19 +113,19 @@ public partial interface IOptionsFactory<[System.Diagnostics.CodeAnalysis.Dynami public partial interface IOptionsMonitorCache<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions> where TOptions : class { void Clear(); - TOptions GetOrAdd(string name, System.Func createOptions); - bool TryAdd(string name, TOptions options); - bool TryRemove(string name); + TOptions GetOrAdd(string? name, System.Func createOptions); + bool TryAdd(string? name, TOptions options); + bool TryRemove(string? name); } public partial interface IOptionsMonitor<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] out TOptions> { TOptions CurrentValue { get; } - TOptions Get(string name); - System.IDisposable OnChange(System.Action listener); + TOptions Get(string? name); + System.IDisposable OnChange(System.Action listener); } public partial interface IOptionsSnapshot<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] out TOptions> : Microsoft.Extensions.Options.IOptions where TOptions : class { - TOptions Get(string name); + TOptions Get(string? name); } public partial interface IOptions<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] out TOptions> where TOptions : class { @@ -133,11 +133,11 @@ public partial interface IOptions<[System.Diagnostics.CodeAnalysis.DynamicallyAc } public partial interface IPostConfigureOptions where TOptions : class { - void PostConfigure(string name, TOptions options); + void PostConfigure(string? name, TOptions options); } public partial interface IValidateOptions where TOptions : class { - Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options); + Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options); } public static partial class Options { @@ -146,7 +146,7 @@ public static partial class Options } public partial class OptionsBuilder where TOptions : class { - public OptionsBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string name) { } + public OptionsBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection services, string? name) { } public string Name { get { throw null; } } public Microsoft.Extensions.DependencyInjection.IServiceCollection Services { get { throw null; } } public virtual Microsoft.Extensions.Options.OptionsBuilder Configure(System.Action configureOptions) { throw null; } @@ -163,24 +163,24 @@ public OptionsBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollectio public virtual Microsoft.Extensions.Options.OptionsBuilder PostConfigure(System.Action configureOptions) where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class where TDep5 : class { throw null; } public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) { throw null; } - public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) where TDep : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) where TDep : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) where TDep1 : notnull where TDep2 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) where TDep1 : notnull where TDep2 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull where TDep4 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull where TDep4 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull where TDep4 : notnull where TDep5 : notnull { throw null; } + public virtual Microsoft.Extensions.Options.OptionsBuilder Validate(System.Func validation, string failureMessage) where TDep1 : notnull where TDep2 : notnull where TDep3 : notnull where TDep4 : notnull where TDep5 : notnull { throw null; } } public partial class OptionsCache<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions> : Microsoft.Extensions.Options.IOptionsMonitorCache where TOptions : class { public OptionsCache() { } public void Clear() { } - public virtual TOptions GetOrAdd(string name, System.Func createOptions) { throw null; } - public virtual bool TryAdd(string name, TOptions options) { throw null; } - public virtual bool TryRemove(string name) { throw null; } + public virtual TOptions GetOrAdd(string? name, System.Func createOptions) { throw null; } + public virtual bool TryAdd(string? name, TOptions options) { throw null; } + public virtual bool TryRemove(string? name) { throw null; } } public partial class OptionsFactory<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOptions> : Microsoft.Extensions.Options.IOptionsFactory where TOptions : class { @@ -193,7 +193,7 @@ public partial class OptionsManager<[System.Diagnostics.CodeAnalysis.Dynamically { public OptionsManager(Microsoft.Extensions.Options.IOptionsFactory factory) { } public TOptions Value { get { throw null; } } - public virtual TOptions Get(string name) { throw null; } + public virtual TOptions Get(string? name) { throw null; } } public static partial class OptionsMonitorExtensions { @@ -204,12 +204,12 @@ public partial class OptionsMonitor<[System.Diagnostics.CodeAnalysis.Dynamically public OptionsMonitor(Microsoft.Extensions.Options.IOptionsFactory factory, System.Collections.Generic.IEnumerable> sources, Microsoft.Extensions.Options.IOptionsMonitorCache cache) { } public TOptions CurrentValue { get { throw null; } } public void Dispose() { } - public virtual TOptions Get(string name) { throw null; } + public virtual TOptions Get(string? name) { throw null; } public System.IDisposable OnChange(System.Action listener) { throw null; } } public partial class OptionsValidationException : System.Exception { - public OptionsValidationException(string optionsName, System.Type optionsType, System.Collections.Generic.IEnumerable failureMessages) { } + public OptionsValidationException(string optionsName, System.Type optionsType, System.Collections.Generic.IEnumerable? failureMessages) { } public System.Collections.Generic.IEnumerable Failures { get { throw null; } } public override string Message { get { throw null; } } public string OptionsName { get { throw null; } } @@ -222,64 +222,64 @@ public OptionsWrapper(TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class { - public PostConfigureOptions(string name, System.Action action) { } - public System.Action Action { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public PostConfigureOptions(string? name, System.Action? action) { } + public System.Action? Action { get { throw null; } } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class where TDep : class { - public PostConfigureOptions(string name, TDep dependency, System.Action action) { } - public System.Action Action { get { throw null; } } + public PostConfigureOptions(string? name, TDep dependency, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep Dependency { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } public void PostConfigure(TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class { - public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, System.Action action) { } - public System.Action Action { get { throw null; } } + public PostConfigureOptions(string? name, TDep1 dependency, TDep2 dependency2, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } public void PostConfigure(TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class { - public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, System.Action action) { } - public System.Action Action { get { throw null; } } + public PostConfigureOptions(string? name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } public void PostConfigure(TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class { - public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Action action) { } - public System.Action Action { get { throw null; } } + public PostConfigureOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } public void PostConfigure(TOptions options) { } } public partial class PostConfigureOptions : Microsoft.Extensions.Options.IPostConfigureOptions where TOptions : class where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class where TDep5 : class { - public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Action action) { } - public System.Action Action { get { throw null; } } + public PostConfigureOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Action? action) { } + public System.Action? Action { get { throw null; } } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } public TDep5 Dependency5 { get { throw null; } } - public string Name { get { throw null; } } - public virtual void PostConfigure(string name, TOptions options) { } + public string? Name { get { throw null; } } + public virtual void PostConfigure(string? name, TOptions options) { } public void PostConfigure(TOptions options) { } } public partial class ValidateOptionsResult @@ -287,9 +287,11 @@ public partial class ValidateOptionsResult public static readonly Microsoft.Extensions.Options.ValidateOptionsResult Skip; public static readonly Microsoft.Extensions.Options.ValidateOptionsResult Success; public ValidateOptionsResult() { } + [System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(Failures))] + [System.Diagnostics.CodeAnalysis.MemberNotNullWhen(true, nameof(FailureMessage))] public bool Failed { get { throw null; } protected set { } } - public string FailureMessage { get { throw null; } protected set { } } - public System.Collections.Generic.IEnumerable Failures { get { throw null; } protected set { } } + public string? FailureMessage { get { throw null; } protected set { } } + public System.Collections.Generic.IEnumerable? Failures { get { throw null; } protected set { } } public bool Skipped { get { throw null; } protected set { } } public bool Succeeded { get { throw null; } protected set { } } public static Microsoft.Extensions.Options.ValidateOptionsResult Fail(System.Collections.Generic.IEnumerable failures) { throw null; } @@ -297,65 +299,65 @@ public ValidateOptionsResult() { } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, System.Func validation, string failureMessage) { } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, TDep dependency, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, TDep dependency, System.Func validation, string failureMessage) { } public TDep Dependency { get { throw null; } } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, System.Func validation, string failureMessage) { } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, System.Func validation, string failureMessage) { } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, System.Func validation, string failureMessage) { } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } public partial class ValidateOptions : Microsoft.Extensions.Options.IValidateOptions where TOptions : class { - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Func validation, string failureMessage) { } + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, System.Func validation, string failureMessage) { } public TDep1 Dependency1 { get { throw null; } } public TDep2 Dependency2 { get { throw null; } } public TDep3 Dependency3 { get { throw null; } } public TDep4 Dependency4 { get { throw null; } } public TDep5 Dependency5 { get { throw null; } } public string FailureMessage { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public System.Func Validation { get { throw null; } } - public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string name, TOptions options) { throw null; } + public Microsoft.Extensions.Options.ValidateOptionsResult Validate(string? name, TOptions options) { throw null; } } } diff --git a/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.csproj b/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.csproj index 2d114209d23038..4ba4e7d7faee90 100644 --- a/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.csproj +++ b/src/libraries/Microsoft.Extensions.Options/ref/Microsoft.Extensions.Options.csproj @@ -1,6 +1,7 @@ $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.1;netstandard2.0;$(NetFrameworkMinimum) + enable diff --git a/src/libraries/Microsoft.Extensions.Options/src/ConfigureNamedOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/ConfigureNamedOptions.cs index bd1d1c3bd80484..a3f9409c7686bc 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/ConfigureNamedOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/ConfigureNamedOptions.cs @@ -16,7 +16,7 @@ public class ConfigureNamedOptions : IConfigureNamedOptions /// /// The name of the options. /// The action to register. - public ConfigureNamedOptions(string name, Action action) + public ConfigureNamedOptions(string? name, Action? action) { Name = name; Action = action; @@ -25,25 +25,20 @@ public ConfigureNamedOptions(string name, Action action) /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// Invokes the registered configure if the matches. /// /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -73,7 +68,7 @@ public class ConfigureNamedOptions : IConfigureNamedOptionsThe name of the options. /// A dependency. /// The action to register. - public ConfigureNamedOptions(string name, TDep dependency, Action action) + public ConfigureNamedOptions(string? name, TDep dependency, Action? action) { Name = name; Action = action; @@ -83,12 +78,12 @@ public ConfigureNamedOptions(string name, TDep dependency, Action /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The dependency. @@ -100,13 +95,8 @@ public ConfigureNamedOptions(string name, TDep dependency, Action /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -139,7 +129,7 @@ public class ConfigureNamedOptions : IConfigureNamedOpti /// A dependency. /// A second dependency. /// The action to register. - public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, Action action) + public ConfigureNamedOptions(string? name, TDep1 dependency, TDep2 dependency2, Action? action) { Name = name; Action = action; @@ -150,12 +140,12 @@ public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, A /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -172,13 +162,8 @@ public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, A /// /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -214,7 +199,7 @@ public class ConfigureNamedOptions : IConfigureNa /// A second dependency. /// A third dependency. /// The action to register. - public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action action) + public ConfigureNamedOptions(string? name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action? action) { Name = name; Action = action; @@ -226,12 +211,12 @@ public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, T /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -253,13 +238,8 @@ public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, T /// /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -298,7 +278,7 @@ public class ConfigureNamedOptions : IConf /// A third dependency. /// A fourth dependency. /// The action to register. - public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action action) + public ConfigureNamedOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action? action) { Name = name; Action = action; @@ -311,12 +291,12 @@ public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -343,13 +323,8 @@ public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, /// /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -391,7 +366,7 @@ public class ConfigureNamedOptions /// A fourth dependency. /// A fifth dependency. /// The action to register. - public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action action) + public ConfigureNamedOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action? action) { Name = name; Action = action; @@ -405,12 +380,12 @@ public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -442,13 +417,8 @@ public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, /// /// The name of the options instance being configured. /// The options instance to configure. - public virtual void Configure(string name, TOptions options) + public virtual void Configure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { diff --git a/src/libraries/Microsoft.Extensions.Options/src/ConfigureOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/ConfigureOptions.cs index 2e9a98aea8c2e4..556f45bc1ca324 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/ConfigureOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/ConfigureOptions.cs @@ -15,7 +15,7 @@ public class ConfigureOptions : IConfigureOptions where TOpt /// Constructor. /// /// The action to register. - public ConfigureOptions(Action action) + public ConfigureOptions(Action? action) { Action = action; } @@ -23,19 +23,14 @@ public ConfigureOptions(Action action) /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// Invokes the registered configure . /// /// The options instance to configure. - public virtual void Configure(TOptions options) + public virtual void Configure(TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - Action?.Invoke(options); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IConfigureNamedOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/IConfigureNamedOptions.cs index 7cb70f392950e6..8dfef1ee3917d9 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IConfigureNamedOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IConfigureNamedOptions.cs @@ -14,6 +14,6 @@ public interface IConfigureNamedOptions : IConfigureOptions /// The name of the options instance being configured. /// The options instance to configure. - void Configure(string name, TOptions options); + void Configure(string? name, TOptions options); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IOptionsChangeTokenSource.cs b/src/libraries/Microsoft.Extensions.Options/src/IOptionsChangeTokenSource.cs index dd7ec5b19ade4b..d290a04393f9de 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IOptionsChangeTokenSource.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IOptionsChangeTokenSource.cs @@ -20,6 +20,6 @@ public interface IOptionsChangeTokenSource /// /// The name of the option instance being changed. /// - string Name { get; } + string? Name { get; } } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitor.cs b/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitor.cs index 10c51cba1aac3c..a3696fb1161f82 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitor.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitor.cs @@ -20,13 +20,13 @@ public interface IOptionsMonitor<[DynamicallyAccessedMembers(Options.Dynamically /// /// Returns a configured instance with the given name. /// - TOptions Get(string name); + TOptions Get(string? name); /// /// Registers a listener to be called whenever a named changes. /// /// The action to be invoked when has changed. /// An which should be disposed to stop listening for changes. - IDisposable OnChange(Action listener); + IDisposable OnChange(Action listener); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitorCache.cs b/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitorCache.cs index f06062d3eae000..ae924ad59a4c81 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitorCache.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IOptionsMonitorCache.cs @@ -19,7 +19,7 @@ public interface IOptionsMonitorCache<[DynamicallyAccessedMembers(Options.Dynami /// The name of the options instance. /// The func used to create the new instance. /// The options instance. - TOptions GetOrAdd(string name, Func createOptions); + TOptions GetOrAdd(string? name, Func createOptions); /// /// Tries to adds a new option to the cache, will return false if the name already exists. @@ -27,14 +27,14 @@ public interface IOptionsMonitorCache<[DynamicallyAccessedMembers(Options.Dynami /// The name of the options instance. /// The options instance. /// Whether anything was added. - bool TryAdd(string name, TOptions options); + bool TryAdd(string? name, TOptions options); /// /// Try to remove an options instance. /// /// The name of the options instance. /// Whether anything was removed. - bool TryRemove(string name); + bool TryRemove(string? name); /// /// Clears all options instances from the cache. diff --git a/src/libraries/Microsoft.Extensions.Options/src/IOptionsSnapshot.cs b/src/libraries/Microsoft.Extensions.Options/src/IOptionsSnapshot.cs index d29a381f0cb5a8..c0afce9e55d0f8 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IOptionsSnapshot.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IOptionsSnapshot.cs @@ -16,6 +16,6 @@ public interface IOptionsSnapshot<[DynamicallyAccessedMembers(Options.Dynamicall /// /// Returns a configured instance with the given name. /// - TOptions Get(string name); + TOptions Get(string? name); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IPostConfigureOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/IPostConfigureOptions.cs index f0f46cbb1ac04b..5b928957df1c51 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IPostConfigureOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IPostConfigureOptions.cs @@ -15,6 +15,6 @@ public interface IPostConfigureOptions where TOptions : class /// /// The name of the options instance being configured. /// The options instance to configured. - void PostConfigure(string name, TOptions options); + void PostConfigure(string? name, TOptions options); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/IValidateOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/IValidateOptions.cs index 6022b30128873f..cd114ee0ccd0e2 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/IValidateOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/IValidateOptions.cs @@ -15,6 +15,6 @@ public interface IValidateOptions where TOptions : class /// The name of the options instance being validated. /// The options instance. /// The result. - ValidateOptionsResult Validate(string name, TOptions options); + ValidateOptionsResult Validate(string? name, TOptions options); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/Microsoft.Extensions.Options.csproj b/src/libraries/Microsoft.Extensions.Options/src/Microsoft.Extensions.Options.csproj index 9ed0d4776f0584..f593699339b916 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/Microsoft.Extensions.Options.csproj +++ b/src/libraries/Microsoft.Extensions.Options/src/Microsoft.Extensions.Options.csproj @@ -2,6 +2,7 @@ $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.1;netstandard2.0;$(NetFrameworkMinimum) + enable true false diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsBuilder.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsBuilder.cs index 56a41617f9d8bf..5819ee059a04d2 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsBuilder.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsBuilder.cs @@ -29,13 +29,8 @@ public class OptionsBuilder where TOptions : class /// /// The for the options being configured. /// The default name of the instance, if null is used. - public OptionsBuilder(IServiceCollection services, string name) + public OptionsBuilder(IServiceCollection services!!, string? name) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - Services = services; Name = name ?? Options.DefaultName; } @@ -46,13 +41,8 @@ public OptionsBuilder(IServiceCollection services, string name) /// /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddSingleton>(new ConfigureNamedOptions(Name, configureOptions)); return this; } @@ -64,14 +54,9 @@ public virtual OptionsBuilder Configure(Action configureOpti /// A dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) where TDep : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>(sp => new ConfigureNamedOptions(Name, sp.GetRequiredService(), configureOptions)); return this; @@ -85,15 +70,10 @@ public virtual OptionsBuilder Configure(Action c /// The second dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) where TDep1 : class where TDep2 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>(sp => new ConfigureNamedOptions(Name, sp.GetRequiredService(), sp.GetRequiredService(), configureOptions)); return this; @@ -108,16 +88,11 @@ public virtual OptionsBuilder Configure(ActionThe third dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new ConfigureNamedOptions( Name, @@ -138,17 +113,12 @@ public virtual OptionsBuilder Configure(ActionThe fourth dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new ConfigureNamedOptions( Name, @@ -171,18 +141,13 @@ public virtual OptionsBuilder Configure(Ac /// The fifth dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder Configure(Action configureOptions) + public virtual OptionsBuilder Configure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class where TDep5 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new ConfigureNamedOptions( Name, @@ -200,13 +165,8 @@ public virtual OptionsBuilder Configure. /// /// The action used to configure the options. - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddSingleton>(new PostConfigureOptions(Name, configureOptions)); return this; } @@ -218,14 +178,9 @@ public virtual OptionsBuilder PostConfigure(Action configure /// The dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) where TDep : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>(sp => new PostConfigureOptions(Name, sp.GetRequiredService(), configureOptions)); return this; @@ -239,15 +194,10 @@ public virtual OptionsBuilder PostConfigure(ActionThe second dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) where TDep1 : class where TDep2 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>(sp => new PostConfigureOptions(Name, sp.GetRequiredService(), sp.GetRequiredService(), configureOptions)); return this; @@ -262,16 +212,11 @@ public virtual OptionsBuilder PostConfigure(ActionThe third dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new PostConfigureOptions( Name, @@ -292,17 +237,12 @@ public virtual OptionsBuilder PostConfigure(Actio /// The fourth dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new PostConfigureOptions( Name, @@ -325,18 +265,13 @@ public virtual OptionsBuilder PostConfigureThe fifth dependency used by the action. /// The action used to configure the options. /// The current . - public virtual OptionsBuilder PostConfigure(Action configureOptions) + public virtual OptionsBuilder PostConfigure(Action configureOptions!!) where TDep1 : class where TDep2 : class where TDep3 : class where TDep4 : class where TDep5 : class { - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - Services.AddTransient>( sp => new PostConfigureOptions( Name, @@ -363,13 +298,8 @@ public virtual OptionsBuilder Validate(Func validation /// The validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddSingleton>(new ValidateOptions(Name, validation, failureMessage)); return this; } @@ -380,7 +310,7 @@ public virtual OptionsBuilder Validate(Func validation /// The dependency used by the validation function. /// The validation function. /// The current . - public virtual OptionsBuilder Validate(Func validation) + public virtual OptionsBuilder Validate(Func validation) where TDep : notnull => Validate(validation: validation, failureMessage: DefaultValidationFailureMessage); /// @@ -390,13 +320,8 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) where TDep : notnull { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddTransient>(sp => new ValidateOptions(Name, sp.GetRequiredService(), validation, failureMessage)); return this; @@ -410,6 +335,8 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The current . public virtual OptionsBuilder Validate(Func validation) + where TDep1 : notnull + where TDep2 : notnull => Validate(validation: validation, failureMessage: DefaultValidationFailureMessage); /// @@ -420,13 +347,10 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) + where TDep1 : notnull + where TDep2 : notnull { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddTransient>(sp => new ValidateOptions(Name, sp.GetRequiredService(), @@ -445,6 +369,9 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The current . public virtual OptionsBuilder Validate(Func validation) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull => Validate(validation: validation, failureMessage: DefaultValidationFailureMessage); /// @@ -456,13 +383,11 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddTransient>(sp => new ValidateOptions(Name, sp.GetRequiredService(), @@ -483,6 +408,10 @@ public virtual OptionsBuilder Validate(FuncThe validation function. /// The current . public virtual OptionsBuilder Validate(Func validation) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull + where TDep4 : notnull => Validate(validation: validation, failureMessage: DefaultValidationFailureMessage); /// @@ -495,13 +424,12 @@ public virtual OptionsBuilder Validate(Fun /// The validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull + where TDep4 : notnull { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddTransient>(sp => new ValidateOptions(Name, sp.GetRequiredService(), @@ -524,6 +452,11 @@ public virtual OptionsBuilder Validate(Fun /// The validation function. /// The current . public virtual OptionsBuilder Validate(Func validation) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull + where TDep4 : notnull + where TDep5 : notnull => Validate(validation: validation, failureMessage: DefaultValidationFailureMessage); /// @@ -537,13 +470,13 @@ public virtual OptionsBuilder ValidateThe validation function. /// The failure message to use when validation fails. /// The current . - public virtual OptionsBuilder Validate(Func validation, string failureMessage) + public virtual OptionsBuilder Validate(Func validation!!, string failureMessage) + where TDep1 : notnull + where TDep2 : notnull + where TDep3 : notnull + where TDep4 : notnull + where TDep5 : notnull { - if (validation == null) - { - throw new ArgumentNullException(nameof(validation)); - } - Services.AddTransient>(sp => new ValidateOptions(Name, sp.GetRequiredService(), diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsCache.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsCache.cs index 7bc3914072a001..869fd75b4b6e22 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsCache.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsCache.cs @@ -28,15 +28,10 @@ public class OptionsCache<[DynamicallyAccessedMembers(Options.DynamicallyAccesse /// The name of the options instance. /// The func used to create the new instance. /// The options instance. - public virtual TOptions GetOrAdd(string name, Func createOptions) + public virtual TOptions GetOrAdd(string? name, Func createOptions!!) { - if (createOptions == null) - { - throw new ArgumentNullException(nameof(createOptions)); - } - - name = name ?? Options.DefaultName; - Lazy value; + name ??= Options.DefaultName; + Lazy? value; #if NETSTANDARD2_1 value = _cache.GetOrAdd(name, static (name, createOptions) => new Lazy(createOptions), createOptions); @@ -56,9 +51,9 @@ public virtual TOptions GetOrAdd(string name, Func createOptions) /// The name of the options instance. /// The options instance. /// true if the options were retrieved; otherwise, false. - internal bool TryGetValue(string name, out TOptions options) + internal bool TryGetValue(string? name, [MaybeNullWhen(false)] out TOptions options) { - if (_cache.TryGetValue(name ?? Options.DefaultName, out Lazy lazy)) + if (_cache.TryGetValue(name ?? Options.DefaultName, out Lazy? lazy)) { options = lazy.Value; return true; @@ -74,13 +69,8 @@ internal bool TryGetValue(string name, out TOptions options) /// The name of the options instance. /// The options instance. /// Whether anything was added. - public virtual bool TryAdd(string name, TOptions options) + public virtual bool TryAdd(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return _cache.TryAdd(name ?? Options.DefaultName, new Lazy( #if !NETSTANDARD2_1 () => @@ -93,7 +83,7 @@ public virtual bool TryAdd(string name, TOptions options) /// /// The name of the options instance. /// Whether anything was removed. - public virtual bool TryRemove(string name) => + public virtual bool TryRemove(string? name) => _cache.TryRemove(name ?? Options.DefaultName, out _); } } diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsManager.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsManager.cs index 83fc0ecc8e9050..f5a74423c2f533 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsManager.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsManager.cs @@ -34,11 +34,11 @@ public OptionsManager(IOptionsFactory factory) /// /// Returns a configured instance with the given . /// - public virtual TOptions Get(string name) + public virtual TOptions Get(string? name) { name = name ?? Options.DefaultName; - if (!_cache.TryGetValue(name, out TOptions options)) + if (!_cache.TryGetValue(name, out TOptions? options)) { // Store the options in our instance cache. Avoid closure on fast path by storing state into scoped locals. IOptionsFactory localFactory = _factory; diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsMonitor.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsMonitor.cs index 2b7fbf00013f4f..d75bc70b1e51e0 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsMonitor.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsMonitor.cs @@ -20,7 +20,7 @@ public class OptionsMonitor<[DynamicallyAccessedMembers(Options.DynamicallyAcces private readonly IOptionsMonitorCache _cache; private readonly IOptionsFactory _factory; private readonly List _registrations = new List(); - internal event Action _onChange; + internal event Action? _onChange; /// /// Constructor. @@ -61,7 +61,7 @@ void RegisterSource(IOptionsChangeTokenSource source) } } - private void InvokeChanged(string name) + private void InvokeChanged(string? name) { name = name ?? Options.DefaultName; _cache.TryRemove(name); @@ -83,7 +83,7 @@ public TOptions CurrentValue /// /// Returns a configured instance with the given . /// - public virtual TOptions Get(string name) + public virtual TOptions Get(string? name) { name = name ?? Options.DefaultName; return _cache.GetOrAdd(name, () => _factory.Create(name)); diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsServiceCollectionExtensions.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsServiceCollectionExtensions.cs index a84cbe19e1fa6f..73e3c4396f915c 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsServiceCollectionExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsServiceCollectionExtensions.cs @@ -19,13 +19,8 @@ public static class OptionsServiceCollectionExtensions /// /// The to add the services to. /// The so that additional calls can be chained. - public static IServiceCollection AddOptions(this IServiceCollection services) + public static IServiceCollection AddOptions(this IServiceCollection services!!) { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptions<>), typeof(UnnamedOptionsManager<>))); services.TryAdd(ServiceDescriptor.Scoped(typeof(IOptionsSnapshot<>), typeof(OptionsManager<>))); services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptionsMonitor<>), typeof(OptionsMonitor<>))); @@ -54,19 +49,9 @@ public static IServiceCollection Configure(this IServiceCollection ser /// The name of the options instance. /// The action used to configure the options. /// The so that additional calls can be chained. - public static IServiceCollection Configure(this IServiceCollection services, string name, Action configureOptions) + public static IServiceCollection Configure(this IServiceCollection services!!, string? name, Action configureOptions!!) where TOptions : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - services.AddOptions(); services.AddSingleton>(new ConfigureNamedOptions(name, configureOptions)); return services; @@ -102,19 +87,9 @@ public static IServiceCollection PostConfigure(this IServiceCollection /// The name of the options instance. /// The action used to configure the options. /// The so that additional calls can be chained. - public static IServiceCollection PostConfigure(this IServiceCollection services, string name, Action configureOptions) + public static IServiceCollection PostConfigure(this IServiceCollection services!!, string? name, Action configureOptions!!) where TOptions : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - - if (configureOptions == null) - { - throw new ArgumentNullException(nameof(configureOptions)); - } - services.AddOptions(); services.AddSingleton>(new PostConfigureOptions(name, configureOptions)); return services; @@ -250,14 +225,9 @@ public static OptionsBuilder AddOptions(this IServiceCollect /// The to add the services to. /// The name of the options instance. /// The so that configure calls can be chained in it. - public static OptionsBuilder AddOptions(this IServiceCollection services, string name) + public static OptionsBuilder AddOptions(this IServiceCollection services!!, string? name) where TOptions : class { - if (services == null) - { - throw new ArgumentNullException(nameof(services)); - } - services.AddOptions(); return new OptionsBuilder(services, name); } diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsValidationException.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsValidationException.cs index 3c3e238240301a..f5b4bcf7959427 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsValidationException.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsValidationException.cs @@ -17,11 +17,11 @@ public class OptionsValidationException : Exception /// The name of the options instance that failed. /// The options type that failed. /// The validation failure messages. - public OptionsValidationException(string optionsName, Type optionsType, IEnumerable failureMessages) + public OptionsValidationException(string optionsName!!, Type optionsType!!, IEnumerable? failureMessages) { Failures = failureMessages ?? new List(); - OptionsType = optionsType ?? throw new ArgumentNullException(nameof(optionsType)); - OptionsName = optionsName ?? throw new ArgumentNullException(nameof(optionsName)); + OptionsType = optionsType; + OptionsName = optionsName; } /// diff --git a/src/libraries/Microsoft.Extensions.Options/src/OptionsWrapper.cs b/src/libraries/Microsoft.Extensions.Options/src/OptionsWrapper.cs index cdc295802aac1a..4de276d6de35b7 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/OptionsWrapper.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/OptionsWrapper.cs @@ -14,7 +14,7 @@ public class OptionsWrapper<[DynamicallyAccessedMembers(Options.DynamicallyAcces where TOptions : class { /// - /// Intializes the wrapper with the options instance to return. + /// Initializes the wrapper with the options instance to return. /// /// The options instance to return. public OptionsWrapper(TOptions options) diff --git a/src/libraries/Microsoft.Extensions.Options/src/PostConfigureOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/PostConfigureOptions.cs index 4ec0bbca3a906f..138220ac9e4049 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/PostConfigureOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/PostConfigureOptions.cs @@ -16,7 +16,7 @@ public class PostConfigureOptions : IPostConfigureOptions wh /// /// The name of the options. /// The action to register. - public PostConfigureOptions(string name, Action action) + public PostConfigureOptions(string? name, Action? action) { Name = name; Action = action; @@ -25,25 +25,20 @@ public PostConfigureOptions(string name, Action action) /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The initialization action. /// - public Action Action { get; } + public Action? Action { get; } /// /// Invokes the registered initialization if the matches. /// /// The name of the action to invoke. /// The options to use in initialization. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to initialize all named options. if (Name == null || name == Name) { @@ -67,7 +62,7 @@ public class PostConfigureOptions : IPostConfigureOptionsThe name of the options. /// A dependency. /// The action to register. - public PostConfigureOptions(string name, TDep dependency, Action action) + public PostConfigureOptions(string? name, TDep dependency, Action? action) { Name = name; Action = action; @@ -77,12 +72,12 @@ public PostConfigureOptions(string name, TDep dependency, Action /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The dependency. @@ -94,13 +89,8 @@ public PostConfigureOptions(string name, TDep dependency, Action /// /// The name of the options instance being configured. /// The options instance to configured. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -133,7 +123,7 @@ public class PostConfigureOptions : IPostConfigureOption /// A dependency. /// A second dependency. /// The action to register. - public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, Action action) + public PostConfigureOptions(string? name, TDep1 dependency, TDep2 dependency2, Action? action) { Name = name; Action = action; @@ -144,12 +134,12 @@ public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, Ac /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -166,13 +156,8 @@ public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, Ac /// /// The name of the options instance being configured. /// The options instance to configured. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -208,7 +193,7 @@ public class PostConfigureOptions : IPostConfigur /// A second dependency. /// A third dependency. /// The action to register. - public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action action) + public PostConfigureOptions(string? name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action? action) { Name = name; Action = action; @@ -220,12 +205,12 @@ public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, TD /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -247,13 +232,8 @@ public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, TD /// /// The name of the options instance being configured. /// The options instance to configured. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -292,7 +272,7 @@ public class PostConfigureOptions : IPostC /// A third dependency. /// A fourth dependency. /// The action to register. - public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action action) + public PostConfigureOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action? action) { Name = name; Action = action; @@ -305,12 +285,12 @@ public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, T /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -337,13 +317,8 @@ public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, T /// /// The name of the options instance being configured. /// The options instance to configured. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { @@ -385,7 +360,7 @@ public class PostConfigureOptions : /// A fourth dependency. /// A fifth dependency. /// The action to register. - public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action action) + public PostConfigureOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action? action) { Name = name; Action = action; @@ -399,12 +374,12 @@ public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, T /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The configuration action. /// - public Action Action { get; } + public Action? Action { get; } /// /// The first dependency. @@ -436,13 +411,8 @@ public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, T /// /// The name of the options instance being configured. /// The options instance to configured. - public virtual void PostConfigure(string name, TOptions options) + public virtual void PostConfigure(string? name, TOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - // Null name is used to configure all named options. if (Name == null || name == Name) { diff --git a/src/libraries/Microsoft.Extensions.Options/src/UnnamedOptionsManager.cs b/src/libraries/Microsoft.Extensions.Options/src/UnnamedOptionsManager.cs index 93dafb73f6bd79..27f6d6e92ac215 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/UnnamedOptionsManager.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/UnnamedOptionsManager.cs @@ -11,8 +11,8 @@ internal sealed class UnnamedOptionsManager<[DynamicallyAccessedMembers(Options. where TOptions : class { private readonly IOptionsFactory _factory; - private volatile object _syncObj; - private volatile TOptions _value; + private volatile object? _syncObj; + private volatile TOptions? _value; public UnnamedOptionsManager(IOptionsFactory factory) => _factory = factory; diff --git a/src/libraries/Microsoft.Extensions.Options/src/ValidateOptions.cs b/src/libraries/Microsoft.Extensions.Options/src/ValidateOptions.cs index b70b7832f05709..de083ed427d5d5 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/ValidateOptions.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/ValidateOptions.cs @@ -17,7 +17,7 @@ public class ValidateOptions : IValidateOptions where TOptio /// Options name. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, Func validation, string failureMessage) + public ValidateOptions(string? name, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -27,7 +27,7 @@ public ValidateOptions(string name, Func validation, string fail /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -45,12 +45,12 @@ public ValidateOptions(string name, Func validation, string fail /// The name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options)).Value) + if (Validation.Invoke(options)) { return ValidateOptionsResult.Success; } @@ -65,7 +65,7 @@ public ValidateOptionsResult Validate(string name, TOptions options) /// /// Implementation of /// - /// The options type to validate. + /// The options type to validate. /// Dependency type. public class ValidateOptions : IValidateOptions where TOptions : class { @@ -76,7 +76,7 @@ public class ValidateOptions : IValidateOptions where /// The dependency. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, TDep dependency, Func validation, string failureMessage) + public ValidateOptions(string? name, TDep dependency, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -87,7 +87,7 @@ public ValidateOptions(string name, TDep dependency, Func /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -110,12 +110,12 @@ public ValidateOptions(string name, TDep dependency, Func /// The name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options, Dependency)).Value) + if (Validation.Invoke(options, Dependency)) { return ValidateOptionsResult.Success; } @@ -130,7 +130,7 @@ public ValidateOptionsResult Validate(string name, TOptions options) /// /// Implementation of /// - /// The options type to validate. + /// The options type to validate. /// First dependency type. /// Second dependency type. public class ValidateOptions : IValidateOptions where TOptions : class @@ -143,7 +143,7 @@ public class ValidateOptions : IValidateOptionsThe second dependency. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, Func validation, string failureMessage) + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -155,7 +155,7 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, Func /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -183,12 +183,12 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, FuncThe name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options, Dependency1, Dependency2)).Value) + if (Validation.Invoke(options, Dependency1, Dependency2)) { return ValidateOptionsResult.Success; } @@ -203,7 +203,7 @@ public ValidateOptionsResult Validate(string name, TOptions options) /// /// Implementation of /// - /// The options type to validate. + /// The options type to validate. /// First dependency type. /// Second dependency type. /// Third dependency type. @@ -218,7 +218,7 @@ public class ValidateOptions : IValidateOptionsThe third dependency. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, Func validation, string failureMessage) + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -231,7 +231,7 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -264,12 +264,12 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// The name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options, Dependency1, Dependency2, Dependency3)).Value) + if (Validation.Invoke(options, Dependency1, Dependency2, Dependency3)) { return ValidateOptionsResult.Success; } @@ -284,7 +284,7 @@ public ValidateOptionsResult Validate(string name, TOptions options) /// /// Implementation of /// - /// The options type to validate. + /// The options type to validate. /// First dependency type. /// Second dependency type. /// Third dependency type. @@ -301,7 +301,7 @@ public class ValidateOptions : IValidateOp /// The fourth dependency. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Func validation, string failureMessage) + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -315,7 +315,7 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -353,12 +353,12 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// The name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4)).Value) + if (Validation.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4)) { return ValidateOptionsResult.Success; } @@ -373,7 +373,7 @@ public ValidateOptionsResult Validate(string name, TOptions options) /// /// Implementation of /// - /// The options type to validate. + /// The options type to validate. /// First dependency type. /// Second dependency type. /// Third dependency type. @@ -392,7 +392,7 @@ public class ValidateOptions : IVal /// The fifth dependency. /// Validation function. /// Validation failure message. - public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Func validation, string failureMessage) + public ValidateOptions(string? name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Func validation!!, string failureMessage) { Name = name; Validation = validation; @@ -407,7 +407,7 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// /// The options name. /// - public string Name { get; } + public string? Name { get; } /// /// The validation function. @@ -450,12 +450,12 @@ public ValidateOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 /// The name of the options instance being validated. /// The options instance. /// The result. - public ValidateOptionsResult Validate(string name, TOptions options) + public ValidateOptionsResult Validate(string? name, TOptions options) { // null name is used to configure all named options if (Name == null || name == Name) { - if ((Validation?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4, Dependency5)).Value) + if (Validation.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4, Dependency5)) { return ValidateOptionsResult.Success; } diff --git a/src/libraries/Microsoft.Extensions.Options/src/ValidateOptionsResult.cs b/src/libraries/Microsoft.Extensions.Options/src/ValidateOptionsResult.cs index d4c769cce43fab..763020891c88db 100644 --- a/src/libraries/Microsoft.Extensions.Options/src/ValidateOptionsResult.cs +++ b/src/libraries/Microsoft.Extensions.Options/src/ValidateOptionsResult.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.Extensions.Options { @@ -34,17 +35,19 @@ public class ValidateOptionsResult /// /// True if validation failed. /// + [MemberNotNullWhen(true, nameof(Failures))] + [MemberNotNullWhen(true, nameof(FailureMessage))] public bool Failed { get; protected set; } /// /// Used to describe why validation failed. /// - public string FailureMessage { get; protected set; } + public string? FailureMessage { get; protected set; } /// /// Full list of failures (can be multiple). /// - public IEnumerable Failures { get; protected set; } + public IEnumerable? Failures { get; protected set; } /// /// Returns a failure result. diff --git a/src/libraries/Microsoft.Extensions.Options/tests/Microsoft.Extensions.Options.Tests/OptionsValidationTests.cs b/src/libraries/Microsoft.Extensions.Options/tests/Microsoft.Extensions.Options.Tests/OptionsValidationTests.cs index 7b949750547e1b..88660384021050 100644 --- a/src/libraries/Microsoft.Extensions.Options/tests/Microsoft.Extensions.Options.Tests/OptionsValidationTests.cs +++ b/src/libraries/Microsoft.Extensions.Options/tests/Microsoft.Extensions.Options.Tests/OptionsValidationTests.cs @@ -1,6 +1,7 @@ // 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 Microsoft.Extensions.DependencyInjection; using Xunit; @@ -74,5 +75,19 @@ public void ValidationResultFailedOrSkipped() } } + [Fact] + public void ValidationCannotBeNull() + { + string validName = "Name"; + string validFailureMessage = "Something's wrong"; + object validDependency = new(); + + Assert.Throws(() => new ValidateOptions(validName, null, validFailureMessage)); + Assert.Throws(() => new ValidateOptions(validName, validDependency, null, validFailureMessage)); + Assert.Throws(() => new ValidateOptions(validName, validDependency, validDependency, null, validFailureMessage)); + Assert.Throws(() => new ValidateOptions(validName, validDependency, validDependency, validDependency, null, validFailureMessage)); + Assert.Throws(() => new ValidateOptions(validName, validDependency, validDependency, validDependency, validDependency, null, validFailureMessage)); + Assert.Throws(() => new ValidateOptions(validName, validDependency, validDependency, validDependency, validDependency, validDependency, null, validFailureMessage)); + } } } diff --git a/src/libraries/Microsoft.Extensions.Primitives/src/ChangeToken.cs b/src/libraries/Microsoft.Extensions.Primitives/src/ChangeToken.cs index d0ddc8b8143f3b..45a35ff3c0fffc 100644 --- a/src/libraries/Microsoft.Extensions.Primitives/src/ChangeToken.cs +++ b/src/libraries/Microsoft.Extensions.Primitives/src/ChangeToken.cs @@ -18,17 +18,8 @@ public static class ChangeToken /// Produces the change token. /// Action called when the token changes. /// - public static IDisposable OnChange(Func changeTokenProducer, Action changeTokenConsumer) + public static IDisposable OnChange(Func changeTokenProducer!!, Action changeTokenConsumer!!) { - if (changeTokenProducer == null) - { - throw new ArgumentNullException(nameof(changeTokenProducer)); - } - if (changeTokenConsumer == null) - { - throw new ArgumentNullException(nameof(changeTokenConsumer)); - } - return new ChangeTokenRegistration(changeTokenProducer, callback => callback(), changeTokenConsumer); } @@ -39,17 +30,8 @@ public static IDisposable OnChange(Func changeTokenProducer, Acti /// Action called when the token changes. /// state for the consumer. /// - public static IDisposable OnChange(Func changeTokenProducer, Action changeTokenConsumer, TState state) + public static IDisposable OnChange(Func changeTokenProducer!!, Action changeTokenConsumer!!, TState state) { - if (changeTokenProducer == null) - { - throw new ArgumentNullException(nameof(changeTokenProducer)); - } - if (changeTokenConsumer == null) - { - throw new ArgumentNullException(nameof(changeTokenConsumer)); - } - return new ChangeTokenRegistration(changeTokenProducer, changeTokenConsumer, state); } diff --git a/src/libraries/Microsoft.Extensions.Primitives/src/CompositeChangeToken.cs b/src/libraries/Microsoft.Extensions.Primitives/src/CompositeChangeToken.cs index 7df86773f7d728..070c7ad148f697 100644 --- a/src/libraries/Microsoft.Extensions.Primitives/src/CompositeChangeToken.cs +++ b/src/libraries/Microsoft.Extensions.Primitives/src/CompositeChangeToken.cs @@ -27,9 +27,9 @@ public class CompositeChangeToken : IChangeToken /// Creates a new instance of . /// /// The list of to compose. - public CompositeChangeToken(IReadOnlyList changeTokens) + public CompositeChangeToken(IReadOnlyList changeTokens!!) { - ChangeTokens = changeTokens ?? throw new ArgumentNullException(nameof(changeTokens)); + ChangeTokens = changeTokens; for (int i = 0; i < ChangeTokens.Count; i++) { if (ChangeTokens[i].ActiveChangeCallbacks) diff --git a/src/libraries/Microsoft.Win32.Registry.AccessControl/src/Microsoft/Win32/RegistryAclExtensions.cs b/src/libraries/Microsoft.Win32.Registry.AccessControl/src/Microsoft/Win32/RegistryAclExtensions.cs index ea3b3f88eb7481..094b6bf351d602 100644 --- a/src/libraries/Microsoft.Win32.Registry.AccessControl/src/Microsoft/Win32/RegistryAclExtensions.cs +++ b/src/libraries/Microsoft.Win32.Registry.AccessControl/src/Microsoft/Win32/RegistryAclExtensions.cs @@ -8,27 +8,18 @@ namespace Microsoft.Win32 { public static class RegistryAclExtensions { - public static RegistrySecurity GetAccessControl(this RegistryKey key) + public static RegistrySecurity GetAccessControl(this RegistryKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - return key.GetAccessControl(); } - public static RegistrySecurity GetAccessControl(this RegistryKey key, AccessControlSections includeSections) + public static RegistrySecurity GetAccessControl(this RegistryKey key!!, AccessControlSections includeSections) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - return key.GetAccessControl(includeSections); } - public static void SetAccessControl(this RegistryKey key, RegistrySecurity registrySecurity) + public static void SetAccessControl(this RegistryKey key!!, RegistrySecurity registrySecurity) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - key.SetAccessControl(registrySecurity); } } diff --git a/src/libraries/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj b/src/libraries/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj index 882394c96aac24..d1308100580327 100644 --- a/src/libraries/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj +++ b/src/libraries/Microsoft.Win32.Registry/src/Microsoft.Win32.Registry.csproj @@ -11,6 +11,8 @@ $(NoWarn);CA1823 + - private static RegistryKey GetBaseKeyFromKeyName(string keyName, out string subKeyName) + private static RegistryKey GetBaseKeyFromKeyName(string keyName!!, out string subKeyName) { - if (keyName == null) - { - throw new ArgumentNullException(nameof(keyName)); - } - int i = keyName.IndexOf('\\'); int length = i != -1 ? i : keyName.Length; diff --git a/src/libraries/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.cs b/src/libraries/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.cs index c82feafee9f0c6..49d2c2f3a7d973 100644 --- a/src/libraries/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.cs +++ b/src/libraries/Microsoft.Win32.Registry/src/Microsoft/Win32/RegistryKey.cs @@ -323,12 +323,8 @@ public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey, string machineNam return OpenRemoteBaseKey(hKey, machineName, RegistryView.Default); } - public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey, string machineName, RegistryView view) + public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey, string machineName!!, RegistryView view) { - if (machineName == null) - { - throw new ArgumentNullException(nameof(machineName)); - } ValidateKeyView(view); return OpenRemoteBaseKeyCore(hKey, machineName, view); @@ -405,10 +401,7 @@ public RegistrySecurity GetAccessControl(AccessControlSections includeSections) public void SetAccessControl(RegistrySecurity registrySecurity) { EnsureWriteable(); - if (registrySecurity == null) - { - throw new ArgumentNullException(nameof(registrySecurity)); - } + ArgumentNullException.ThrowIfNull(registrySecurity); registrySecurity.Persist(Handle, Name); } @@ -447,9 +440,8 @@ public static RegistryKey FromHandle(SafeRegistryHandle handle) return FromHandle(handle, RegistryView.Default); } - public static RegistryKey FromHandle(SafeRegistryHandle handle, RegistryView view) + public static RegistryKey FromHandle(SafeRegistryHandle handle!!, RegistryView view) { - if (handle == null) throw new ArgumentNullException(nameof(handle)); ValidateKeyView(view); return new RegistryKey(handle, writable: true, view: view); @@ -557,13 +549,8 @@ public void SetValue(string? name, object value) SetValue(name, value, RegistryValueKind.Unknown); } - public void SetValue(string? name, object value, RegistryValueKind valueKind) + public void SetValue(string? name, object value!!, RegistryValueKind valueKind) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (name != null && name.Length > MaxValueLength) { throw new ArgumentException(SR.Arg_RegValStrLenBug, nameof(name)); @@ -721,13 +708,8 @@ private RegistryKeyPermissionCheck GetSubKeyPermissionCheck(bool subkeyWritable) } } - private static void ValidateKeyName(string name) + private static void ValidateKeyName(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - int nextSlash = name.IndexOf('\\'); int current = 0; while (nextSlash >= 0) diff --git a/src/libraries/Microsoft.Win32.Registry/tests/Helpers.cs b/src/libraries/Microsoft.Win32.Registry/tests/Helpers.cs index 5f3ad44a10586c..ee86aa66a2bc27 100644 --- a/src/libraries/Microsoft.Win32.Registry/tests/Helpers.cs +++ b/src/libraries/Microsoft.Win32.Registry/tests/Helpers.cs @@ -7,10 +7,10 @@ namespace Microsoft.Win32.RegistryTests { - internal static class Helpers + internal static partial class Helpers { - [DllImport(Interop.Libraries.Advapi32, CharSet = CharSet.Unicode, EntryPoint = "RegSetValueW", SetLastError = true)] - private static extern int RegSetValue(SafeRegistryHandle handle, string value, int regType, string sb, int sizeIgnored); + [GeneratedDllImport(Interop.Libraries.Advapi32, CharSet = CharSet.Unicode, EntryPoint = "RegSetValueW", SetLastError = true)] + private static partial int RegSetValue(SafeRegistryHandle handle, string value, int regType, string sb, int sizeIgnored); internal static bool SetDefaultValue(this RegistryKey key, string value) { @@ -18,8 +18,8 @@ internal static bool SetDefaultValue(this RegistryKey key, string value) return RegSetValue(key.Handle, null, REG_SZ, value, 0) == 0; } - [DllImport(Interop.Libraries.Advapi32, CharSet = CharSet.Unicode, EntryPoint = "RegQueryValueExW", SetLastError = true)] - private static extern int RegQueryValueEx(SafeRegistryHandle handle, string valueName, int[] reserved, IntPtr regType, [Out] byte[] value, ref int size); + [GeneratedDllImport(Interop.Libraries.Advapi32, CharSet = CharSet.Unicode, EntryPoint = "RegQueryValueExW", SetLastError = true)] + private static partial int RegQueryValueEx(SafeRegistryHandle handle, string valueName, int[] reserved, IntPtr regType, byte[] value, ref int size); internal static bool IsDefaultValueSet(this RegistryKey key) { @@ -29,7 +29,7 @@ internal static bool IsDefaultValueSet(this RegistryKey key) return RegQueryValueEx(key.Handle, null, null, IntPtr.Zero, b, ref size) != ERROR_FILE_NOT_FOUND; } - [DllImport(Interop.Libraries.Kernel32, CharSet = CharSet.Unicode, SetLastError = true)] - internal static extern bool SetEnvironmentVariable(string lpName, string lpValue); + [GeneratedDllImport(Interop.Libraries.Kernel32, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial bool SetEnvironmentVariable(string lpName, string lpValue); } } diff --git a/src/libraries/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj b/src/libraries/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj index 97452ace1fcdc5..6ec4e027b6e8b0 100644 --- a/src/libraries/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj +++ b/src/libraries/Microsoft.Win32.Registry/tests/Microsoft.Win32.Registry.Tests.csproj @@ -6,6 +6,8 @@ true + - \ No newline at end of file + diff --git a/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft.Win32.SystemEvents.csproj b/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft.Win32.SystemEvents.csproj index 0ccd62c3f8c3a0..86e6af7fdab5b5 100644 --- a/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft.Win32.SystemEvents.csproj +++ b/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft.Win32.SystemEvents.csproj @@ -120,6 +120,9 @@ Microsoft.Win32.SystemEvents + diff --git a/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft/Win32/SystemEvents.cs b/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft/Win32/SystemEvents.cs index 2cee04edc073d0..c3f9bd89c5a3fe 100644 --- a/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft/Win32/SystemEvents.cs +++ b/src/libraries/Microsoft.Win32.SystemEvents/src/Microsoft/Win32/SystemEvents.cs @@ -393,8 +393,9 @@ public static IntPtr CreateTimer(int interval) } EnsureSystemEvents(requireHandle: true); - IntPtr timerId = Interop.User32.SendMessageW(new HandleRef(s_systemEvents, s_systemEvents!._windowHandle), + IntPtr timerId = Interop.User32.SendMessageW(s_systemEvents!._windowHandle, Interop.User32.WM_CREATETIMER, (IntPtr)interval, IntPtr.Zero); + GC.KeepAlive(s_systemEvents); if (timerId == IntPtr.Zero) { @@ -409,7 +410,8 @@ private void Dispose() { if (s_registeredSessionNotification) { - Interop.Wtsapi32.WTSUnRegisterSessionNotification(new HandleRef(s_systemEvents, s_systemEvents!._windowHandle)); + Interop.Wtsapi32.WTSUnRegisterSessionNotification(s_systemEvents!._windowHandle); + GC.KeepAlive(s_systemEvents); } IntPtr handle = _windowHandle; @@ -507,7 +509,8 @@ private static void EnsureRegisteredSessionNotification() if (retval != IntPtr.Zero) { - Interop.Wtsapi32.WTSRegisterSessionNotification(new HandleRef(s_systemEvents, s_systemEvents!._windowHandle), Interop.Wtsapi32.NOTIFY_FOR_THIS_SESSION); + Interop.Wtsapi32.WTSRegisterSessionNotification(s_systemEvents!._windowHandle, Interop.Wtsapi32.NOTIFY_FOR_THIS_SESSION); + GC.KeepAlive(s_systemEvents); s_registeredSessionNotification = true; Interop.Kernel32.FreeLibrary(retval); } @@ -752,9 +755,13 @@ public static void InvokeOnEventsThread(Delegate method) EnsureSystemEvents(requireHandle: true); #if DEBUG - int pid; - int thread = Interop.User32.GetWindowThreadProcessId(new HandleRef(s_systemEvents, s_systemEvents!._windowHandle), out pid); - Debug.Assert(s_windowThread == null || thread != Interop.Kernel32.GetCurrentThreadId(), "Don't call MarshaledInvoke on the system events thread"); + unsafe + { + int pid; + int thread = Interop.User32.GetWindowThreadProcessId(s_systemEvents!._windowHandle, &pid); + GC.KeepAlive(s_systemEvents); + Debug.Assert(s_windowThread == null || thread != Interop.Kernel32.GetCurrentThreadId(), "Don't call MarshaledInvoke on the system events thread"); + } #endif if (s_threadCallbackList == null) @@ -776,7 +783,8 @@ public static void InvokeOnEventsThread(Delegate method) s_threadCallbackList.Enqueue(method); } - Interop.User32.PostMessageW(new HandleRef(s_systemEvents, s_systemEvents!._windowHandle), s_threadCallbackMessage, IntPtr.Zero, IntPtr.Zero); + Interop.User32.PostMessageW(s_systemEvents!._windowHandle, s_threadCallbackMessage, IntPtr.Zero, IntPtr.Zero); + GC.KeepAlive(s_systemEvents); } /// @@ -787,8 +795,9 @@ public static void KillTimer(IntPtr timerId) EnsureSystemEvents(requireHandle: true); if (s_systemEvents!._windowHandle != IntPtr.Zero) { - int res = (int)Interop.User32.SendMessageW(new HandleRef(s_systemEvents, s_systemEvents._windowHandle), + int res = (int)Interop.User32.SendMessageW(s_systemEvents._windowHandle, Interop.User32.WM_KILLTIMER, timerId, IntPtr.Zero); + GC.KeepAlive(s_systemEvents); if (res == 0) throw new ExternalException(SR.ErrorKillTimer); @@ -1080,18 +1089,22 @@ private static void Shutdown() if (s_windowThread != null) { #if DEBUG - int pid; - int thread = Interop.User32.GetWindowThreadProcessId(new HandleRef(s_systemEvents, s_systemEvents._windowHandle), out pid); - Debug.Assert(thread != Interop.Kernel32.GetCurrentThreadId(), "Don't call Shutdown on the system events thread"); -#endif + unsafe + { + int pid; + int thread = Interop.User32.GetWindowThreadProcessId(s_systemEvents._windowHandle, &pid); + Debug.Assert(thread != Interop.Kernel32.GetCurrentThreadId(), "Don't call Shutdown on the system events thread"); + } +#endif // The handle could be valid, Zero or invalid depending on the state of the thread // that is processing the messages. We optimistically expect it to be valid to // notify the thread to shutdown. The Zero or invalid values should be present // only when the thread is already shutting down due to external factors. if (s_systemEvents._windowHandle != IntPtr.Zero) { - Interop.User32.PostMessageW(new HandleRef(s_systemEvents, s_systemEvents._windowHandle), Interop.User32.WM_QUIT, IntPtr.Zero, IntPtr.Zero); + Interop.User32.PostMessageW(s_systemEvents._windowHandle, Interop.User32.WM_QUIT, IntPtr.Zero, IntPtr.Zero); + GC.KeepAlive(s_systemEvents); } s_windowThread.Join(); diff --git a/src/libraries/Microsoft.XmlSerializer.Generator/src/Sgen.cs b/src/libraries/Microsoft.XmlSerializer.Generator/src/Sgen.cs index e62a31e4d28c6d..1dc2afa7ab821d 100644 --- a/src/libraries/Microsoft.XmlSerializer.Generator/src/Sgen.cs +++ b/src/libraries/Microsoft.XmlSerializer.Generator/src/Sgen.cs @@ -545,12 +545,8 @@ private static string GetXmlSerializerAssemblyName(Type type) return GetXmlSerializerAssemblyName(type, null); } - private static string GetXmlSerializerAssemblyName(Type type, string defaultNamespace) + private static string GetXmlSerializerAssemblyName(Type type!!, string defaultNamespace) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return GetTempAssemblyName(type.Assembly.GetName(), defaultNamespace); } diff --git a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeGenerator.cs b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeGenerator.cs index ef64456aa2646f..cf872800a7bd96 100644 --- a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeGenerator.cs +++ b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeGenerator.cs @@ -516,13 +516,8 @@ private void GenerateNamespace(CodeNamespace e) GenerateNamespaceEnd(e); } - private void GenerateStatement(CodeStatement e) + private void GenerateStatement(CodeStatement e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.StartDirectives.Count > 0) { GenerateDirectives(e.StartDirectives); @@ -2680,13 +2675,8 @@ public void ValidateIdentifier(string value) } } - public string CreateValidIdentifier(string name) + public string CreateValidIdentifier(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (CSharpHelpers.IsPrefixTwoUnderscore(name)) { name = "_" + name; @@ -2700,13 +2690,8 @@ public string CreateValidIdentifier(string name) return name; } - public string CreateEscapedIdentifier(string name) + public string CreateEscapedIdentifier(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - return CSharpHelpers.CreateEscapedIdentifier(name); } @@ -2887,13 +2872,8 @@ private void OutputStartingBrace() } } - CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options, CodeCompileUnit e) + CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options!!, CodeCompileUnit e) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromDom(options, e); @@ -2904,13 +2884,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options, } } - CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options, string fileName) + CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options!!, string fileName) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromFile(options, fileName); @@ -2921,13 +2896,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options } } - CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters options, string source) + CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters options!!, string source) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromSource(options, source); @@ -2938,13 +2908,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters optio } } - CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, string[] sources) + CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options!!, string[] sources) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromSourceBatch(options, sources); @@ -2955,17 +2920,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters } } - CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options, string[] fileNames) + CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options!!, string[] fileNames!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (fileNames == null) - { - throw new ArgumentNullException(nameof(fileNames)); - } - try { // Try opening the files to make sure they exists. This will throw an exception @@ -2983,13 +2939,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters op } } - CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea) + CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options!!, CodeCompileUnit[] ea) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromDomBatch(options, ea); @@ -3000,28 +2951,14 @@ CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters opt } } - private CompilerResults FromDom(CompilerParameters options, CodeCompileUnit e) + private CompilerResults FromDom(CompilerParameters options!!, CodeCompileUnit e) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return FromDomBatch(options, new CodeCompileUnit[1] { e }); } - private CompilerResults FromFile(CompilerParameters options, string fileName) + private CompilerResults FromFile(CompilerParameters options!!, string fileName!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (fileName == null) - { - throw new ArgumentNullException(nameof(fileName)); - } - // Try opening the file to make sure it exists. This will throw an exception // if it doesn't File.OpenRead(fileName).Dispose(); @@ -3029,27 +2966,13 @@ private CompilerResults FromFile(CompilerParameters options, string fileName) return FromFileBatch(options, new string[1] { fileName }); } - private CompilerResults FromSource(CompilerParameters options, string source) + private CompilerResults FromSource(CompilerParameters options!!, string source) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return FromSourceBatch(options, new string[1] { source }); } - private CompilerResults FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea) + private CompilerResults FromDomBatch(CompilerParameters options!!, CodeCompileUnit[] ea!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (ea == null) - { - throw new ArgumentNullException(nameof(ea)); - } - string[] filenames = new string[ea.Length]; for (int i = 0; i < ea.Length; i++) @@ -3086,17 +3009,8 @@ private void ResolveReferencedAssemblies(CompilerParameters options, CodeCompile } } - private CompilerResults FromSourceBatch(CompilerParameters options, string[] sources) + private CompilerResults FromSourceBatch(CompilerParameters options!!, string[] sources!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (sources == null) - { - throw new ArgumentNullException(nameof(sources)); - } - string[] filenames = new string[sources.Length]; for (int i = 0; i < sources.Length; i++) diff --git a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeProvider.cs b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeProvider.cs index 04677068e1bac3..4fabb5ce695162 100644 --- a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeProvider.cs +++ b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpCodeProvider.cs @@ -20,13 +20,8 @@ public CSharpCodeProvider() _generator = new CSharpCodeGenerator(); } - public CSharpCodeProvider(IDictionary providerOptions) + public CSharpCodeProvider(IDictionary providerOptions!!) { - if (providerOptions == null) - { - throw new ArgumentNullException(nameof(providerOptions)); - } - _generator = new CSharpCodeGenerator(providerOptions); } diff --git a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpModifierAttributeConverter.cs b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpModifierAttributeConverter.cs index 23371016fa05b6..b1837dc2c7b68c 100644 --- a/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpModifierAttributeConverter.cs +++ b/src/libraries/System.CodeDom/src/Microsoft/CSharp/CSharpModifierAttributeConverter.cs @@ -34,13 +34,8 @@ public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo c return DefaultValue; } - public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { object[] modifiers = Values; diff --git a/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBCodeProvider.cs b/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBCodeProvider.cs index 0417b41b668d18..7f67555914f70a 100644 --- a/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBCodeProvider.cs +++ b/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBCodeProvider.cs @@ -20,13 +20,8 @@ public VBCodeProvider() _generator = new VBCodeGenerator(); } - public VBCodeProvider(IDictionary providerOptions) + public VBCodeProvider(IDictionary providerOptions!!) { - if (providerOptions == null) - { - throw new ArgumentNullException(nameof(providerOptions)); - } - _generator = new VBCodeGenerator(providerOptions); } diff --git a/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBModiferAttributeConverter.cs b/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBModiferAttributeConverter.cs index affa1d3c66c391..c4742449c99234 100644 --- a/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBModiferAttributeConverter.cs +++ b/src/libraries/System.CodeDom/src/Microsoft/VisualBasic/VBModiferAttributeConverter.cs @@ -34,13 +34,8 @@ public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo c return DefaultValue; } - public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { object[] modifiers = Values; diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeArgumentCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeArgumentCollection.cs index 5db624817188ac..c8f40a7d1f2732 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeArgumentCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeArgumentCollection.cs @@ -27,26 +27,16 @@ public CodeAttributeArgument this[int index] public int Add(CodeAttributeArgument value) => List.Add(value); - public void AddRange(CodeAttributeArgument[] value) + public void AddRange(CodeAttributeArgument[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeAttributeArgumentCollection value) + public void AddRange(CodeAttributeArgumentCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeDeclarationCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeDeclarationCollection.cs index 942d26368d254e..32fe51fbef9377 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeDeclarationCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeAttributeDeclarationCollection.cs @@ -29,26 +29,16 @@ public CodeAttributeDeclaration this[int index] public int Add(CodeAttributeDeclaration value) => List.Add(value); - public void AddRange(CodeAttributeDeclaration[] value) + public void AddRange(CodeAttributeDeclaration[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeAttributeDeclarationCollection value) + public void AddRange(CodeAttributeDeclarationCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeCatchClauseCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeCatchClauseCollection.cs index a825620e8ec8e9..0217b111b0ff84 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeCatchClauseCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeCatchClauseCollection.cs @@ -27,26 +27,16 @@ public CodeCatchClause this[int index] public int Add(CodeCatchClause value) => List.Add(value); - public void AddRange(CodeCatchClause[] value) + public void AddRange(CodeCatchClause[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeCatchClauseCollection value) + public void AddRange(CodeCatchClauseCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeCommentStatementCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeCommentStatementCollection.cs index 8a8dc513818405..7ad005f6659a5d 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeCommentStatementCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeCommentStatementCollection.cs @@ -27,26 +27,16 @@ public CodeCommentStatement this[int index] public int Add(CodeCommentStatement value) => List.Add(value); - public void AddRange(CodeCommentStatement[] value) + public void AddRange(CodeCommentStatement[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeCommentStatementCollection value) + public void AddRange(CodeCommentStatementCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeDirectiveCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeDirectiveCollection.cs index 797d978473e9ce..522148078a17e0 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeDirectiveCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeDirectiveCollection.cs @@ -27,26 +27,16 @@ public CodeDirective this[int index] public int Add(CodeDirective value) => List.Add(value); - public void AddRange(CodeDirective[] value) + public void AddRange(CodeDirective[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeDirectiveCollection value) + public void AddRange(CodeDirectiveCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeExpressionCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeExpressionCollection.cs index 7b9c731cf69240..62a8a77c1ca742 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeExpressionCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeExpressionCollection.cs @@ -27,26 +27,16 @@ public CodeExpression this[int index] public int Add(CodeExpression value) => List.Add(value); - public void AddRange(CodeExpression[] value) + public void AddRange(CodeExpression[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeExpressionCollection value) + public void AddRange(CodeExpressionCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceCollection.cs index ccd0bffe19d2d5..dc8163b3c97b60 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceCollection.cs @@ -27,26 +27,16 @@ public CodeNamespace this[int index] public int Add(CodeNamespace value) => List.Add(value); - public void AddRange(CodeNamespace[] value) + public void AddRange(CodeNamespace[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeNamespaceCollection value) + public void AddRange(CodeNamespaceCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceImportCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceImportCollection.cs index bb63f182dd5df0..c86444e3cb0333 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceImportCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeNamespaceImportCollection.cs @@ -36,13 +36,8 @@ public void Add(CodeNamespaceImport value) } } - public void AddRange(CodeNamespaceImport[] value) + public void AddRange(CodeNamespaceImport[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - foreach (CodeNamespaceImport c in value) { Add(c); diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeParameterDeclarationExpressionCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeParameterDeclarationExpressionCollection.cs index d9ff397330c3cc..933fea75089d06 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeParameterDeclarationExpressionCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeParameterDeclarationExpressionCollection.cs @@ -27,26 +27,16 @@ public CodeParameterDeclarationExpression this[int index] public int Add(CodeParameterDeclarationExpression value) => List.Add(value); - public void AddRange(CodeParameterDeclarationExpression[] value) + public void AddRange(CodeParameterDeclarationExpression[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeParameterDeclarationExpressionCollection value) + public void AddRange(CodeParameterDeclarationExpressionCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeStatementCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeStatementCollection.cs index 5999b37c7ee5ee..c0ecd53ab960b8 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeStatementCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeStatementCollection.cs @@ -29,26 +29,16 @@ public CodeStatement this[int index] public int Add(CodeExpression value) => Add(new CodeExpressionStatement(value)); - public void AddRange(CodeStatement[] value) + public void AddRange(CodeStatement[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeStatementCollection value) + public void AddRange(CodeStatementCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeDeclarationCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeDeclarationCollection.cs index 242506fb267a3b..19101e49e608ed 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeDeclarationCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeDeclarationCollection.cs @@ -27,26 +27,16 @@ public CodeTypeDeclaration this[int index] public int Add(CodeTypeDeclaration value) => List.Add(value); - public void AddRange(CodeTypeDeclaration[] value) + public void AddRange(CodeTypeDeclaration[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeTypeDeclarationCollection value) + public void AddRange(CodeTypeDeclarationCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeMemberCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeMemberCollection.cs index caa36a5130bf2f..32683b4379c224 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeMemberCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeMemberCollection.cs @@ -27,26 +27,16 @@ public CodeTypeMember this[int index] public int Add(CodeTypeMember value) => List.Add(value); - public void AddRange(CodeTypeMember[] value) + public void AddRange(CodeTypeMember[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeTypeMemberCollection value) + public void AddRange(CodeTypeMemberCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeParameterCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeParameterCollection.cs index 8b00ec1c267f5e..67e6c51160be39 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeParameterCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/CodeTypeParameterCollection.cs @@ -29,26 +29,16 @@ public CodeTypeParameter this[int index] public void Add(string value) => Add(new CodeTypeParameter(value)); - public void AddRange(CodeTypeParameter[] value) + public void AddRange(CodeTypeParameter[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CodeTypeParameterCollection value) + public void AddRange(CodeTypeParameterCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeCompiler.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeCompiler.cs index 9e24a113117c8a..25ee9eefcb1b25 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeCompiler.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeCompiler.cs @@ -8,13 +8,8 @@ namespace System.CodeDom.Compiler { public abstract class CodeCompiler : CodeGenerator, ICodeCompiler { - CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options, CodeCompileUnit e) + CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options!!, CodeCompileUnit e) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromDom(options, e); @@ -25,13 +20,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options, } } - CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options, string fileName) + CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options!!, string fileName) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromFile(options, fileName); @@ -42,13 +32,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromFile(CompilerParameters options } } - CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters options, string source) + CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters options!!, string source) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromSource(options, source); @@ -59,13 +44,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromSource(CompilerParameters optio } } - CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, string[] sources) + CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options!!, string[] sources) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromSourceBatch(options, sources); @@ -76,17 +56,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters } } - CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options, string[] fileNames) + CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options!!, string[] fileNames!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (fileNames == null) - { - throw new ArgumentNullException(nameof(fileNames)); - } - try { // Try opening the files to make sure they exists. This will throw an exception if it doesn't @@ -103,13 +74,8 @@ CompilerResults ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters op } } - CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea) + CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options!!, CodeCompileUnit[] ea) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - try { return FromDomBatch(options, ea); @@ -124,26 +90,13 @@ CompilerResults ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters opt protected abstract string CompilerName { get; } - protected virtual CompilerResults FromDom(CompilerParameters options, CodeCompileUnit e) + protected virtual CompilerResults FromDom(CompilerParameters options!!, CodeCompileUnit e) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return FromDomBatch(options, new CodeCompileUnit[1] { e }); } - protected virtual CompilerResults FromFile(CompilerParameters options, string fileName) + protected virtual CompilerResults FromFile(CompilerParameters options!!, string fileName!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (fileName == null) - { - throw new ArgumentNullException(nameof(fileName)); - } // Try opening the file to make sure it exists. This will throw an exception if it doesn't File.OpenRead(fileName).Dispose(); @@ -151,27 +104,13 @@ protected virtual CompilerResults FromFile(CompilerParameters options, string fi return FromFileBatch(options, new string[1] { fileName }); } - protected virtual CompilerResults FromSource(CompilerParameters options, string source) + protected virtual CompilerResults FromSource(CompilerParameters options!!, string source) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return FromSourceBatch(options, new string[1] { source }); } - protected virtual CompilerResults FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea) + protected virtual CompilerResults FromDomBatch(CompilerParameters options!!, CodeCompileUnit[] ea!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (ea == null) - { - throw new ArgumentNullException(nameof(ea)); - } - var filenames = new string[ea.Length]; for (int i = 0; i < ea.Length; i++) @@ -208,17 +147,8 @@ private void ResolveReferencedAssemblies(CompilerParameters options, CodeCompile } } - protected virtual CompilerResults FromFileBatch(CompilerParameters options, string[] fileNames) + protected virtual CompilerResults FromFileBatch(CompilerParameters options!!, string[] fileNames!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (fileNames == null) - { - throw new ArgumentNullException(nameof(fileNames)); - } - throw new PlatformNotSupportedException(); } @@ -240,17 +170,8 @@ protected virtual string GetResponseFileCmdArgs(CompilerParameters options, stri return "@\"" + responseFileName + "\""; } - protected virtual CompilerResults FromSourceBatch(CompilerParameters options, string[] sources) + protected virtual CompilerResults FromSourceBatch(CompilerParameters options!!, string[] sources!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - if (sources == null) - { - throw new ArgumentNullException(nameof(sources)); - } - var filenames = new string[sources.Length]; for (int i = 0; i < sources.Length; i++) diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeDomProvider.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeDomProvider.cs index 72284ad5ad6b70..6e984975c8c690 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeDomProvider.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeDomProvider.cs @@ -86,25 +86,15 @@ public static CompilerInfo GetCompilerInfo(string language) return compilerInfo; } - private static CompilerInfo GetCompilerInfoForLanguageNoThrow(string language) + private static CompilerInfo GetCompilerInfoForLanguageNoThrow(string language!!) { - if (language == null) - { - throw new ArgumentNullException(nameof(language)); - } - CompilerInfo value; s_compilerLanguages.TryGetValue(language.Trim(), out value); return value; } - private static CompilerInfo GetCompilerInfoForExtensionNoThrow(string extension) + private static CompilerInfo GetCompilerInfoForExtensionNoThrow(string extension!!) { - if (extension == null) - { - throw new ArgumentNullException(nameof(extension)); - } - CompilerInfo value; s_compilerExtensions.TryGetValue(extension.Trim(), out value); return value; diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeGenerator.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeGenerator.cs index 60c0117280cd15..b7b3b24af68288 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeGenerator.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeGenerator.cs @@ -232,13 +232,8 @@ protected void GenerateNamespaces(CodeCompileUnit e) } } - protected void GenerateTypes(CodeNamespace e) + protected void GenerateTypes(CodeNamespace e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - foreach (CodeTypeDeclaration c in e.Types) { if (_options.BlankLinesBetweenMembers) @@ -398,12 +393,8 @@ void ICodeGenerator.GenerateCodeFromStatement(CodeStatement e, TextWriter w, Cod } } - public virtual void GenerateCodeFromMember(CodeTypeMember member, TextWriter writer, CodeGeneratorOptions options) + public virtual void GenerateCodeFromMember(CodeTypeMember member!!, TextWriter writer, CodeGeneratorOptions options) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } if (_output != null) { throw new InvalidOperationException(SR.CodeGenReentrance); @@ -710,13 +701,8 @@ private void GenerateSnippetMembers(CodeTypeDeclaration e) } } - protected virtual void GenerateSnippetCompileUnit(CodeSnippetCompileUnit e) + protected virtual void GenerateSnippetCompileUnit(CodeSnippetCompileUnit e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - GenerateDirectives(e.StartDirectives); if (e.LinePragma != null) @@ -800,13 +786,8 @@ protected virtual void GenerateCompileUnit(CodeCompileUnit e) GenerateCompileUnitEnd(e); } - protected virtual void GenerateNamespace(CodeNamespace e) + protected virtual void GenerateNamespace(CodeNamespace e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - GenerateCommentStatements(e.Comments); GenerateNamespaceStart(e); @@ -817,13 +798,8 @@ protected virtual void GenerateNamespace(CodeNamespace e) GenerateNamespaceEnd(e); } - protected void GenerateNamespaceImports(CodeNamespace e) + protected void GenerateNamespaceImports(CodeNamespace e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - foreach (CodeNamespaceImport imp in e.Imports) { if (imp.LinePragma != null) @@ -874,13 +850,8 @@ private void GenerateProperties(CodeTypeDeclaration e) } } - protected void GenerateStatement(CodeStatement e) + protected void GenerateStatement(CodeStatement e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.StartDirectives.Count > 0) { GenerateDirectives(e.StartDirectives); @@ -971,25 +942,16 @@ protected void GenerateStatement(CodeStatement e) } } - protected void GenerateStatements(CodeStatementCollection stmts) + protected void GenerateStatements(CodeStatementCollection stmts!!) { - if (stmts == null) - { - throw new ArgumentNullException(nameof(stmts)); - } - foreach (CodeStatement stmt in stmts) { ((ICodeGenerator)this).GenerateCodeFromStatement(stmt, _output.InnerWriter, _options); } } - protected virtual void OutputAttributeDeclarations(CodeAttributeDeclarationCollection attributes) + protected virtual void OutputAttributeDeclarations(CodeAttributeDeclarationCollection attributes!!) { - if (attributes == null) - { - throw new ArgumentNullException(nameof(attributes)); - } if (attributes.Count == 0) { return; @@ -1031,13 +993,8 @@ protected virtual void OutputAttributeDeclarations(CodeAttributeDeclarationColle GenerateAttributeDeclarationsEnd(attributes); } - protected virtual void OutputAttributeArgument(CodeAttributeArgument arg) + protected virtual void OutputAttributeArgument(CodeAttributeArgument arg!!) { - if (arg == null) - { - throw new ArgumentNullException(nameof(arg)); - } - if (!string.IsNullOrEmpty(arg.Name)) { OutputIdentifier(arg.Name); @@ -1287,13 +1244,8 @@ protected virtual void OutputOperator(CodeBinaryOperatorType op) } } - protected virtual void OutputParameters(CodeParameterDeclarationExpressionCollection parameters) + protected virtual void OutputParameters(CodeParameterDeclarationExpressionCollection parameters!!) { - if (parameters == null) - { - throw new ArgumentNullException(nameof(parameters)); - } - bool first = true; bool multiline = parameters.Count > ParameterMultilineThreshold; if (multiline) @@ -1325,13 +1277,8 @@ protected virtual void OutputParameters(CodeParameterDeclarationExpressionCollec protected abstract void GenerateArrayCreateExpression(CodeArrayCreateExpression e); protected abstract void GenerateBaseReferenceExpression(CodeBaseReferenceExpression e); - protected virtual void GenerateBinaryOperatorExpression(CodeBinaryOperatorExpression e) + protected virtual void GenerateBinaryOperatorExpression(CodeBinaryOperatorExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - bool indentedExpression = false; Output.Write('('); @@ -1381,13 +1328,8 @@ protected virtual void GenerateBinaryOperatorExpression(CodeBinaryOperatorExpres protected abstract void GenerateDelegateInvokeExpression(CodeDelegateInvokeExpression e); protected abstract void GenerateObjectCreateExpression(CodeObjectCreateExpression e); - protected virtual void GenerateParameterDeclarationExpression(CodeParameterDeclarationExpression e) + protected virtual void GenerateParameterDeclarationExpression(CodeParameterDeclarationExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.CustomAttributes.Count > 0) { OutputAttributeDeclarations(e.CustomAttributes); @@ -1398,24 +1340,14 @@ protected virtual void GenerateParameterDeclarationExpression(CodeParameterDecla OutputTypeNamePair(e.Type, e.Name); } - protected virtual void GenerateDirectionExpression(CodeDirectionExpression e) + protected virtual void GenerateDirectionExpression(CodeDirectionExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - OutputDirection(e.Direction); GenerateExpression(e.Expression); } - protected virtual void GeneratePrimitiveExpression(CodePrimitiveExpression e) + protected virtual void GeneratePrimitiveExpression(CodePrimitiveExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.Value == null) { Output.Write(NullToken); @@ -1489,23 +1421,13 @@ protected virtual void GenerateDefaultValueExpression(CodeDefaultValueExpression protected abstract void GenerateThisReferenceExpression(CodeThisReferenceExpression e); - protected virtual void GenerateTypeReferenceExpression(CodeTypeReferenceExpression e) + protected virtual void GenerateTypeReferenceExpression(CodeTypeReferenceExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - OutputType(e.Type); } - protected virtual void GenerateTypeOfExpression(CodeTypeOfExpression e) + protected virtual void GenerateTypeOfExpression(CodeTypeOfExpression e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - Output.Write("typeof("); OutputType(e.Type); Output.Write(')'); @@ -1514,12 +1436,8 @@ protected virtual void GenerateTypeOfExpression(CodeTypeOfExpression e) protected abstract void GenerateExpressionStatement(CodeExpressionStatement e); protected abstract void GenerateIterationStatement(CodeIterationStatement e); protected abstract void GenerateThrowExceptionStatement(CodeThrowExceptionStatement e); - protected virtual void GenerateCommentStatement(CodeCommentStatement e) + protected virtual void GenerateCommentStatement(CodeCommentStatement e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } if (e.Comment == null) { throw new ArgumentException(SR.Format(SR.Argument_NullComment, nameof(e)), nameof(e)); @@ -1527,13 +1445,8 @@ protected virtual void GenerateCommentStatement(CodeCommentStatement e) GenerateComment(e.Comment); } - protected virtual void GenerateCommentStatements(CodeCommentStatementCollection e) + protected virtual void GenerateCommentStatements(CodeCommentStatementCollection e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - foreach (CodeCommentStatement comment in e) { GenerateCommentStatement(comment); @@ -1550,13 +1463,8 @@ protected virtual void GenerateCommentStatements(CodeCommentStatementCollection protected abstract void GenerateGotoStatement(CodeGotoStatement e); protected abstract void GenerateLabeledStatement(CodeLabeledStatement e); - protected virtual void GenerateSnippetStatement(CodeSnippetStatement e) + protected virtual void GenerateSnippetStatement(CodeSnippetStatement e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - Output.WriteLine(e.Value); } @@ -1574,26 +1482,16 @@ protected virtual void GenerateSnippetStatement(CodeSnippetStatement e) protected abstract void GenerateTypeStart(CodeTypeDeclaration e); protected abstract void GenerateTypeEnd(CodeTypeDeclaration e); - protected virtual void GenerateCompileUnitStart(CodeCompileUnit e) + protected virtual void GenerateCompileUnitStart(CodeCompileUnit e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.StartDirectives.Count > 0) { GenerateDirectives(e.StartDirectives); } } - protected virtual void GenerateCompileUnitEnd(CodeCompileUnit e) + protected virtual void GenerateCompileUnitEnd(CodeCompileUnit e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - if (e.EndDirectives.Count > 0) { GenerateDirectives(e.EndDirectives); diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeValidator.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeValidator.cs index cd806bc7f5ceea..f2c970d1afd046 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeValidator.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CodeValidator.cs @@ -433,13 +433,8 @@ private void ValidateComment(CodeComment e) { } - private void ValidateStatement(CodeStatement e) + private void ValidateStatement(CodeStatement e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } - ValidateCodeDirectives(e.StartDirectives); ValidateCodeDirectives(e.EndDirectives); diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerErrorCollection.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerErrorCollection.cs index 5ececb97f7ade1..a85476820e1740 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerErrorCollection.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerErrorCollection.cs @@ -27,26 +27,16 @@ public CompilerError this[int index] public int Add(CompilerError value) => List.Add(value); - public void AddRange(CompilerError[] value) + public void AddRange(CompilerError[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CompilerErrorCollection value) + public void AddRange(CompilerErrorCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerInfo.cs b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerInfo.cs index 84c19410797fde..ac3b334a04de95 100644 --- a/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerInfo.cs +++ b/src/libraries/System.CodeDom/src/System/CodeDom/Compiler/CompilerInfo.cs @@ -63,13 +63,8 @@ public CodeDomProvider CreateProvider() return (CodeDomProvider)Activator.CreateInstance(CodeDomProviderType); } - public CodeDomProvider CreateProvider(IDictionary providerOptions) + public CodeDomProvider CreateProvider(IDictionary providerOptions!!) { - if (providerOptions == null) - { - throw new ArgumentNullException(nameof(providerOptions)); - } - ConstructorInfo constructor = CodeDomProviderType.GetConstructor(new Type[] { typeof(IDictionary) }); if (constructor != null) { diff --git a/src/libraries/System.Collections.Concurrent/src/Resources/Strings.resx b/src/libraries/System.Collections.Concurrent/src/Resources/Strings.resx index f09a978890740a..d6ddb52224e693 100644 --- a/src/libraries/System.Collections.Concurrent/src/Resources/Strings.resx +++ b/src/libraries/System.Collections.Concurrent/src/Resources/Strings.resx @@ -114,12 +114,6 @@ The collections argument is a zero-length array. - - The collection argument is null. - - - The array argument is null. - The index argument must be greater than or equal zero. diff --git a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/BlockingCollection.cs b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/BlockingCollection.cs index 1685d4ee52b00b..92aaa08fba65f5 100644 --- a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/BlockingCollection.cs +++ b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/BlockingCollection.cs @@ -173,7 +173,7 @@ public BlockingCollection(int boundedCapacity) /// The is not a positive value. /// The supplied contains more values /// than is permitted by . - public BlockingCollection(IProducerConsumerCollection collection, int boundedCapacity) + public BlockingCollection(IProducerConsumerCollection collection!!, int boundedCapacity) { if (boundedCapacity < 1) { @@ -181,10 +181,7 @@ public BlockingCollection(IProducerConsumerCollection collection, int bounded nameof(boundedCapacity), boundedCapacity, SR.BlockingCollection_ctor_BoundedCapacityRange); } - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } + int count = collection.Count; if (count > boundedCapacity) { @@ -199,12 +196,8 @@ public BlockingCollection(IProducerConsumerCollection collection, int bounded /// The collection to use as the underlying data store. /// The argument is /// null. - public BlockingCollection(IProducerConsumerCollection collection) + public BlockingCollection(IProducerConsumerCollection collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } Initialize(collection, NON_BOUNDED, collection.Count); } @@ -1698,12 +1691,8 @@ IEnumerator IEnumerable.GetEnumerator() /// If the collections argument is a 0-length array or contains a /// null element. Also, if at least one of the collections has been marked complete for adds. /// If at least one of the collections has been disposed. - private static void ValidateCollectionsArray(BlockingCollection[] collections, bool isAddOperation) + private static void ValidateCollectionsArray(BlockingCollection[] collections!!, bool isAddOperation) { - if (collections == null) - { - throw new ArgumentNullException(nameof(collections)); - } if (collections.Length < 1) { throw new ArgumentException( @@ -1787,13 +1776,8 @@ internal sealed class BlockingCollectionDebugView /// Constructs a new debugger view object for the provided blocking collection object. /// A blocking collection to browse in the debugger. - public BlockingCollectionDebugView(BlockingCollection collection) + public BlockingCollectionDebugView(BlockingCollection collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - _blockingCollection = collection; } diff --git a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs index 9930d13a3a0bbd..25f7d4451584ca 100644 --- a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs +++ b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs @@ -53,13 +53,8 @@ public ConcurrentBag() /// cref="ConcurrentBag{T}"/>. /// is a null reference /// (Nothing in Visual Basic). - public ConcurrentBag(IEnumerable collection) + public ConcurrentBag(IEnumerable collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection), SR.ConcurrentBag_Ctor_ArgumentNullException); - } - _locals = new ThreadLocal(); WorkStealingQueue queue = GetCurrentThreadWorkStealingQueue(forceCreate: true)!; @@ -277,12 +272,8 @@ private bool TryStealFromTo(WorkStealingQueue? startInclusive, WorkStealingQueue /// -or- the number of elements in the source is greater than the available space from /// to the end of the destination . - public void CopyTo(T[] array, int index) + public void CopyTo(T[] array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array), SR.ConcurrentBag_CopyTo_ArgumentNullException); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.Collection_CopyTo_ArgumentOutOfRangeException); @@ -375,10 +366,7 @@ void ICollection.CopyTo(Array array, int index) // Otherwise, fall back to first storing the contents to an array, // and then relying on its CopyTo to copy to the target Array. - if (array == null) - { - throw new ArgumentNullException(nameof(array), SR.ConcurrentBag_CopyTo_ArgumentNullException); - } + ArgumentNullException.ThrowIfNull(array); ToArray().CopyTo(array, index); } diff --git a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs index f237d7024d6d99..c170a7e46da588 100644 --- a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs +++ b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentDictionary.cs @@ -139,14 +139,9 @@ public ConcurrentDictionary(IEqualityComparer? comparer) : this(DefaultCon /// The whose elements are copied to the new . /// The implementation to use when comparing keys. /// is a null reference (Nothing in Visual Basic). - public ConcurrentDictionary(IEnumerable> collection, IEqualityComparer? comparer) + public ConcurrentDictionary(IEnumerable> collection!!, IEqualityComparer? comparer) : this(comparer) { - if (collection is null) - { - ThrowHelper.ThrowArgumentNullException(nameof(collection)); - } - InitializeFromCollection(collection); } @@ -165,14 +160,9 @@ public ConcurrentDictionary(IEnumerable> collection, /// is a null reference (Nothing in Visual Basic). /// is less than 1. /// contains one or more duplicate keys. - public ConcurrentDictionary(int concurrencyLevel, IEnumerable> collection, IEqualityComparer? comparer) + public ConcurrentDictionary(int concurrencyLevel, IEnumerable> collection!!, IEqualityComparer? comparer) : this(concurrencyLevel, DefaultCapacity, growLockArray: false, comparer) { - if (collection is null) - { - ThrowHelper.ThrowArgumentNullException(nameof(collection)); - } - InitializeFromCollection(collection); } @@ -676,13 +666,8 @@ public void Clear() /// elements in the source is greater than the available space from to /// the end of the destination . /// - void ICollection>.CopyTo(KeyValuePair[] array, int index) + void ICollection>.CopyTo(KeyValuePair[] array!!, int index) { - if (array is null) - { - ThrowHelper.ThrowArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ConcurrentDictionary_IndexIsNegative); @@ -1804,13 +1789,8 @@ private static void ThrowIfInvalidObjectValue(object? value) /// cref="ICollection"/> /// is greater than the available space from to the end of the destination /// . - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array is null) - { - ThrowHelper.ThrowArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ConcurrentDictionary_IndexIsNegative); diff --git a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentStack.cs b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentStack.cs index 9a4af6b378c4f5..7416c2c9c17c0c 100644 --- a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentStack.cs +++ b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentStack.cs @@ -76,12 +76,8 @@ public ConcurrentStack() /// cref="ConcurrentStack{T}"/>. /// The argument is /// null. - public ConcurrentStack(IEnumerable collection) + public ConcurrentStack(IEnumerable collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } InitializeFromCollection(collection); } @@ -224,14 +220,8 @@ public void Clear() /// cref="System.Collections.ICollection"/> cannot be cast automatically to the type of the /// destination . /// - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - // Validate arguments. - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - // We must be careful not to corrupt the array, so we will first accumulate an // internal list of elements that we will then copy to the array. This requires // some extra allocation, but is necessary since we don't know up front whether @@ -259,13 +249,8 @@ void ICollection.CopyTo(Array array, int index) /// available space from to the end of the destination . /// - public void CopyTo(T[] array, int index) + public void CopyTo(T[] array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - // We must be careful not to corrupt the array, so we will first accumulate an // internal list of elements that we will then copy to the array. This requires // some extra allocation, but is necessary since we don't know up front whether @@ -310,12 +295,8 @@ public void Push(T item) /// be able to inject elements between the elements being pushed. Items at lower indices in /// the array will be pushed before items at higher indices. /// - public void PushRange(T[] items) + public void PushRange(T[] items!!) { - if (items == null) - { - throw new ArgumentNullException(nameof(items)); - } PushRange(items, 0, items.Length); } @@ -398,12 +379,8 @@ private void PushCore(Node head, Node tail) /// /// Local helper function to validate the Pop Push range methods input /// - private static void ValidatePushPopRangeInput(T[] items, int startIndex, int count) + private static void ValidatePushPopRangeInput(T[] items!!, int startIndex, int count) { - if (items == null) - { - throw new ArgumentNullException(nameof(items)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count), SR.ConcurrentStack_PushPopRange_CountOutOfRange); @@ -511,13 +488,8 @@ public bool TryPop([MaybeNullWhen(false)] out T result) /// with the first node to be popped at the startIndex, the second node to be popped /// at startIndex + 1, and so on. /// - public int TryPopRange(T[] items) + public int TryPopRange(T[] items!!) { - if (items == null) - { - throw new ArgumentNullException(nameof(items)); - } - return TryPopRange(items, 0, items.Length); } diff --git a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/PartitionerStatic.cs b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/PartitionerStatic.cs index 3d494454c0f2be..b06acd06eb6e75 100644 --- a/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/PartitionerStatic.cs +++ b/src/libraries/System.Collections.Concurrent/src/System/Collections/Concurrent/PartitionerStatic.cs @@ -85,12 +85,8 @@ public static class Partitioner /// /// An orderable partitioner based on the input list. /// - public static OrderablePartitioner Create(IList list, bool loadBalance) + public static OrderablePartitioner Create(IList list!!, bool loadBalance) { - if (list == null) - { - throw new ArgumentNullException(nameof(list)); - } if (loadBalance) { return (new DynamicPartitionerForIList(list)); @@ -113,15 +109,11 @@ public static OrderablePartitioner Create(IList list, /// /// An orderable partitioner based on the input array. /// - public static OrderablePartitioner Create(TSource[] array, bool loadBalance) + public static OrderablePartitioner Create(TSource[] array!!, bool loadBalance) { // This implementation uses 'ldelem' instructions for element retrieval, rather than using a // method call. - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } if (loadBalance) { return (new DynamicPartitionerForArray(array)); @@ -166,13 +158,8 @@ public static OrderablePartitioner Create(IEnumerable /// The ordering used in the created partitioner is determined by the natural order of the elements /// as retrieved from the source enumerable. /// - public static OrderablePartitioner Create(IEnumerable source, EnumerablePartitionerOptions partitionerOptions) + public static OrderablePartitioner Create(IEnumerable source!!, EnumerablePartitionerOptions partitionerOptions) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if ((partitionerOptions & (~EnumerablePartitionerOptions.NoBuffering)) != 0) throw new ArgumentOutOfRangeException(nameof(partitionerOptions)); diff --git a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs index b70fcca6b235c6..c04f557cf54378 100644 --- a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs +++ b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs @@ -90,8 +90,12 @@ public static partial class ImmutableArray public static System.Collections.Immutable.ImmutableArray Create(T item1, T item2, T item3, T item4) { throw null; } public static System.Collections.Immutable.ImmutableArray Create(params T[]? items) { throw null; } public static System.Collections.Immutable.ImmutableArray Create(T[] items, int start, int length) { throw null; } + public static System.Collections.Immutable.ImmutableArray Create(System.ReadOnlySpan items) { throw null; } + public static System.Collections.Immutable.ImmutableArray Create(System.Span items) { throw null; } public static System.Collections.Immutable.ImmutableArray ToImmutableArray(this System.Collections.Generic.IEnumerable items) { throw null; } public static System.Collections.Immutable.ImmutableArray ToImmutableArray(this System.Collections.Immutable.ImmutableArray.Builder builder) { throw null; } + public static System.Collections.Immutable.ImmutableArray ToImmutableArray(this System.ReadOnlySpan items) { throw null; } + public static System.Collections.Immutable.ImmutableArray ToImmutableArray(this System.Span items) { throw null; } } public readonly partial struct ImmutableArray : System.Collections.Generic.ICollection, System.Collections.Generic.IEnumerable, System.Collections.Generic.IList, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList, System.Collections.Immutable.IImmutableList, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.IEquatable> { @@ -118,8 +122,11 @@ public static partial class ImmutableArray public System.Collections.Immutable.ImmutableArray Add(T item) { throw null; } public System.Collections.Immutable.ImmutableArray AddRange(System.Collections.Generic.IEnumerable items) { throw null; } public System.Collections.Immutable.ImmutableArray AddRange(System.Collections.Immutable.ImmutableArray items) { throw null; } + public System.Collections.Immutable.ImmutableArray AddRange(System.ReadOnlySpan items) { throw null; } + public System.Collections.Immutable.ImmutableArray AddRange(params T[] items) { throw null; } public System.ReadOnlyMemory AsMemory() { throw null; } public System.ReadOnlySpan AsSpan() { throw null; } + public System.ReadOnlySpan AsSpan(int start, int length) { throw null; } public System.Collections.Immutable.ImmutableArray< #nullable disable TOther @@ -140,6 +147,7 @@ public static System.Collections.Immutable.ImmutableArray< public void CopyTo(int sourceIndex, T[] destination, int destinationIndex, int length) { } public void CopyTo(T[] destination) { } public void CopyTo(T[] destination, int destinationIndex) { } + public void CopyTo(System.Span destination) { } public bool Equals(System.Collections.Immutable.ImmutableArray other) { throw null; } public override bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] object? obj) { throw null; } public System.Collections.Immutable.ImmutableArray.Enumerator GetEnumerator() { throw null; } @@ -152,6 +160,8 @@ public void CopyTo(T[] destination, int destinationIndex) { } public System.Collections.Immutable.ImmutableArray Insert(int index, T item) { throw null; } public System.Collections.Immutable.ImmutableArray InsertRange(int index, System.Collections.Generic.IEnumerable items) { throw null; } public System.Collections.Immutable.ImmutableArray InsertRange(int index, System.Collections.Immutable.ImmutableArray items) { throw null; } + public System.Collections.Immutable.ImmutableArray InsertRange(int index, T[] items) { throw null; } + public System.Collections.Immutable.ImmutableArray InsertRange(int index, System.ReadOnlySpan items) { throw null; } public ref readonly T ItemRef(int index) { throw null; } public int LastIndexOf(T item) { throw null; } public int LastIndexOf(T item, int startIndex) { throw null; } @@ -171,9 +181,12 @@ public void CopyTo(T[] destination, int destinationIndex) { } public System.Collections.Immutable.ImmutableArray RemoveRange(System.Collections.Immutable.ImmutableArray items) { throw null; } public System.Collections.Immutable.ImmutableArray RemoveRange(System.Collections.Immutable.ImmutableArray items, System.Collections.Generic.IEqualityComparer? equalityComparer) { throw null; } public System.Collections.Immutable.ImmutableArray RemoveRange(int index, int length) { throw null; } + public System.Collections.Immutable.ImmutableArray RemoveRange(System.ReadOnlySpan items, System.Collections.Generic.IEqualityComparer? equalityComparer = null) { throw null; } + public System.Collections.Immutable.ImmutableArray RemoveRange(T[] items, System.Collections.Generic.IEqualityComparer? equalityComparer = null) { throw null; } public System.Collections.Immutable.ImmutableArray Replace(T oldValue, T newValue) { throw null; } public System.Collections.Immutable.ImmutableArray Replace(T oldValue, T newValue, System.Collections.Generic.IEqualityComparer? equalityComparer) { throw null; } public System.Collections.Immutable.ImmutableArray SetItem(int index, T item) { throw null; } + public System.Collections.Immutable.ImmutableArray Slice(int start, int length) { throw null; } public System.Collections.Immutable.ImmutableArray Sort() { throw null; } public System.Collections.Immutable.ImmutableArray Sort(System.Collections.Generic.IComparer? comparer) { throw null; } public System.Collections.Immutable.ImmutableArray Sort(System.Comparison comparison) { throw null; } @@ -226,9 +239,12 @@ public void AddRange(T[] items, int length) { } public void AddRange(System.Collections.Immutable.ImmutableArray items) where TDerived : T { } public void AddRange(System.Collections.Immutable.ImmutableArray.Builder items) where TDerived : T { } public void AddRange(TDerived[] items) where TDerived : T { } + public void AddRange(System.ReadOnlySpan items) { } + public void AddRange(System.ReadOnlySpan items) where TDerived : T { } public void Clear() { } public bool Contains(T item) { throw null; } public void CopyTo(T[] array, int index) { } + public void CopyTo(System.Span destination) { } public System.Collections.Generic.IEnumerator GetEnumerator() { throw null; } public int IndexOf(T item) { throw null; } public int IndexOf(T item, int startIndex) { throw null; } diff --git a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.csproj b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.csproj index 05ce08b0551440..8b0ec6d6a270d1 100644 --- a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.csproj +++ b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.csproj @@ -5,6 +5,7 @@ + diff --git a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.netcoreapp.cs b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.netcoreapp.cs new file mode 100644 index 00000000000000..d6c786d33e236f --- /dev/null +++ b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.netcoreapp.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// ------------------------------------------------------------------------------ +// Changes to this file must follow the https://aka.ms/api-review process. +// ------------------------------------------------------------------------------ + +namespace System.Collections.Immutable +{ + public readonly partial struct ImmutableArray : System.Collections.Generic.ICollection, System.Collections.Generic.IEnumerable, System.Collections.Generic.IList, System.Collections.Generic.IReadOnlyCollection, System.Collections.Generic.IReadOnlyList, System.Collections.ICollection, System.Collections.IEnumerable, System.Collections.IList, System.Collections.Immutable.IImmutableList, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.IEquatable> + { + public System.ReadOnlySpan AsSpan(System.Range range) { throw null; } + } +} diff --git a/src/libraries/System.Collections.Immutable/src/System.Collections.Immutable.csproj b/src/libraries/System.Collections.Immutable/src/System.Collections.Immutable.csproj index 4451ca02abaec5..3bd029f7d66577 100644 --- a/src/libraries/System.Collections.Immutable/src/System.Collections.Immutable.csproj +++ b/src/libraries/System.Collections.Immutable/src/System.Collections.Immutable.csproj @@ -49,6 +49,7 @@ System.Collections.Immutable.ImmutableStack<T> + diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray.cs index 5558be5bfdbdee..5830fa943a47af 100644 --- a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray.cs +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray.cs @@ -32,7 +32,7 @@ public static ImmutableArray Create() /// /// The type of element stored in the array. /// The element to store in the array. - /// A 1-element array. + /// A 1-element immutable array containing the specified item. public static ImmutableArray Create(T item) { T[] array = new[] { item }; @@ -45,7 +45,7 @@ public static ImmutableArray Create(T item) /// The type of element stored in the array. /// The first element to store in the array. /// The second element to store in the array. - /// A 2-element array. + /// A 2-element immutable array containing the specified items. public static ImmutableArray Create(T item1, T item2) { T[] array = new[] { item1, item2 }; @@ -59,7 +59,7 @@ public static ImmutableArray Create(T item1, T item2) /// The first element to store in the array. /// The second element to store in the array. /// The third element to store in the array. - /// A 3-element array. + /// A 3-element immutable array containing the specified items. public static ImmutableArray Create(T item1, T item2, T item3) { T[] array = new[] { item1, item2, item3 }; @@ -74,13 +74,63 @@ public static ImmutableArray Create(T item1, T item2, T item3) /// The second element to store in the array. /// The third element to store in the array. /// The fourth element to store in the array. - /// A 4-element array. + /// A 4-element immutable array containing the specified items. public static ImmutableArray Create(T item1, T item2, T item3, T item4) { T[] array = new[] { item1, item2, item3, item4 }; return new ImmutableArray(array); } + /// + /// Creates an with the specified elements. + /// + /// The type of element stored in the array. + /// The elements to store in the array. + /// An immutable array containing the specified items. + public static ImmutableArray Create(ReadOnlySpan items) + { + if (items.IsEmpty) + { + return ImmutableArray.Empty; + } + + T[] array = items.ToArray(); + return new ImmutableArray(array); + } + + /// + /// Creates an with the specified elements. + /// + /// The type of element stored in the array. + /// The elements to store in the array. + /// An immutable array containing the specified items. + public static ImmutableArray Create(Span items) + { + return Create((ReadOnlySpan)items); + } + + /// + /// Produce an immutable array of contents from specified elements. + /// + /// The type of element in the list. + /// The elements to store in the array. + /// An immutable array containing the specified items. + public static ImmutableArray ToImmutableArray(this ReadOnlySpan items) + { + return Create(items); + } + + /// + /// Produce an immutable array of contents from specified elements. + /// + /// The type of element in the list. + /// The elements to store in the array. + /// An immutable array containing the specified items. + public static ImmutableArray ToImmutableArray(this Span items) + { + return Create((ReadOnlySpan)items); + } + /// /// Creates an populated with the contents of the specified sequence. /// @@ -133,7 +183,7 @@ public static ImmutableArray CreateRange(IEnumerable items) /// /// The type of element stored in the array. /// The elements to store in the array. - /// An immutable array. + /// An immutable array containing the specified items. public static ImmutableArray Create(params T[]? items) { if (items == null || items.Length == 0) @@ -368,7 +418,7 @@ public static ImmutableArray.Builder CreateBuilder(int initialCapacity) /// /// The type of element in the sequence. /// The sequence to enumerate. - /// An immutable array. + /// An immutable array containing the specified items. public static ImmutableArray ToImmutableArray(this IEnumerable items) { if (items is ImmutableArray) @@ -383,7 +433,7 @@ public static ImmutableArray ToImmutableArray(this IEnumerable /// Returns an immutable copy of the current contents of the builder's collection. /// /// The builder to create the immutable array from. - /// An immutable array. + /// An immutable array containing the specified items from . public static ImmutableArray ToImmutableArray(this ImmutableArray.Builder builder) { Requires.NotNull(builder, nameof(builder)); diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs index bdbb036a4b7e74..924a919205a38b 100644 --- a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs @@ -348,7 +348,35 @@ public void AddRange(ImmutableArray items, int length) /// /// Adds the specified items to the end of the array. /// - /// The items. + /// The items to add at the end of the array. + public void AddRange(ReadOnlySpan items) + { + int offset = this.Count; + this.Count += items.Length; + + items.CopyTo(new Span(_elements, offset, items.Length)); + } + + /// + /// Adds the specified items to the end of the array. + /// + /// The items to add at the end of the array. + public void AddRange(ReadOnlySpan items) where TDerived : T + { + int offset = this.Count; + this.Count += items.Length; + + var elements = new Span(_elements, offset, items.Length); + for (int i = 0; i < items.Length; i++) + { + elements[i] = items[i]; + } + } + + /// + /// Adds the specified items to the end of the array. + /// + /// The items to add at the end of the array. public void AddRange(ImmutableArray items) where TDerived : T { if (items.array != null) @@ -360,7 +388,7 @@ public void AddRange(ImmutableArray items) where TDerived : /// /// Adds the specified items to the end of the array. /// - /// The items. + /// The items to add at the end of the array. public void AddRange(Builder items) { Requires.NotNull(items, nameof(items)); @@ -370,7 +398,7 @@ public void AddRange(Builder items) /// /// Adds the specified items to the end of the array. /// - /// The items. + /// The items to add at the end of the array. public void AddRange(ImmutableArray.Builder items) where TDerived : T { Requires.NotNull(items, nameof(items)); @@ -705,6 +733,16 @@ public void Sort(int index, int count, IComparer? comparer) } } + /// + /// Copies the current contents to the specified . + /// + /// The to copy to. + public void CopyTo(Span destination) + { + Requires.Range(this.Count <= destination.Length, nameof(destination)); + new ReadOnlySpan(_elements, 0, this.Count).CopyTo(destination); + } + /// /// Returns an enumerator for the contents of the array. /// diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs index e8661bd05e509a..8b7ebb92f95244 100644 --- a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs @@ -193,7 +193,7 @@ public int IndexOf(T item, int startIndex, int count, IEqualityComparer? equa public int LastIndexOf(T item) { var self = this; - if (self.Length == 0) + if (self.IsEmpty) { return -1; } @@ -210,7 +210,7 @@ public int LastIndexOf(T item) public int LastIndexOf(T item, int startIndex) { var self = this; - if (self.Length == 0 && startIndex == 0) + if (self.IsEmpty && startIndex == 0) { return -1; } @@ -292,7 +292,7 @@ public ImmutableArray Insert(int index, T item) self.ThrowNullRefIfNotInitialized(); Requires.Range(index >= 0 && index <= self.Length, nameof(index)); - if (self.Length == 0) + if (self.IsEmpty) { return ImmutableArray.Create(item); } @@ -325,7 +325,7 @@ public ImmutableArray InsertRange(int index, IEnumerable items) Requires.Range(index >= 0 && index <= self.Length, nameof(index)); Requires.NotNull(items, nameof(items)); - if (self.Length == 0) + if (self.IsEmpty) { return ImmutableArray.CreateRange(items); } @@ -356,7 +356,7 @@ public ImmutableArray InsertRange(int index, IEnumerable items) if (!items.TryCopyTo(tmp, index)) { int sequenceIndex = index; - foreach (var item in items) + foreach (T item in items) { tmp[sequenceIndex++] = item; } @@ -382,25 +382,12 @@ public ImmutableArray InsertRange(int index, ImmutableArray items) { return items; } - else if (items.IsEmpty) + if (items.IsEmpty) { return self; } - T[] tmp = new T[self.Length + items.Length]; - - if (index != 0) - { - Array.Copy(self.array!, tmp, index); - } - if (index != self.Length) - { - Array.Copy(self.array!, index, tmp, index + items.Length, self.Length - index); - } - - Array.Copy(items.array!, 0, tmp, index, items.Length); - - return new ImmutableArray(tmp); + return self.InsertSpanRangeInternal(index, items.AsSpan()); } /// @@ -411,7 +398,7 @@ public ImmutableArray InsertRange(int index, ImmutableArray items) public ImmutableArray Add(T item) { var self = this; - if (self.Length == 0) + if (self.IsEmpty) { return ImmutableArray.Create(item); } @@ -589,14 +576,13 @@ public ImmutableArray RemoveRange(IEnumerable items, IEqualityComparer? Requires.NotNull(items, nameof(items)); var indicesToRemove = new SortedSet(); - foreach (var item in items) + foreach (T item in items) { - int index = self.IndexOf(item, 0, self.Length, equalityComparer); - while (index >= 0 && !indicesToRemove.Add(index) && index + 1 < self.Length) + int index = -1; + do { - // This is a duplicate of one we've found. Try hard to find another instance in the list to remove. index = self.IndexOf(item, index + 1, equalityComparer); - } + } while (index >= 0 && !indicesToRemove.Add(index) && index < self.Length - 1); } return self.RemoveAtRange(indicesToRemove); @@ -626,22 +612,9 @@ public ImmutableArray RemoveRange(ImmutableArray items) /// public ImmutableArray RemoveRange(ImmutableArray items, IEqualityComparer? equalityComparer) { - var self = this; Requires.NotNull(items.array!, nameof(items)); - if (items.IsEmpty) - { - self.ThrowNullRefIfNotInitialized(); - return self; - } - else if (items.Length == 1) - { - return self.Remove(items[0], equalityComparer); - } - else - { - return self.RemoveRange(items.array!, equalityComparer); - } + return RemoveRange(items.AsSpan(), equalityComparer); } /// @@ -791,6 +764,169 @@ public IEnumerable OfType() return self.array.OfType(); } + /// + /// Adds the specified values to this list. + /// + /// The values to add. + /// A new list with the elements added. + public ImmutableArray AddRange(ReadOnlySpan items) + { + var self = this; + return self.InsertRange(self.Length, items); + } + + /// + /// Adds the specified values to this list. + /// + /// The values to add. + /// A new list with the elements added. + public ImmutableArray AddRange(params T[] items) + { + var self = this; + return self.InsertRange(self.Length, items); + } + + /// + /// Creates a over the portion of current beginning at a specified position for a specified length. + /// + /// The index at which to begin the span. + /// The number of items in the span. + /// The representation of the + public ReadOnlySpan AsSpan(int start, int length) => new ReadOnlySpan(array, start, length); + + /// + /// Copies the elements of current to an . + /// + /// The that is the destination of the elements copied from current . + public void CopyTo(Span destination) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + Requires.Range(self.Length <= destination.Length, nameof(destination)); + + self.AsSpan().CopyTo(destination); + } + + /// + /// Inserts the specified values at the specified index. + /// + /// The index at which to insert the value. + /// The elements to insert. + /// The new immutable collection. + public ImmutableArray InsertRange(int index, T[] items) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + Requires.Range(index >= 0 && index <= self.Length, nameof(index)); + Requires.NotNull(items, nameof(items)); + + if (items.Length == 0) + { + return self; + } + if (self.IsEmpty) + { + return new ImmutableArray(items); + } + + return self.InsertSpanRangeInternal(index, items); + } + + /// + /// Inserts the specified values at the specified index. + /// + /// The index at which to insert the value. + /// The elements to insert. + /// The new immutable collection. + public ImmutableArray InsertRange(int index, ReadOnlySpan items) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + Requires.Range(index >= 0 && index <= self.Length, nameof(index)); + + if (items.IsEmpty) + { + return self; + } + if (self.IsEmpty) + { + return items.ToImmutableArray(); + } + + return self.InsertSpanRangeInternal(index, items); + } + + /// + /// Removes the specified values from this list. + /// + /// The items to remove if matches are found in this list. + /// + /// The equality comparer to use in the search. + /// + /// + /// A new list with the elements removed. + /// + public ImmutableArray RemoveRange(ReadOnlySpan items, IEqualityComparer? equalityComparer = null) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + + if (items.IsEmpty || self.IsEmpty) + { + return self; + } + + if (items.Length == 1) + { + return self.Remove(items[0], equalityComparer); + } + + var indicesToRemove = new SortedSet(); + foreach (T item in items) + { + int index = -1; + do + { + index = self.IndexOf(item, index + 1, equalityComparer); + } while (index >= 0 && !indicesToRemove.Add(index) && index < self.Length - 1); + } + + return self.RemoveAtRange(indicesToRemove); + } + + /// + /// Removes the specified values from this list. + /// + /// The items to remove if matches are found in this list. + /// + /// The equality comparer to use in the search. + /// + /// + /// A new list with the elements removed. + /// + public ImmutableArray RemoveRange(T[] items, IEqualityComparer? equalityComparer = null) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + + Requires.NotNull(items, nameof(items)); + + return self.RemoveRange(new ReadOnlySpan(items), equalityComparer); + } + + /// + /// Forms a slice out of the current starting at a specified index for a specified length. + /// + /// The index at which to begin this slice. + /// The desired length for the slice. + /// A that consists of length elements from the current starting at start. + public ImmutableArray Slice(int start, int length) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + return ImmutableArray.Create(self, start, length); + } + #region Explicit interface methods void IList.Insert(int index, T item) @@ -1228,7 +1364,7 @@ private ImmutableArray RemoveAtRange(ICollection indicesToRemove) int copied = 0; int removed = 0; int lastIndexRemoved = -1; - foreach (var indexToRemove in indicesToRemove) + foreach (int indexToRemove in indicesToRemove) { int copyLength = lastIndexRemoved == -1 ? indexToRemove : (indexToRemove - lastIndexRemoved - 1); Debug.Assert(indexToRemove > lastIndexRemoved); // We require that the input be a sorted set. @@ -1242,5 +1378,25 @@ private ImmutableArray RemoveAtRange(ICollection indicesToRemove) return new ImmutableArray(newArray); } + + private ImmutableArray InsertSpanRangeInternal(int index, ReadOnlySpan items) + { + Debug.Assert(array != null); + Debug.Assert(!IsEmpty); + Debug.Assert(!items.IsEmpty); + + var tmp = new T[Length + items.Length]; + if (index != 0) + { + Array.Copy(array!, tmp, index); + } + items.CopyTo(new Span(tmp, index, items.Length)); + if (index != Length) + { + Array.Copy(array!, index, tmp, index + items.Length, Length - index); + } + + return new ImmutableArray(tmp); + } } } diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.netcoreapp.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.netcoreapp.cs new file mode 100644 index 00000000000000..cf5c0013b7a31d --- /dev/null +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.netcoreapp.cs @@ -0,0 +1,24 @@ +// 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; + +namespace System.Collections.Immutable +{ + public readonly partial struct ImmutableArray : IReadOnlyList, IList, IEquatable>, IList, IImmutableArray, IStructuralComparable, IStructuralEquatable, IImmutableList + { + /// + /// Creates a over the portion of current based on specified + /// + /// Range in current . + /// The representation of the + public ReadOnlySpan AsSpan(Range range) + { + var self = this; + self.ThrowNullRefIfNotInitialized(); + + (int start, int length) = range.GetOffsetAndLength(self.Length); + return new ReadOnlySpan(self.array, start, length); + } + } +} diff --git a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs index 5a70cb43e1e31c..5b34fe28d84ffb 100644 --- a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs +++ b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs @@ -12,6 +12,13 @@ namespace System.Collections.Immutable.Tests { public class ImmutableArrayBuilderTest : SimpleElementImmutablesTestBase { + public static IEnumerable BuilderAddRangeData() + { + yield return new object[] { new[] { "a", "b" }, Array.Empty(), new[] { "a", "b" } }; + yield return new object[] { Array.Empty(), new[] { "a", "b" }, new[] { "a", "b" } }; + yield return new object[] { new[] { "a", "b" }, new[] { "c", "d" }, new[] { "a", "b", "c", "d" } }; + } + [Fact] public void CreateBuilderDefaultCapacity() { @@ -151,31 +158,83 @@ public void AddRangeImmutableArray() AssertExtensions.Throws("items", () => builder2.AddRange((ImmutableArray.Builder)null)); } - [Fact] - public void AddRangeDerivedArray() + [Theory] + [MemberData(nameof(BuilderAddRangeData))] + public void AddRangeDerivedArray(string[] builderElements, string[] rangeElements, string[] expectedResult) { + // Initialize builder var builder = new ImmutableArray.Builder(); - builder.AddRange(new[] { "a", "b" }); - Assert.Equal(new[] { "a", "b" }, builder); + builder.AddRange(builderElements); + + // AddRange + builder.AddRange(rangeElements); + + // Assert + Assert.Equal(expectedResult, builder); } - [Fact] - public void AddRangeDerivedImmutableArray() + [Theory] + [MemberData(nameof(BuilderAddRangeData))] + public void AddRangeSpan(string[] builderElements, string[] rangeElements, string[] expectedResult) + { + // Initialize builder + var builder = new ImmutableArray.Builder(); + builder.AddRange(builderElements); + + // AddRange + builder.AddRange(new ReadOnlySpan(rangeElements)); + + // Assert + Assert.Equal(expectedResult, builder); + } + + [Theory] + [MemberData(nameof(BuilderAddRangeData))] + public void AddRangeDerivedSpan(string[] builderElements, string[] rangeElements, string[] expectedResult) + { + // Initialize builder + var builder = new ImmutableArray.Builder(); + builder.AddRange(builderElements); + + // AddRange + builder.AddRange(new ReadOnlySpan(rangeElements)); + + // Assert + Assert.Equal(expectedResult, builder); + } + + [Theory] + [MemberData(nameof(BuilderAddRangeData))] + public void AddRangeDerivedImmutableArray(string[] builderElements, string[] rangeElements, string[] expectedResult) { + // Initialize builder var builder = new ImmutableArray.Builder(); - builder.AddRange(new[] { "a", "b" }.ToImmutableArray()); - Assert.Equal(new[] { "a", "b" }, builder); + builder.AddRange(builderElements); + + // AddRange + builder.AddRange(rangeElements.ToImmutableArray()); + + // Assert + Assert.Equal(expectedResult, builder); } - [Fact] - public void AddRangeDerivedBuilder() + [Theory] + [MemberData(nameof(BuilderAddRangeData))] + public void AddRangeDerivedBuilder(string[] builderElements, string[] rangeElements, string[] expectedResult) { + // Initialize builder + var builderBase = new ImmutableArray.Builder(); + builderBase.AddRange(builderElements); + + // Prepare another builder to add var builder = new ImmutableArray.Builder(); - builder.AddRange(new[] { "a", "b" }); + builder.AddRange(rangeElements); - var builderBase = new ImmutableArray.Builder(); + // AddRange builderBase.AddRange(builder); - Assert.Equal(new[] { "a", "b" }, builderBase); + + // Assert + Assert.Equal(expectedResult, builderBase); } [Fact] @@ -478,7 +537,7 @@ public void ToImmutableArray() } [Fact] - public void CopyTo() + public void CopyToArray() { var builder = ImmutableArray.Create(1, 2, 3).ToBuilder(); var target = new int[4]; @@ -491,6 +550,30 @@ public void CopyTo() AssertExtensions.Throws("index", () => builder.CopyTo(target, 2)); } + [Fact] + public void CopyToSpan() + { + var builder = ImmutableArray.Create(1, 2, 3).ToBuilder(); + Span span; + int[] target = new int[4]; + + // Span is longer than immutableArray + span = new Span(target); + builder.CopyTo(span); + Assert.Equal(new[] { 1, 2, 3, 0 }, target); + span.Fill(0); + + // Span has same length as immutableArray + span = new Span(target, 0, 3); + builder.CopyTo(span); + Assert.Equal(new[] { 1, 2, 3, 0 }, target); + span.Fill(0); + + // Span is shorter than immutableArray + span = new Span(target, 0, 2); + AssertExtensions.Throws("destination", span, s => builder.CopyTo(s)); + } + [Fact] public void Clear() { diff --git a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs index 7349cefa67b5c3..3193a996faf5ce 100644 --- a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs +++ b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs @@ -14,7 +14,7 @@ namespace System.Collections.Immutable.Tests { - public class ImmutableArrayTest : SimpleElementImmutablesTestBase + public partial class ImmutableArrayTest : SimpleElementImmutablesTestBase { private static readonly ImmutableArray s_emptyDefault = default; // init explicitly to avoid CS0649 private static readonly ImmutableArray s_empty = ImmutableArray.Create(); @@ -47,6 +47,17 @@ public static IEnumerable StringImmutableArrayData() yield return new object[] { new[] { (string)null } }; } + public static IEnumerable RangeIndexLengthData() + { + yield return new object[] { s_empty, 0, 0 }; + yield return new object[] { s_oneElement, 1, 0 }; + yield return new object[] { s_oneElement, 0, 1 }; + yield return new object[] { s_oneElement, 0, 0 }; + yield return new object[] { new[] { 1, 2, 3, 4 }, 0, 2 }; + yield return new object[] { new[] { 1, 2, 3, 4 }, 1, 2 }; + yield return new object[] { new[] { 1, 2, 3, 4 }, 2, 2 }; + } + [Theory] [MemberData(nameof(Int32EnumerableData))] public void Clear(IEnumerable source) @@ -68,19 +79,29 @@ public void AsSpanRoundTripTests(IEnumerable source) public void AsSpanRoundTripEmptyArrayTests() { ImmutableArray immutableArray = ImmutableArray.Create(Array.Empty()); + ReadOnlySpan span = immutableArray.AsSpan(); Assert.Equal(immutableArray, span.ToArray()); Assert.Equal(immutableArray.Length, span.Length); + + ReadOnlySpan startRangedSpan = immutableArray.AsSpan(0, 0); + Assert.Equal(immutableArray, startRangedSpan.ToArray()); + Assert.Equal(immutableArray.Length, startRangedSpan.Length); } [Fact] public void AsSpanRoundTripDefaultArrayTests() { ImmutableArray immutableArray = new ImmutableArray(); - ReadOnlySpan span = immutableArray.AsSpan(); Assert.True(immutableArray.IsDefault); + + ReadOnlySpan span = immutableArray.AsSpan(); Assert.Equal(0, span.Length); Assert.True(span.IsEmpty); + + ReadOnlySpan startRangeSpan = immutableArray.AsSpan(0, 0); + Assert.Equal(0, startRangeSpan.Length); + Assert.True(startRangeSpan.IsEmpty); } [Theory] @@ -97,10 +118,36 @@ public void AsSpanRoundTripStringTests(IEnumerable source) public void AsSpanRoundTripDefaultArrayStringTests() { ImmutableArray immutableArray = new ImmutableArray(); - ReadOnlySpan span = immutableArray.AsSpan(); Assert.True(immutableArray.IsDefault); + + ReadOnlySpan span = immutableArray.AsSpan(); Assert.Equal(0, span.Length); Assert.True(span.IsEmpty); + + ReadOnlySpan startRangeSpan = immutableArray.AsSpan(0, 0); + Assert.Equal(0, startRangeSpan.Length); + Assert.True(startRangeSpan.IsEmpty); + } + + [Theory] + [MemberData(nameof(RangeIndexLengthData))] + public void AsSpanStartLength(IEnumerable source, int start, int length) + { + var array = source.ToImmutableArray(); + var expected = source.Skip(start).Take(length); + Assert.Equal(expected, array.AsSpan(start, length).ToArray()); + } + + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void AsSpanStartLengthInvalid(IEnumerable source) + { + var array = source.ToImmutableArray(); + + AssertExtensions.Throws(() => array.AsSpan(-1, 1)); + AssertExtensions.Throws(() => array.AsSpan(array.Length + 1, 1)); + AssertExtensions.Throws(() => array.AsSpan(0, -1)); + AssertExtensions.Throws(() => array.AsSpan(0, array.Length + 1)); } [Theory] @@ -155,7 +202,7 @@ public void AsMemoryRoundTripDefaultArrayStringTests() [Fact] public void CreateEnumerableElementType() { - // Create should not have the same semantics as CreateRange, except for arrays. + // Create should not have the same semantics as CreateRange, except for arrays, span and readonlySpan. // If you pass in an IEnumerable to Create, you should get an // ImmutableArray>. However, if you pass a T[] in, you should get // a ImmutableArray. @@ -168,6 +215,12 @@ public void CreateEnumerableElementType() var enumerable = Enumerable.Empty(); Assert.IsType>>(ImmutableArray.Create(enumerable)); + + Span span = Span.Empty; + Assert.IsType>(ImmutableArray.Create(span)); + + ReadOnlySpan readonlySpan = ReadOnlySpan.Empty; + Assert.IsType>(ImmutableArray.Create(readonlySpan)); } [Fact] @@ -175,6 +228,8 @@ public void CreateEmpty() { Assert.True(s_empty == ImmutableArray.Create()); Assert.True(s_empty == ImmutableArray.Create(new int[0])); + Assert.True(s_empty == ImmutableArray.Create(Span.Empty)); + Assert.True(s_empty == ImmutableArray.Create(ReadOnlySpan.Empty)); } [Theory] @@ -342,6 +397,14 @@ public void CreateFromSlice(IEnumerable source, int start, int length) Assert.Equal(source.Skip(start).Take(length), ImmutableArray.Create(source.ToArray(), start, length)); } + [Theory] + [MemberData(nameof(CreateFromSliceData))] + public void SliceFromSliceData(IEnumerable source, int start, int length) + { + var immutableArray = source.ToImmutableArray(); + Assert.Equal(source.Skip(start).Take(length), immutableArray.Slice(start, length)); + } + public static IEnumerable CreateFromSliceData() { yield return new object[] { new int[] { }, 0, 0 }; @@ -380,6 +443,15 @@ public void CreateFromSliceOfImmutableArrayOptimizations(IEnumerable source Assert.True(array == slice); // Verify that the underlying arrays are reference-equal. } + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void SliceFromCompleteImmutableArrayOptimizations(IEnumerable source) + { + var array = source.ToImmutableArray(); + var slice = array.Slice(0, array.Length); + Assert.True(array == slice); // Verify that the underlying arrays are reference-equal. + } + [Theory] [MemberData(nameof(Int32EnumerableData))] public void CreateFromSliceOfImmutableArrayEmptyReturnsSingleton(IEnumerable source) @@ -408,6 +480,25 @@ public void CreateFromSliceOfArrayInvalid(IEnumerable source) } } + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void SliceFromInvalidRange(IEnumerable source) + { + var array = source.ToImmutableArray(); + + AssertExtensions.Throws("start", () => array.Slice(-1, 0)); + AssertExtensions.Throws("start", () => array.Slice(array.Length + 1, 0)); + + AssertExtensions.Throws("length", () => array.Slice(0, -1)); + AssertExtensions.Throws("length", () => array.Slice(0, array.Length + 1)); + AssertExtensions.Throws("length", () => array.Slice(Math.Max(0, array.Length - 1), 2)); + + if (array.Length > 0) + { + AssertExtensions.Throws("length", () => array.Slice(1, array.Length)); + } + } + [Theory] [MemberData(nameof(Int32EnumerableData))] public void CreateFromSliceOfArrayEmptyReturnsSingleton(IEnumerable source) @@ -417,6 +508,24 @@ public void CreateFromSliceOfArrayEmptyReturnsSingleton(IEnumerable source) Assert.True(s_empty == slice); } + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void SliceEmptyReturnsSingleton(IEnumerable source) + { + var array = source.ToImmutableArray(); + var slice = array.Slice(Math.Min(1, array.Length), 0); + Assert.True(s_empty == slice); + } + + [Theory] + [InlineData(0, 0)] + [InlineData(0, -1)] + [InlineData(-1, 0)] + public void SliceDefaultInvalid(int start, int length) + { + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.Slice(start, length)); + } + [Theory] [MemberData(nameof(Int32EnumerableData))] public void CreateFromArray(IEnumerable source) @@ -424,6 +533,20 @@ public void CreateFromArray(IEnumerable source) Assert.Equal(source, ImmutableArray.Create(source.ToArray())); } + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void CreateFromSpan(IEnumerable source) + { + Assert.Equal(source, ImmutableArray.Create(source.ToArray().AsSpan())); + } + + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void CreateFromReadOnlySpan(IEnumerable source) + { + Assert.Equal(source, ImmutableArray.Create(new ReadOnlySpan(source.ToArray()))); + } + [Fact] public void CreateFromArrayNull() { @@ -586,7 +709,12 @@ public void CastArrayBadReference() public void ToImmutableArray(IEnumerable source) { var array = source.ToImmutableArray(); + Span span = source.ToArray().AsSpan(); + Assert.Equal(source, array); + Assert.Equal(source, span.ToImmutableArray()); + Assert.Equal(source, ((ReadOnlySpan)span).ToImmutableArray()); + Assert.True(array == array.ToImmutableArray()); } @@ -1015,11 +1143,27 @@ public void AddRange(IEnumerable source, IEnumerable items) var array = source.ToImmutableArray(); Assert.Equal(source.Concat(items), array.AddRange(it)); // Enumerable overload - Assert.Equal(source.Concat(items), array.AddRange(it.ToImmutableArray())); // Struct overload + Assert.Equal(source.Concat(items), array.AddRange(it.ToImmutableArray())); // ImmutableArray overload + + int[] itArray = it.ToArray(); + Assert.Equal(source.Concat(items), array.AddRange(itArray)); // Array overload + Assert.Equal(source.Concat(items), array.AddRange(new ReadOnlySpan(itArray))); // ReadOnlySpan overload + Assert.Equal(source, array); // Make sure the original array wasn't affected. }); } + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void AddRangeEmptyOptimization(IEnumerable source) + { + ImmutableArray array = source.ToImmutableArray(); + + // Verify that underlying array is reference-equal as original array + Assert.True(array.AddRange(Array.Empty()) == array); + Assert.True(array.AddRange(ReadOnlySpan.Empty) == array); + } + public static IEnumerable AddData() { yield return new object[] { new int[] { }, new[] { 1 } }; @@ -1043,8 +1187,13 @@ public void AddRangeInvalid(IEnumerable source) // If the lhs or the rhs is a default ImmutableArray, AddRange should throw. TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(source)); // Enumerable overload - TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(source.ToImmutableArray())); // Struct overload - TestExtensionsMethods.ValidateDefaultThisBehavior(() => source.ToImmutableArray().AddRange(s_emptyDefault)); // Struct overload + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(source.ToImmutableArray())); // ImmutableArray overload + TestExtensionsMethods.ValidateDefaultThisBehavior(() => source.ToImmutableArray().AddRange(s_emptyDefault)); // ImmutableArray overload + + int[] sourceArray = source.ToArray(); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(sourceArray)); // Array overload + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(new ReadOnlySpan(sourceArray))); // ReadOnlySpan overload + Assert.Throws(() => source.ToImmutableArray().AddRange((IEnumerable)s_emptyDefault)); // Enumerable overload TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AddRange(s_emptyDefault)); @@ -1095,46 +1244,64 @@ public void InsertDefaultInvalid(int index) [MemberData(nameof(Int32EnumerableData))] public void InsertRangeInvalid(IEnumerable source) { - var array = source.ToImmutableArray(); + var immutableArray = source.ToImmutableArray(); - AssertExtensions.Throws("index", () => array.InsertRange(array.Length + 1, s_oneElement)); - AssertExtensions.Throws("index", () => array.InsertRange(-1, s_oneElement)); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(immutableArray.Length + 1, s_oneElement)); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(-1, s_oneElement)); - AssertExtensions.Throws("index", () => array.InsertRange(array.Length + 1, (IEnumerable)s_oneElement)); - AssertExtensions.Throws("index", () => array.InsertRange(-1, (IEnumerable)s_oneElement)); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(immutableArray.Length + 1, (IEnumerable)s_oneElement)); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(-1, (IEnumerable)s_oneElement)); + + int[] array = s_oneElement.ToArray(); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(immutableArray.Length + 1, array)); + AssertExtensions.Throws("index", () => immutableArray.InsertRange(-1, array)); + + var span = new ReadOnlySpan(array); + AssertExtensions.Throws("index", span, s => immutableArray.InsertRange(immutableArray.Length + 1, s)); + AssertExtensions.Throws("index", span, s => immutableArray.InsertRange(-1, s)); } [Theory] [MemberData(nameof(Int32EnumerableData))] public void InsertRangeDefaultInvalid(IEnumerable items) { - var array = items.ToImmutableArray(); + var immutableArray = items.ToImmutableArray(); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(1, items)); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(-1, items)); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(0, items)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(1, immutableArray)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(-1, immutableArray)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(0, immutableArray)); + + int[] array = items.ToArray(); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(1, array)); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(-1, array)); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.InsertRange(0, array)); - TestExtensionsMethods.ValidateDefaultThisBehavior(() => array.InsertRange(1, s_emptyDefault)); - TestExtensionsMethods.ValidateDefaultThisBehavior(() => array.InsertRange(-1, s_emptyDefault)); - TestExtensionsMethods.ValidateDefaultThisBehavior(() => array.InsertRange(0, s_emptyDefault)); + var span = new ReadOnlySpan(array); + TestExtensionsMethods.ValidateDefaultThisBehavior(span, s => s_emptyDefault.InsertRange(1, s)); + TestExtensionsMethods.ValidateDefaultThisBehavior(span, s => s_emptyDefault.InsertRange(-1, s)); + TestExtensionsMethods.ValidateDefaultThisBehavior(span, s => s_emptyDefault.InsertRange(0, s)); - if (array.Length > 0) + TestExtensionsMethods.ValidateDefaultThisBehavior(() => immutableArray.InsertRange(1, s_emptyDefault)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => immutableArray.InsertRange(-1, s_emptyDefault)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => immutableArray.InsertRange(0, s_emptyDefault)); + + if (immutableArray.Length > 0) { - Assert.Throws(() => array.InsertRange(1, (IEnumerable)s_emptyDefault)); + Assert.Throws(() => immutableArray.InsertRange(1, (IEnumerable)s_emptyDefault)); } - Assert.Throws(() => array.InsertRange(0, (IEnumerable)s_emptyDefault)); + Assert.Throws(() => immutableArray.InsertRange(0, (IEnumerable)s_emptyDefault)); } [Theory] [MemberData(nameof(InsertRangeData))] public void InsertRange(IEnumerable source, int index, IEnumerable items) { - var array = source.ToImmutableArray(); + var immutableArray = source.ToImmutableArray(); Assert.All(ChangeType(items), it => { @@ -1142,14 +1309,31 @@ public void InsertRange(IEnumerable source, int index, IEnumerable ite .Concat(items) .Concat(source.Skip(index)); - Assert.Equal(expected, array.InsertRange(index, it)); // Enumerable overload - Assert.Equal(expected, array.InsertRange(index, it.ToImmutableArray())); // Struct overload + Assert.Equal(expected, immutableArray.InsertRange(index, it)); // Enumerable overload + Assert.Equal(expected, immutableArray.InsertRange(index, it.ToImmutableArray())); // ImmutableArray overload - if (index == array.Length) + int[] array; + if (items.GetType() == typeof(uint[])) + { + array = it.Select(i => (int)i).ToArray(); + } + else + { + array = it.ToArray(); + } + + Assert.Equal(expected, immutableArray.InsertRange(index, array)); // Array overload + Assert.Equal(expected, immutableArray.InsertRange(index, new ReadOnlySpan(array))); // Span overload + + if (index == immutableArray.Length) { // Insertion at the end is equivalent to adding. - Assert.Equal(expected, array.InsertRange(index, it)); // Enumerable overload - Assert.Equal(expected, array.InsertRange(index, it.ToImmutableArray())); // Struct overload + expected = source.Concat(items); + + Assert.Equal(expected, immutableArray.InsertRange(index, it)); // Enumerable overload + Assert.Equal(expected, immutableArray.InsertRange(index, it.ToImmutableArray())); // ImmutableArray overload + Assert.Equal(expected, immutableArray.InsertRange(index, array)); // Array overload + Assert.Equal(expected, immutableArray.InsertRange(index, new ReadOnlySpan(array))); // Span overload } }); } @@ -1260,7 +1444,7 @@ public void RemoveDefaultInvalid() } [Theory] - [MemberData(nameof(RemoveRangeIndexLengthData))] + [MemberData(nameof(RangeIndexLengthData))] public void RemoveRangeIndexLength(IEnumerable source, int index, int length) { var array = source.ToImmutableArray(); @@ -1268,17 +1452,6 @@ public void RemoveRangeIndexLength(IEnumerable source, int index, int lengt Assert.Equal(expected, array.RemoveRange(index, length)); } - public static IEnumerable RemoveRangeIndexLengthData() - { - yield return new object[] { s_empty, 0, 0 }; - yield return new object[] { s_oneElement, 1, 0 }; - yield return new object[] { s_oneElement, 0, 1 }; - yield return new object[] { s_oneElement, 0, 0 }; - yield return new object[] { new[] { 1, 2, 3, 4 }, 0, 2 }; - yield return new object[] { new[] { 1, 2, 3, 4 }, 1, 2 }; - yield return new object[] { new[] { 1, 2, 3, 4 }, 2, 2 }; - } - [Theory] [MemberData(nameof(Int32EnumerableData))] public void RemoveRangeIndexLengthInvalid(IEnumerable source) @@ -1303,48 +1476,59 @@ public void RemoveRangeIndexLengthDefaultInvalid(int index, int length) [Theory] [MemberData(nameof(RemoveRangeEnumerableData))] - public void RemoveRangeEnumerable(IEnumerable source, IEnumerable items, IEqualityComparer comparer) + public void RemoveRangeEnumerable(IEnumerable source, IEnumerable items, IEqualityComparer comparer) { - var array = source.ToImmutableArray(); - IEnumerable expected = items.Aggregate( + ImmutableArray immutableArray = source.ToImmutableArray(); + IEnumerable expected = items.Aggregate( seed: source.ToImmutableArray(), func: (a, i) => a.Remove(i, comparer)); - Assert.Equal(expected, array.RemoveRange(items, comparer)); // Enumerable overload - Assert.Equal(expected, array.RemoveRange(items.ToImmutableArray(), comparer)); // Struct overload - Assert.Equal(expected, ((IImmutableList)array).RemoveRange(items, comparer)); + Assert.Equal(expected, immutableArray.RemoveRange(items, comparer)); // Enumerable overload + Assert.Equal(expected, immutableArray.RemoveRange(items.ToImmutableArray(), comparer)); // ImmutableArray overload + + int?[] array = items.ToArray(); + Assert.Equal(expected, immutableArray.RemoveRange(array, comparer)); // Array overload + ReadOnlySpan span = new ReadOnlySpan(array); + Assert.Equal(expected, immutableArray.RemoveRange(span, comparer)); // Span overload + + Assert.Equal(expected, ((IImmutableList)immutableArray).RemoveRange(items, comparer)); if (comparer == null || comparer == EqualityComparer.Default) { - Assert.Equal(expected, array.RemoveRange(items)); // Enumerable overload - Assert.Equal(expected, array.RemoveRange(items.ToImmutableArray())); // Struct overload - Assert.Equal(expected, ((IImmutableList)array).RemoveRange(items)); + Assert.Equal(expected, immutableArray.RemoveRange(items)); // Enumerable overload + Assert.Equal(expected, immutableArray.RemoveRange(items.ToImmutableArray())); // ImmutableArray overload + Assert.Equal(expected, immutableArray.RemoveRange(array)); // Array overload + Assert.Equal(expected, immutableArray.RemoveRange(span)); // Span overload + Assert.Equal(expected, ((IImmutableList)immutableArray).RemoveRange(items)); } } public static IEnumerable RemoveRangeEnumerableData() { - return SharedEqualityComparers().SelectMany(comparer => + return SharedEqualityComparers().SelectMany(comparer => new[] { - new object[] { s_empty, s_empty, comparer }, - new object[] { s_empty, s_oneElement, comparer }, - new object[] { s_oneElement, s_empty, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 2, 3, 4 }, comparer }, - new object[] { Enumerable.Range(1, 5), Enumerable.Range(6, 5), comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 2 }, comparer }, - new object[] { s_empty, new int[] { }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 2 }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 1, 3, 5 }, comparer }, - new object[] { Enumerable.Range(1, 10), new[] { 2, 4, 5, 7, 10 }, comparer }, - new object[] { Enumerable.Range(1, 10), new[] { 1, 2, 4, 5, 7, 10 }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 5 }, comparer }, - new object[] { new[] { 1, 2, 2, 3 }, new[] { 2 }, comparer }, - new object[] { new[] { 1, 2, 2, 3 }, new[] { 2, 2 }, comparer }, - new object[] { new[] { 1, 2, 2, 3 }, new[] { 2, 2, 2 }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 42 }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 42, 42 }, comparer }, - new object[] { new[] { 1, 2, 3 }, new[] { 42, 42, 42 }, comparer }, + new object[] { Array.Empty(), Array.Empty(), comparer }, + new object[] { Array.Empty(), new int?[] { 1 }, comparer }, + new object[] { new int?[] { 1 }, Array.Empty(), comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 2, 3, 4 }, comparer }, + new object[] { Enumerable.Range(1, 5).Cast(), Enumerable.Range(6, 5).Cast(), comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 2 }, comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 1, 3, 5 }, comparer }, + new object[] { Enumerable.Range(1, 10).Cast(), new int?[] { 2, 4, 5, 7, 10 }, comparer }, + new object[] { Enumerable.Range(1, 10).Cast(), new int?[] { 1, 2, 4, 5, 7, 10 }, comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 5 }, comparer }, + new object[] { new int?[] { 1, 2, 2, 3 }, new int?[] { 2 }, comparer }, + new object[] { new int?[] { 1, 2, 2, 3 }, new int?[] { 2, 2 }, comparer }, + new object[] { new int?[] { 1, 2, 2, 3 }, new int?[] { 2, 2, 2 }, comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 42 }, comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 42, 42 }, comparer }, + new object[] { new int?[] { 1, 2, 3 }, new int?[] { 42, 42, 42 }, comparer }, + new object[] { new int?[] { null }, new int?[] { 1 }, comparer }, + new object[] { new int?[] { 1 }, new int?[] { null}, comparer }, + new object[] { new int?[] { 1, null, 2, null }, new int?[] { 1, null}, comparer }, + new object[] { new int?[] { 1, null, 2 }, new int?[] { 1, null, null}, comparer }, + new object[] { new int?[] { 1, null, 2, null }, new int?[] { 1, null, null}, comparer }, }); } @@ -1352,7 +1536,7 @@ public static IEnumerable RemoveRangeEnumerableData() [MemberData(nameof(Int32EnumerableData))] public void RemoveRangeEnumerableInvalid(IEnumerable source) { - var array = source.ToImmutableArray(); + var immutableArray = source.ToImmutableArray(); Assert.All(SharedEqualityComparers(), comparer => { @@ -1363,18 +1547,18 @@ public void RemoveRangeEnumerableInvalid(IEnumerable source) Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(source, comparer)); // Struct overloads, lhs is default - TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(array)); - TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(array, comparer)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(immutableArray)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(immutableArray, comparer)); // Struct overloads, rhs is default - AssertExtensions.Throws("items", () => array.RemoveRange(s_emptyDefault)); - AssertExtensions.Throws("items", () => array.RemoveRange(s_emptyDefault, comparer)); + AssertExtensions.Throws("items", () => immutableArray.RemoveRange(s_emptyDefault)); + AssertExtensions.Throws("items", () => immutableArray.RemoveRange(s_emptyDefault, comparer)); // Enumerable overloads, rhs is default - Assert.Throws(() => array.RemoveRange((IEnumerable)s_emptyDefault)); - Assert.Throws(() => array.RemoveRange((IEnumerable)s_emptyDefault, comparer)); - Assert.Throws(() => ((IImmutableList)array).RemoveRange(s_emptyDefault)); - Assert.Throws(() => ((IImmutableList)array).RemoveRange(s_emptyDefault, comparer)); + Assert.Throws(() => immutableArray.RemoveRange((IEnumerable)s_emptyDefault)); + Assert.Throws(() => immutableArray.RemoveRange((IEnumerable)s_emptyDefault, comparer)); + Assert.Throws(() => ((IImmutableList)immutableArray).RemoveRange(s_emptyDefault)); + Assert.Throws(() => ((IImmutableList)immutableArray).RemoveRange(s_emptyDefault, comparer)); // Struct overloads, both sides are default AssertExtensions.Throws("items", () => s_emptyDefault.RemoveRange(s_emptyDefault)); @@ -1387,16 +1571,30 @@ public void RemoveRangeEnumerableInvalid(IEnumerable source) Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(s_emptyDefault, comparer)); // Enumerable overloads, rhs is null - AssertExtensions.Throws("items", () => array.RemoveRange(items: null)); - AssertExtensions.Throws("items", () => array.RemoveRange(items: null, equalityComparer: comparer)); - AssertExtensions.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null)); - AssertExtensions.Throws("items", () => ((IImmutableList)array).RemoveRange(items: null, equalityComparer: comparer)); + AssertExtensions.Throws("items", () => immutableArray.RemoveRange(items: null as IEnumerable)); + AssertExtensions.Throws("items", () => immutableArray.RemoveRange(items: null as IEnumerable, equalityComparer: comparer)); + AssertExtensions.Throws("items", () => ((IImmutableList)immutableArray).RemoveRange(items: null)); + AssertExtensions.Throws("items", () => ((IImmutableList)immutableArray).RemoveRange(items: null, equalityComparer: comparer)); // Enumerable overloads, lhs is default and rhs is null - TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: null)); - TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: null, equalityComparer: comparer)); - Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(items: null)); - Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(items: null, equalityComparer: comparer)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: null as IEnumerable)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: null as IEnumerable, equalityComparer: comparer)); + Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(items: null as IEnumerable)); + Assert.Throws(() => ((IImmutableList)s_emptyDefault).RemoveRange(items: null as IEnumerable, equalityComparer: comparer)); + + // Array overloads, lhs is default and rhs is null + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: null as int[], comparer)); + + // Array overloads, rhs is null + AssertExtensions.Throws("items", () => immutableArray.RemoveRange(items: null as int[], equalityComparer: comparer)); + + // Array overloads, lhs is default + int[] array = source.ToArray(); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.RemoveRange(items: array, comparer)); + + // Span overloads, lhs is default + var span = new ReadOnlySpan(array); + TestExtensionsMethods.ValidateDefaultThisBehavior(span, s => s_emptyDefault.RemoveRange(items: s, comparer)); }); } @@ -1597,6 +1795,15 @@ public void CopyTo(IEnumerable source, int sourceIndex, IEnumerable de Assert.Equal(destination.Skip(destinationIndex + array.Length), destinationArray.Skip(destinationIndex + array.Length)); }); + CopyAndInvoke(destination, destinationArray => + { + array.CopyTo(new Span(destinationArray, destinationIndex, array.Length)); + + Assert.Equal(destination.Take(destinationIndex), destinationArray.Take(destinationIndex)); + Assert.Equal(source, destinationArray.Skip(destinationIndex).Take(array.Length)); + Assert.Equal(destination.Skip(destinationIndex + array.Length), destinationArray.Skip(destinationIndex + array.Length)); + }); + if (destinationIndex == 0) { CopyAndInvoke(destination, destinationArray => @@ -1644,6 +1851,7 @@ public void CopyToInvalid(IEnumerable source) if (array.Length > 0) { AssertExtensions.Throws("destinationArray", string.Empty, () => array.CopyTo(array.Length - 1, new int[1], 1, 1)); // Not enough room in the destination. + AssertExtensions.Throws("destination", () => array.CopyTo(new Span(new int[array.Length - 1]))); // Not enough room in the destination. } } @@ -1663,6 +1871,8 @@ public void CopyToDefaultInvalid(int destinationLength, int destinationIndex) TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.CopyTo(destination, destinationIndex)); TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.CopyTo(0, destination, destinationIndex, 0)); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.CopyTo(new Span(destination, destinationIndex, destinationLength - destinationIndex))); + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.CopyTo(new Span(destination, destinationIndex, 0))); } [Theory] diff --git a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.netcoreapp.cs b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.netcoreapp.cs new file mode 100644 index 00000000000000..5821f93fc8c5bb --- /dev/null +++ b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.netcoreapp.cs @@ -0,0 +1,50 @@ +// 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 Xunit; + +namespace System.Collections.Immutable.Tests +{ + public partial class ImmutableArrayTest : SimpleElementImmutablesTestBase + { + [Fact] + public void AsSpanRoundTripEmptyArrayTests_RangeInput() + { + ImmutableArray immutableArray = ImmutableArray.Create(Array.Empty()); + + ReadOnlySpan rangedSpan = immutableArray.AsSpan(new Range(0, 0)); + Assert.Equal(immutableArray, rangedSpan.ToArray()); + Assert.Equal(immutableArray.Length, rangedSpan.Length); + } + + [Fact] + public void AsSpanEmptyRangeNotInitialized() + { + TestExtensionsMethods.ValidateDefaultThisBehavior(() => s_emptyDefault.AsSpan(new Range(0, 0))); + } + + [Theory] + [MemberData(nameof(RangeIndexLengthData))] + public void AsSpanStartLength_RangeInput(IEnumerable source, int start, int length) + { + var array = source.ToImmutableArray(); + var expected = source.Skip(start).Take(length); + + Assert.Equal(expected, array.AsSpan(new Range(start, start + length)).ToArray()); + } + + [Theory] + [MemberData(nameof(Int32EnumerableData))] + public void AsSpanStartLengthInvalid_RangeInput(IEnumerable source) + { + var array = source.ToImmutableArray(); + + AssertExtensions.Throws(() => array.AsSpan(new Range(-1, 0))); + AssertExtensions.Throws(() => array.AsSpan(new Range(array.Length + 1, array.Length + 2))); + AssertExtensions.Throws(() => array.AsSpan(new Range(0, -1))); + AssertExtensions.Throws(() => array.AsSpan(new Range(0, array.Length + 1))); + } + } +} diff --git a/src/libraries/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj b/src/libraries/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj index 594062fdaa1092..308d62c3c2b9e9 100644 --- a/src/libraries/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj +++ b/src/libraries/System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj @@ -12,6 +12,7 @@ + diff --git a/src/libraries/System.Collections.Immutable/tests/TestExtensionsMethods.cs b/src/libraries/System.Collections.Immutable/tests/TestExtensionsMethods.cs index 7373a24d5d778c..2e2c65d491e3db 100644 --- a/src/libraries/System.Collections.Immutable/tests/TestExtensionsMethods.cs +++ b/src/libraries/System.Collections.Immutable/tests/TestExtensionsMethods.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Xunit; +using Xunit.Sdk; namespace System.Collections.Immutable.Tests { @@ -14,5 +15,23 @@ internal static void ValidateDefaultThisBehavior(Action a) { Assert.Throws(a); } + + internal static void ValidateDefaultThisBehavior(ReadOnlySpan span, AssertExtensions.AssertThrowsActionReadOnly action) + { + try + { + action(span); + } + catch (NullReferenceException nullRefEx) when (nullRefEx.GetType() == typeof(NullReferenceException)) + { + return; + } + catch (Exception ex) + { + throw new ThrowsException(typeof(NullReferenceException), ex); + } + + throw new ThrowsException(typeof(NullReferenceException)); + } } } diff --git a/src/libraries/System.Collections.NonGeneric/src/Resources/Strings.resx b/src/libraries/System.Collections.NonGeneric/src/Resources/Strings.resx index 2f022b658b9ea7..d45e75764768cd 100644 --- a/src/libraries/System.Collections.NonGeneric/src/Resources/Strings.resx +++ b/src/libraries/System.Collections.NonGeneric/src/Resources/Strings.resx @@ -72,15 +72,6 @@ Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. - - Array cannot be null. - - - Dictionary cannot be null. - - - Key cannot be null. - Index was out of range. Must be non-negative and less than the size of the collection. diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveComparer.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveComparer.cs index a104d6518122ec..88c10aca600797 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveComparer.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveComparer.cs @@ -24,12 +24,8 @@ public CaseInsensitiveComparer() _compareInfo = CultureInfo.CurrentCulture.CompareInfo; } - public CaseInsensitiveComparer(CultureInfo culture) + public CaseInsensitiveComparer(CultureInfo culture!!) { - if (culture == null) - { - throw new ArgumentNullException(nameof(culture)); - } _compareInfo = culture.CompareInfo; } diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveHashCodeProvider.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveHashCodeProvider.cs index b121b442540a12..2d8cdeefa9c003 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveHashCodeProvider.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CaseInsensitiveHashCodeProvider.cs @@ -20,12 +20,8 @@ public CaseInsensitiveHashCodeProvider() _compareInfo = CultureInfo.CurrentCulture.CompareInfo; } - public CaseInsensitiveHashCodeProvider(CultureInfo culture) + public CaseInsensitiveHashCodeProvider(CultureInfo culture!!) { - if (culture == null) - { - throw new ArgumentNullException(nameof(culture)); - } _compareInfo = culture.CompareInfo; } @@ -34,13 +30,8 @@ public CaseInsensitiveHashCodeProvider(CultureInfo culture) public static CaseInsensitiveHashCodeProvider DefaultInvariant => s_invariantCaseInsensitiveHashCodeProvider ?? (s_invariantCaseInsensitiveHashCodeProvider = new CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture)); - public int GetHashCode(object obj) + public int GetHashCode(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - string? s = obj as string; return s != null ? _compareInfo.GetHashCode(s, CompareOptions.IgnoreCase) : diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CollectionBase.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CollectionBase.cs index 086be37456c27e..37a5bd2768f299 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/CollectionBase.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/CollectionBase.cs @@ -225,9 +225,8 @@ protected virtual void OnRemove(int index, object? value) { } - protected virtual void OnValidate(object value) + protected virtual void OnValidate(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); } protected virtual void OnSetComplete(int index, object? oldValue, object? newValue) diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/Queue.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/Queue.cs index 748729d3615ab7..617fc139e04007 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/Queue.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/Queue.cs @@ -66,11 +66,8 @@ public Queue(int capacity, float growFactor) // Fills a Queue with the elements of an ICollection. Uses the enumerator // to get each of the elements. // - public Queue(ICollection col) : this((col == null ? 32 : col.Count)) + public Queue(ICollection col!!) : this(col.Count) { - if (col == null) - throw new ArgumentNullException(nameof(col)); - IEnumerator en = col.GetEnumerator(); while (en.MoveNext()) Enqueue(en.Current); @@ -129,10 +126,8 @@ public virtual void Clear() // CopyTo copies a collection into an Array, starting at a particular // index into the array. // - public virtual void CopyTo(Array array, int index) + public virtual void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (index < 0) @@ -210,11 +205,8 @@ public virtual IEnumerator GetEnumerator() // class around the queue - the caller must not use references to the // original queue. // - public static Queue Synchronized(Queue queue) + public static Queue Synchronized(Queue queue!!) { - if (queue == null) - throw new ArgumentNullException(nameof(queue)); - return new SynchronizedQueue(queue); } @@ -490,11 +482,8 @@ internal sealed class QueueDebugView { private readonly Queue _queue; - public QueueDebugView(Queue queue) + public QueueDebugView(Queue queue!!) { - if (queue == null) - throw new ArgumentNullException(nameof(queue)); - _queue = queue; } diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/SortedList.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/SortedList.cs index db5465c70f7e64..aee2560164c0c9 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/SortedList.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/SortedList.cs @@ -151,12 +151,9 @@ public SortedList(IDictionary d) // by the keys of all entries in the given dictionary as well as keys // subsequently added to the sorted list. // - public SortedList(IDictionary d, IComparer? comparer) - : this(comparer, (d != null ? d.Count : 0)) + public SortedList(IDictionary d!!, IComparer? comparer) + : this(comparer, d.Count) { - if (d == null) - throw new ArgumentNullException(nameof(d), SR.ArgumentNull_Dictionary); - d.Keys.CopyTo(keys, 0); d.Values.CopyTo(values, 0); @@ -173,10 +170,8 @@ public SortedList(IDictionary d, IComparer? comparer) // Adds an entry with the given key and value to this sorted list. An // ArgumentException is thrown if the key is already present in the sorted list. // - public virtual void Add(object key, object? value) + public virtual void Add(object key!!, object? value) { - if (key == null) throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - int i = Array.BinarySearch(keys, 0, _size, key, comparer); if (i >= 0) throw new ArgumentException(SR.Format(SR.Argument_AddingDuplicate_OldAndNewKeys, GetKey(i), key)); @@ -334,10 +329,8 @@ public virtual bool ContainsValue(object? value) } // Copies the values in this SortedList to an array. - public virtual void CopyTo(Array array, int arrayIndex) + public virtual void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Array); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (arrayIndex < 0) @@ -465,7 +458,7 @@ public virtual object? this[object key] } set { - if (key == null) throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); + ArgumentNullException.ThrowIfNull(key); int i = Array.BinarySearch(keys, 0, _size, key, comparer); if (i >= 0) { @@ -484,10 +477,8 @@ public virtual object? this[object key] // the given key does not occur in this sorted list. Null is an invalid // key value. // - public virtual int IndexOfKey(object key) + public virtual int IndexOfKey(object key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); int ret = Array.BinarySearch(keys, 0, _size, key, comparer); return ret >= 0 ? ret : -1; } @@ -558,10 +549,8 @@ public virtual void SetByIndex(int index, object? value) // Returns a thread-safe SortedList. // - public static SortedList Synchronized(SortedList list) + public static SortedList Synchronized(SortedList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new SyncSortedList(list); } @@ -737,11 +726,8 @@ public override IList GetValueList() } } - public override int IndexOfKey(object key) + public override int IndexOfKey(object key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - lock (_root) { return _list.IndexOfKey(key); @@ -981,8 +967,7 @@ public IEnumerator GetEnumerator() public int IndexOf(object? key) { - if (key == null) - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); + ArgumentNullException.ThrowIfNull(key); int i = Array.BinarySearch(sortedList.keys, 0, sortedList.Count, key, sortedList.comparer); @@ -1104,13 +1089,8 @@ internal sealed class SortedListDebugView { private readonly SortedList _sortedList; - public SortedListDebugView(SortedList sortedList) + public SortedListDebugView(SortedList sortedList!!) { - if (sortedList == null) - { - throw new ArgumentNullException(nameof(sortedList)); - } - _sortedList = sortedList; } diff --git a/src/libraries/System.Collections.NonGeneric/src/System/Collections/Stack.cs b/src/libraries/System.Collections.NonGeneric/src/System/Collections/Stack.cs index 9d4f87df218bc5..1ecbd9907950da 100644 --- a/src/libraries/System.Collections.NonGeneric/src/System/Collections/Stack.cs +++ b/src/libraries/System.Collections.NonGeneric/src/System/Collections/Stack.cs @@ -53,11 +53,8 @@ public Stack(int initialCapacity) // Fills a Stack with the contents of a particular collection. The items are // pushed onto the stack in the same order they are read by the enumerator. // - public Stack(ICollection col) : this(col == null ? 32 : col.Count) + public Stack(ICollection col!!) : this(col.Count) { - if (col == null) - throw new ArgumentNullException(nameof(col)); - IEnumerator en = col.GetEnumerator(); while (en.MoveNext()) Push(en.Current); @@ -115,10 +112,8 @@ public virtual bool Contains(object? obj) } // Copies the stack into an array. - public virtual void CopyTo(Array array, int index) + public virtual void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (index < 0) @@ -191,11 +186,8 @@ public virtual void Push(object? obj) // Returns a synchronized Stack. // - public static Stack Synchronized(Stack stack) + public static Stack Synchronized(Stack stack!!) { - if (stack == null) - throw new ArgumentNullException(nameof(stack)); - return new SyncStack(stack); } @@ -388,11 +380,8 @@ internal sealed class StackDebugView { private readonly Stack _stack; - public StackDebugView(Stack stack) + public StackDebugView(Stack stack!!) { - if (stack == null) - throw new ArgumentNullException(nameof(stack)); - _stack = stack; } diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/HybridDictionary.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/HybridDictionary.cs index eaf4375b4abc4d..be3f840c898280 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/HybridDictionary.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/HybridDictionary.cs @@ -81,9 +81,9 @@ public object? this[object key] // (2) There is writer which is doing ChangeOver. However in that case // we should see the change to hashtable as well. // So it should work just fine. - else if (key == null) + else { - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(key); } return null; } @@ -287,9 +287,9 @@ public bool Contains(object key) { return cachedList.Contains(key); } - else if (key == null) + else { - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(key); } return false; } @@ -342,9 +342,9 @@ public void Remove(object key) { list.Remove(key); } - else if (key == null) + else { - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(key); } } } diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/ListDictionary.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/ListDictionary.cs index daa68a87bdb6c0..a16848cc7a3ff0 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/ListDictionary.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/ListDictionary.cs @@ -30,14 +30,10 @@ public ListDictionary(IComparer? comparer) this.comparer = comparer; } - public object? this[object key] + public object? this[object key!!] { get { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } DictionaryNode? node = head; if (comparer == null) { @@ -67,10 +63,6 @@ public object? this[object key] } set { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } version++; DictionaryNode? last = null; DictionaryNode? node; @@ -155,12 +147,8 @@ public ICollection Values } } - public void Add(object key, object? value) + public void Add(object key!!, object? value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } version++; DictionaryNode? last = null; @@ -195,12 +183,8 @@ public void Clear() version++; } - public bool Contains(object key) + public bool Contains(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } for (DictionaryNode? node = head; node != null; node = node.next) { object oldKey = node.key; @@ -212,10 +196,8 @@ public bool Contains(object key) return false; } - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum_Index); @@ -239,12 +221,8 @@ IEnumerator IEnumerable.GetEnumerator() return new NodeEnumerator(this); } - public void Remove(object key) + public void Remove(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } version++; DictionaryNode? last = null; DictionaryNode? node; @@ -373,10 +351,8 @@ public NodeKeyValueCollection(ListDictionary list, bool isKeys) _isKeys = isKeys; } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum_Index); diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameObjectCollectionBase.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameObjectCollectionBase.cs index 5810ddd3551eb5..b9ad8cd08c1825 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameObjectCollectionBase.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameObjectCollectionBase.cs @@ -363,13 +363,8 @@ public virtual int Count } } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_MultiRank, nameof(array)); @@ -434,13 +429,9 @@ bool ICollection.IsSynchronized /// Returns an array of the specified type containing /// all the values in the instance. /// - protected object?[] BaseGetAllValues(Type type) + protected object?[] BaseGetAllValues(Type type!!) { int n = _entriesArray.Count; - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } object?[] allValues = (object?[])Array.CreateInstance(type, n); for (int i = 0; i < n; i++) @@ -601,13 +592,8 @@ public int Count } } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_MultiRank, nameof(array)); diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameValueCollection.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameValueCollection.cs index 0b4d4f0a75400c..10999012096be1 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameValueCollection.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/NameValueCollection.cs @@ -76,14 +76,9 @@ public NameValueCollection(int capacity, IEqualityComparer? equalityComparer) /// using the default case-insensitive hash code provider and the default /// case-insensitive comparer. /// - public NameValueCollection(int capacity, NameValueCollection col) - : base(capacity, (col != null ? col.Comparer : null)) + public NameValueCollection(int capacity, NameValueCollection col!!) + : base(capacity, col.Comparer) { - if (col == null) - { - throw new ArgumentNullException(nameof(col)); - } - this.Comparer = col.Comparer; Add(col); } @@ -157,13 +152,8 @@ protected void InvalidateCachedArrays() /// /// Copies the entries in the specified to the current . /// - public void Add(NameValueCollection c) + public void Add(NameValueCollection c!!) { - if (c == null) - { - throw new ArgumentNullException(nameof(c)); - } - InvalidateCachedArrays(); int n = c.Count; @@ -198,13 +188,8 @@ public virtual void Clear() BaseClear(); } - public void CopyTo(Array dest, int index) + public void CopyTo(Array dest!!, int index) { - if (dest == null) - { - throw new ArgumentNullException(nameof(dest)); - } - if (dest.Rank != 1) { throw new ArgumentException(SR.Arg_MultiRank, nameof(dest)); diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/OrderedDictionary.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/OrderedDictionary.cs index 0aacb55866cb11..0be13d70d9f07f 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/OrderedDictionary.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/OrderedDictionary.cs @@ -260,12 +260,8 @@ public OrderedDictionary AsReadOnly() /// /// Returns true if the key exists in the table, false otherwise. /// - public bool Contains(object key) + public bool Contains(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } if (_objectsTable == null) { return false; @@ -357,10 +353,7 @@ public void Remove(object key) { throw new NotSupportedException(SR.OrderedDictionary_ReadOnly); } - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } + ArgumentNullException.ThrowIfNull(key); int index = IndexOfKey(key); if (index < 0) @@ -391,13 +384,8 @@ IEnumerator IEnumerable.GetEnumerator() #endregion #region ISerializable implementation - public virtual void GetObjectData(SerializationInfo info, StreamingContext context) + public virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue(KeyComparerName, _comparer, typeof(IEqualityComparer)); info.AddValue(ReadOnlyName, _readOnly); info.AddValue(InitCapacityName, _initialCapacity); @@ -566,10 +554,8 @@ public OrderedDictionaryKeyValueCollection(ArrayList array) private bool IsKeys => _objectsTable is not null; - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum_Index); foreach (object? o in _objects) diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringCollection.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringCollection.cs index 0ffc7ac0822ce7..d92f78a5515ef6 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringCollection.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringCollection.cs @@ -69,12 +69,8 @@ public int Add(string? value) /// /// Copies the elements of a string array to the end of the . /// - public void AddRange(string[] value) + public void AddRange(string[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } data.AddRange(value); } diff --git a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringDictionary.cs b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringDictionary.cs index 436514bf1773eb..103a1ffd6926be 100644 --- a/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringDictionary.cs +++ b/src/libraries/System.Collections.Specialized/src/System/Collections/Specialized/StringDictionary.cs @@ -62,24 +62,14 @@ public virtual bool IsSynchronized /// /// Gets or sets the value associated with the specified key. /// - public virtual string? this[string key] + public virtual string? this[string key!!] { get { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return (string?)contents[key.ToLowerInvariant()]; } set { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - contents[key.ToLowerInvariant()] = value; } } @@ -121,13 +111,8 @@ public virtual ICollection Values /// /// Adds an entry with the specified key and value into the StringDictionary. /// - public virtual void Add(string key, string? value) + public virtual void Add(string key!!, string? value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - contents.Add(key.ToLowerInvariant(), value); } @@ -142,13 +127,8 @@ public virtual void Clear() /// /// Determines if the string dictionary contains a specific key /// - public virtual bool ContainsKey(string key) + public virtual bool ContainsKey(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return contents.ContainsKey(key.ToLowerInvariant()); } @@ -180,13 +160,8 @@ public virtual IEnumerator GetEnumerator() /// /// Removes the entry with the specified key from the string dictionary. /// - public virtual void Remove(string key) + public virtual void Remove(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - contents.Remove(key.ToLowerInvariant()); } } diff --git a/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/CaseInsensitiveEqualityComparer.cs b/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/CaseInsensitiveEqualityComparer.cs index 288a6c94c944c7..b299ec73be9f02 100644 --- a/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/CaseInsensitiveEqualityComparer.cs +++ b/src/libraries/System.Collections.Specialized/tests/OrderedDictionary/CaseInsensitiveEqualityComparer.cs @@ -25,13 +25,8 @@ internal sealed class CaseInsensitiveEqualityComparer : IEqualityComparer return x.Equals(y); } - public int GetHashCode(object obj) + public int GetHashCode(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - string s = obj as string; if (s != null) { diff --git a/src/libraries/System.Collections/src/System/Collections/BitArray.cs b/src/libraries/System.Collections/src/System/Collections/BitArray.cs index 925f175f7fcf8f..be3472ec600033 100644 --- a/src/libraries/System.Collections/src/System/Collections/BitArray.cs +++ b/src/libraries/System.Collections/src/System/Collections/BitArray.cs @@ -74,13 +74,8 @@ public BitArray(int length, bool defaultValue) ** ** Exceptions: ArgumentException if bytes == null. =========================================================================*/ - public BitArray(byte[] bytes) + public BitArray(byte[] bytes!!) { - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes)); - } - // this value is chosen to prevent overflow when computing m_length. // m_length is of type int32 and is exposed as a property, so // type of m_length can't be changed to accommodate. @@ -126,13 +121,8 @@ public BitArray(byte[] bytes) private const uint Vector128IntCount = 4; private const uint Vector256ByteCount = 32; private const uint Vector256IntCount = 8; - public unsafe BitArray(bool[] values) + public unsafe BitArray(bool[] values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - m_array = new int[GetInt32ArrayLengthFromBitLength(values.Length)]; m_length = values.Length; @@ -197,13 +187,8 @@ public unsafe BitArray(bool[] values) ** ** Exceptions: ArgumentException if values == null. =========================================================================*/ - public BitArray(int[] values) + public BitArray(int[] values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - // this value is chosen to prevent overflow when computing m_length if (values.Length > int.MaxValue / BitsPerInt32) { @@ -222,13 +207,8 @@ public BitArray(int[] values) ** ** Exceptions: ArgumentException if bits == null. =========================================================================*/ - public BitArray(BitArray bits) + public BitArray(BitArray bits!!) { - if (bits == null) - { - throw new ArgumentNullException(nameof(bits)); - } - int arrayLength = GetInt32ArrayLengthFromBitLength(bits.m_length); m_array = new int[arrayLength]; @@ -321,11 +301,8 @@ public void SetAll(bool value) ** Exceptions: ArgumentException if value == null or ** value.Length != this.Length. =========================================================================*/ - public unsafe BitArray And(BitArray value) + public unsafe BitArray And(BitArray value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // This method uses unsafe code to manipulate data in the BitArrays. To avoid issues with // buggy code concurrently mutating these instances in a way that could cause memory corruption, // we snapshot the arrays from both and then operate only on those snapshots, while also validating @@ -388,11 +365,8 @@ public unsafe BitArray And(BitArray value) ** Exceptions: ArgumentException if value == null or ** value.Length != this.Length. =========================================================================*/ - public unsafe BitArray Or(BitArray value) + public unsafe BitArray Or(BitArray value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // This method uses unsafe code to manipulate data in the BitArrays. To avoid issues with // buggy code concurrently mutating these instances in a way that could cause memory corruption, // we snapshot the arrays from both and then operate only on those snapshots, while also validating @@ -455,11 +429,8 @@ public unsafe BitArray Or(BitArray value) ** Exceptions: ArgumentException if value == null or ** value.Length != this.Length. =========================================================================*/ - public unsafe BitArray Xor(BitArray value) + public unsafe BitArray Xor(BitArray value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // This method uses unsafe code to manipulate data in the BitArrays. To avoid issues with // buggy code concurrently mutating these instances in a way that could cause memory corruption, // we snapshot the arrays from both and then operate only on those snapshots, while also validating @@ -737,11 +708,8 @@ public int Length } } - public unsafe void CopyTo(Array array, int index) + public unsafe void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); - if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -883,7 +851,7 @@ public unsafe void CopyTo(Array array, int index) } } } - else if (AdvSimd.IsSupported) + else if (AdvSimd.Arm64.IsSupported) { Vector128 ones = Vector128.Create((byte)1); Vector128 bitMask128 = BitConverter.IsLittleEndian ? @@ -917,12 +885,12 @@ public unsafe void CopyTo(Array array, int index) Vector128 shuffledLower = AdvSimd.Arm64.ZipLow(vector, vector); Vector128 extractedLower = AdvSimd.And(shuffledLower, bitMask128); Vector128 normalizedLower = AdvSimd.Min(extractedLower, ones); - AdvSimd.Store((byte*)destination + i, normalizedLower); Vector128 shuffledHigher = AdvSimd.Arm64.ZipHigh(vector, vector); Vector128 extractedHigher = AdvSimd.And(shuffledHigher, bitMask128); Vector128 normalizedHigher = AdvSimd.Min(extractedHigher, ones); - AdvSimd.Store((byte*)destination + i + Vector128.Count, normalizedHigher); + + AdvSimd.Arm64.StorePair((byte*)destination + i, normalizedLower, normalizedHigher); } } } diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs b/src/libraries/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs index 4f5c545603dbbe..ce35e1b9b8c961 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/CollectionExtensions.cs @@ -13,24 +13,14 @@ public static class CollectionExtensions return dictionary.GetValueOrDefault(key, default!); } - public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key, TValue defaultValue) + public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary!!, TKey key, TValue defaultValue) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - TValue? value; return dictionary.TryGetValue(key, out value) ? value : defaultValue; } - public static bool TryAdd(this IDictionary dictionary, TKey key, TValue value) + public static bool TryAdd(this IDictionary dictionary!!, TKey key, TValue value) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - if (!dictionary.ContainsKey(key)) { dictionary.Add(key, value); @@ -40,13 +30,8 @@ public static bool TryAdd(this IDictionary dictionar return false; } - public static bool Remove(this IDictionary dictionary, TKey key, [MaybeNullWhen(false)] out TValue value) + public static bool Remove(this IDictionary dictionary!!, TKey key, [MaybeNullWhen(false)] out TValue value) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - if (dictionary.TryGetValue(key, out value)) { dictionary.Remove(key); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/LinkedList.cs b/src/libraries/System.Collections/src/System/Collections/Generic/LinkedList.cs index 00431d4eeb47b0..acb0f425c76a35 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/LinkedList.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/LinkedList.cs @@ -28,13 +28,8 @@ public LinkedList() { } - public LinkedList(IEnumerable collection) + public LinkedList(IEnumerable collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - foreach (T item in collection) { AddLast(item); @@ -191,13 +186,8 @@ public bool Contains(T value) return Find(value) != null; } - public void CopyTo(T[] array, int index) + public void CopyTo(T[] array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -331,15 +321,11 @@ public void RemoveLast() InternalRemoveNode(head.prev!); } - public virtual void GetObjectData(SerializationInfo info, StreamingContext context) + public virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { // Customized serialization for LinkedList. // We need to do this because it will be too expensive to Serialize each node. // This will give us the flexiblility to change internal implementation freely in future. - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } info.AddValue(VersionName, version); info.AddValue(CountName, count); // this is the length of the bucket array. @@ -427,26 +413,16 @@ internal void InternalRemoveNode(LinkedListNode node) version++; } - internal void ValidateNewNode(LinkedListNode node) + internal void ValidateNewNode(LinkedListNode node!!) { - if (node == null) - { - throw new ArgumentNullException(nameof(node)); - } - if (node.list != null) { throw new InvalidOperationException(SR.LinkedListNodeIsAttached); } } - internal void ValidateNode(LinkedListNode node) + internal void ValidateNode(LinkedListNode node!!) { - if (node == null) - { - throw new ArgumentNullException(nameof(node)); - } - if (node.list != this) { throw new InvalidOperationException(SR.ExternalLinkedListNode); @@ -460,13 +436,8 @@ bool ICollection.IsSynchronized object ICollection.SyncRoot => this; - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueue.cs b/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueue.cs index a9fbb3f8375cae..b2937c17c3901d 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueue.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueue.cs @@ -157,13 +157,8 @@ public PriorityQueue(IEnumerable<(TElement Element, TPriority Priority)> items) /// Constructs the heap using a heapify operation, /// which is generally faster than enqueuing individual elements sequentially. /// - public PriorityQueue(IEnumerable<(TElement Element, TPriority Priority)> items, IComparer? comparer) + public PriorityQueue(IEnumerable<(TElement Element, TPriority Priority)> items!!, IComparer? comparer) { - if (items is null) - { - throw new ArgumentNullException(nameof(items)); - } - _nodes = EnumerableHelpers.ToArray(items, out _size); _comparer = InitializeComparer(comparer); @@ -351,13 +346,8 @@ public TElement EnqueueDequeue(TElement element, TPriority priority) /// /// The specified argument was . /// - public void EnqueueRange(IEnumerable<(TElement Element, TPriority Priority)> items) + public void EnqueueRange(IEnumerable<(TElement Element, TPriority Priority)> items!!) { - if (items is null) - { - throw new ArgumentNullException(nameof(items)); - } - int count = 0; var collection = items as ICollection<(TElement Element, TPriority Priority)>; if (collection is not null && (count = collection.Count) > _nodes.Length - _size) @@ -417,13 +407,8 @@ public void EnqueueRange(IEnumerable<(TElement Element, TPriority Priority)> ite /// /// The specified argument was . /// - public void EnqueueRange(IEnumerable elements, TPriority priority) + public void EnqueueRange(IEnumerable elements!!, TPriority priority) { - if (elements is null) - { - throw new ArgumentNullException(nameof(elements)); - } - int count; if (elements is ICollection<(TElement Element, TPriority Priority)> collection && (count = collection.Count) > _nodes.Length - _size) @@ -815,13 +800,8 @@ public sealed class UnorderedItemsCollection : IReadOnlyCollection<(TElement Ele object ICollection.SyncRoot => this; bool ICollection.IsSynchronized => false; - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array is null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueueDebugView.cs b/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueueDebugView.cs index 0a99e8c2b534f6..b0799caa63ab5b 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueueDebugView.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/PriorityQueueDebugView.cs @@ -10,9 +10,9 @@ internal sealed class PriorityQueueDebugView private readonly PriorityQueue _queue; private readonly bool _sort; - public PriorityQueueDebugView(PriorityQueue queue) + public PriorityQueueDebugView(PriorityQueue queue!!) { - _queue = queue ?? throw new ArgumentNullException(nameof(queue)); + _queue = queue; _sort = true; } diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/SortedDictionary.cs b/src/libraries/System.Collections/src/System/Collections/Generic/SortedDictionary.cs index c28fa0123728c8..007eb4c74b257e 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/SortedDictionary.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/SortedDictionary.cs @@ -28,13 +28,8 @@ public SortedDictionary(IDictionary dictionary) : this(dictionary, { } - public SortedDictionary(IDictionary dictionary, IComparer? comparer) + public SortedDictionary(IDictionary dictionary!!, IComparer? comparer) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - var keyValuePairComparer = new KeyValuePairComparer(comparer); if (dictionary is SortedDictionary sortedDictionary && @@ -209,12 +204,8 @@ IEnumerable IReadOnlyDictionary.Values } } - public void Add(TKey key, TValue value) + public void Add(TKey key!!, TValue value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } _set.Add(new KeyValuePair(key, value)); } @@ -223,13 +214,8 @@ public void Clear() _set.Clear(); } - public bool ContainsKey(TKey key) + public bool ContainsKey(TKey key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return _set.Contains(new KeyValuePair(key, default(TValue)!)); } @@ -279,23 +265,13 @@ IEnumerator> IEnumerable>. return new Enumerator(this, Enumerator.KeyValuePair); } - public bool Remove(TKey key) + public bool Remove(TKey key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return _set.Remove(new KeyValuePair(key, default(TValue)!)); } - public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) + public bool TryGetValue(TKey key!!, [MaybeNullWhen(false)] out TValue value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - TreeSet>.Node? node = _set.FindNode(new KeyValuePair(key, default(TValue)!)); if (node == null) { @@ -375,16 +351,13 @@ ICollection IDictionary.Values } } - void IDictionary.Add(object key, object? value) + void IDictionary.Add(object key!!, object? value) { - if (key == null) + if (default(TValue) != null) { - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(value); } - if (value == null && default(TValue) != null) - throw new ArgumentNullException(nameof(value)); - try { TKey tempKey = (TKey)key; @@ -413,13 +386,8 @@ bool IDictionary.Contains(object key) return false; } - private static bool IsCompatibleKey(object key) + private static bool IsCompatibleKey(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return (key is TKey); } @@ -568,12 +536,8 @@ public sealed class KeyCollection : ICollection, ICollection, IReadOnlyCol { private readonly SortedDictionary _dictionary; - public KeyCollection(SortedDictionary dictionary) + public KeyCollection(SortedDictionary dictionary!!) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } _dictionary = dictionary; } @@ -592,13 +556,8 @@ IEnumerator IEnumerable.GetEnumerator() return new Enumerator(_dictionary); } - public void CopyTo(TKey[] array, int index) + public void CopyTo(TKey[] array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -612,13 +571,8 @@ public void CopyTo(TKey[] array, int index) _dictionary._set.InOrderTreeWalk(delegate (TreeSet>.Node node) { array[index++] = node.Item.Key; return true; }); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); @@ -750,12 +704,8 @@ public sealed class ValueCollection : ICollection, ICollection, IReadOnl { private readonly SortedDictionary _dictionary; - public ValueCollection(SortedDictionary dictionary) + public ValueCollection(SortedDictionary dictionary!!) { - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } _dictionary = dictionary; } @@ -774,13 +724,8 @@ IEnumerator IEnumerable.GetEnumerator() return new Enumerator(_dictionary); } - public void CopyTo(TValue[] array, int index) + public void CopyTo(TValue[] array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -794,13 +739,8 @@ public void CopyTo(TValue[] array, int index) _dictionary._set.InOrderTreeWalk(delegate (TreeSet>.Node node) { array[index++] = node.Item.Value; return true; }); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/SortedList.cs b/src/libraries/System.Collections/src/System/Collections/Generic/SortedList.cs index 1a96e7c79d18e3..5037964ae0342c 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/SortedList.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/SortedList.cs @@ -147,12 +147,9 @@ public SortedList(IDictionary dictionary) // by the keys of all entries in the given dictionary as well as keys // subsequently added to the sorted list. // - public SortedList(IDictionary dictionary, IComparer? comparer) - : this((dictionary != null ? dictionary.Count : 0), comparer) + public SortedList(IDictionary dictionary!!, IComparer? comparer) + : this(dictionary.Count, comparer) { - if (dictionary == null) - throw new ArgumentNullException(nameof(dictionary)); - int count = dictionary.Count; if (count != 0) { @@ -180,9 +177,8 @@ public SortedList(IDictionary dictionary, IComparer? compare // Adds an entry with the given key and value to this sorted list. An // ArgumentException is thrown if the key is already present in the sorted list. // - public void Add(TKey key, TValue value) + public void Add(TKey key!!, TValue value) { - if (key == null) throw new ArgumentNullException(nameof(key)); int i = Array.BinarySearch(keys, 0, _size, key, comparer); if (i >= 0) throw new ArgumentException(SR.Format(SR.Argument_AddingDuplicate, key), nameof(key)); @@ -265,11 +261,8 @@ public IComparer Comparer } } - void IDictionary.Add(object key, object? value) + void IDictionary.Add(object key!!, object? value) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (value == null && default(TValue) != null) // null is an invalid value for Value types throw new ArgumentNullException(nameof(value)); @@ -442,13 +435,8 @@ public bool ContainsValue(TValue value) } // Copies the values in this SortedList to an array. - void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex) + void ICollection>.CopyTo(KeyValuePair[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (arrayIndex < 0 || arrayIndex > array.Length) { throw new ArgumentOutOfRangeException(nameof(arrayIndex), arrayIndex, SR.ArgumentOutOfRange_Index); @@ -466,13 +454,8 @@ void ICollection>.CopyTo(KeyValuePair[] } } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); @@ -649,10 +632,8 @@ public TValue this[TKey key] // size is the size of this sorted list. The returned value is -1 if // the given key does not occur in this sorted list. Null is an invalid // key value. - public int IndexOfKey(TKey key) + public int IndexOfKey(TKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); int ret = Array.BinarySearch(keys, 0, _size, key, comparer); return ret >= 0 ? ret : -1; } @@ -754,13 +735,8 @@ public void TrimExcess() } } - private static bool IsCompatibleKey(object key) + private static bool IsCompatibleKey(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return (key is TKey); } @@ -1109,11 +1085,8 @@ IEnumerator IEnumerable.GetEnumerator() return new SortedListKeyEnumerator(_dict); } - public int IndexOf(TKey key) + public int IndexOf(TKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - int i = Array.BinarySearch(_dict.keys, 0, _dict.Count, key, _dict.comparer); if (i >= 0) return i; diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/SortedSet.cs b/src/libraries/System.Collections/src/System/Collections/Generic/SortedSet.cs index a0de9bd1dc8f04..a076ecf4d632fb 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/SortedSet.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/SortedSet.cs @@ -80,14 +80,9 @@ public SortedSet(IComparer? comparer) public SortedSet(IEnumerable collection) : this(collection, Comparer.Default) { } - public SortedSet(IEnumerable collection, IComparer? comparer) + public SortedSet(IEnumerable collection!!, IComparer? comparer) : this(comparer) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - // These are explicit type checks in the mold of HashSet. It would have worked better with // something like an ISorted interface. (We could make this work for SortedList.Keys, etc.) SortedSet? sortedSet = collection as SortedSet; @@ -510,13 +505,8 @@ public virtual void Clear() public void CopyTo(T[] array, int index) => CopyTo(array, index, Count); - public void CopyTo(T[] array, int index, int count) + public void CopyTo(T[] array!!, int index, int count) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), index, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -546,13 +536,8 @@ public void CopyTo(T[] array, int index, int count) }); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); @@ -858,13 +843,8 @@ private bool HasEqualComparer(SortedSet other) #region ISet members - public void UnionWith(IEnumerable other) + public void UnionWith(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - SortedSet? asSorted = other as SortedSet; TreeSubSet? treeSubset = this as TreeSubSet; @@ -1001,13 +981,8 @@ public void UnionWith(IEnumerable other) return root; } - public virtual void IntersectWith(IEnumerable other) + public virtual void IntersectWith(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (Count == 0) return; @@ -1086,13 +1061,8 @@ internal virtual void IntersectWithEnumerable(IEnumerable other) } } - public void ExceptWith(IEnumerable other) + public void ExceptWith(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (count == 0) return; @@ -1127,13 +1097,8 @@ public void ExceptWith(IEnumerable other) } } - public void SymmetricExceptWith(IEnumerable other) + public void SymmetricExceptWith(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (Count == 0) { UnionWith(other); @@ -1197,13 +1162,8 @@ private void SymmetricExceptWithSameComparer(T[] other, int count) } } - public bool IsSubsetOf(IEnumerable other) + public bool IsSubsetOf(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (Count == 0) { return true; @@ -1235,13 +1195,8 @@ private bool IsSubsetOfSortedSetWithSameComparer(SortedSet asSorted) return true; } - public bool IsProperSubsetOf(IEnumerable other) + public bool IsProperSubsetOf(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (other is ICollection c) { if (Count == 0) @@ -1262,13 +1217,8 @@ public bool IsProperSubsetOf(IEnumerable other) return result.UniqueCount == Count && result.UnfoundCount > 0; } - public bool IsSupersetOf(IEnumerable other) + public bool IsSupersetOf(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (other is ICollection c && c.Count == 0) return true; @@ -1292,13 +1242,8 @@ public bool IsSupersetOf(IEnumerable other) return ContainsAllElements(other); } - public bool IsProperSupersetOf(IEnumerable other) + public bool IsProperSupersetOf(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (Count == 0) return false; @@ -1327,13 +1272,8 @@ public bool IsProperSupersetOf(IEnumerable other) return result.UniqueCount < Count && result.UnfoundCount == 0; } - public bool SetEquals(IEnumerable other) + public bool SetEquals(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - SortedSet? asSorted = other as SortedSet; if (asSorted != null && HasEqualComparer(asSorted)) { @@ -1358,13 +1298,8 @@ public bool SetEquals(IEnumerable other) return result.UniqueCount == Count && result.UnfoundCount == 0; } - public bool Overlaps(IEnumerable other) + public bool Overlaps(IEnumerable other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (Count == 0) return false; @@ -1470,12 +1405,8 @@ private unsafe ElementCount CheckUniqueAndUnfoundElements(IEnumerable other, return result; } - public int RemoveWhere(Predicate match) + public int RemoveWhere(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } List matches = new List(this.Count); BreadthFirstTreeWalk(n => @@ -1577,13 +1508,8 @@ internal virtual bool versionUpToDate() void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) => GetObjectData(info, context); - protected virtual void GetObjectData(SerializationInfo info, StreamingContext context) + protected virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue(CountName, count); // This is the length of the bucket array. info.AddValue(ComparerName, comparer, typeof(IComparer)); info.AddValue(VersionName, version); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/Stack.cs b/src/libraries/System.Collections/src/System/Collections/Generic/Stack.cs index 76e9af5b0ca380..1855c01248540b 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/Stack.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/Stack.cs @@ -48,10 +48,8 @@ public Stack(int capacity) // Fills a Stack with the contents of a particular collection. The items are // pushed onto the stack in the same order they are read by the enumerator. - public Stack(IEnumerable collection) + public Stack(IEnumerable collection!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); _array = EnumerableHelpers.ToArray(collection, out _size); } @@ -94,13 +92,8 @@ public bool Contains(T item) } // Copies the stack into an array. - public void CopyTo(T[] array, int arrayIndex) + public void CopyTo(T[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (arrayIndex < 0 || arrayIndex > array.Length) { throw new ArgumentOutOfRangeException(nameof(arrayIndex), arrayIndex, SR.ArgumentOutOfRange_Index); @@ -120,13 +113,8 @@ public void CopyTo(T[] array, int arrayIndex) } } - void ICollection.CopyTo(Array array, int arrayIndex) + void ICollection.CopyTo(Array array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Collections/src/System/Collections/Generic/StackDebugView.cs b/src/libraries/System.Collections/src/System/Collections/Generic/StackDebugView.cs index 92709a55ca6419..bbb5ed33c93b78 100644 --- a/src/libraries/System.Collections/src/System/Collections/Generic/StackDebugView.cs +++ b/src/libraries/System.Collections/src/System/Collections/Generic/StackDebugView.cs @@ -9,13 +9,8 @@ internal sealed class StackDebugView { private readonly Stack _stack; - public StackDebugView(Stack stack) + public StackDebugView(Stack stack!!) { - if (stack == null) - { - throw new ArgumentNullException(nameof(stack)); - } - _stack = stack; } diff --git a/src/libraries/System.Collections/tests/System.Collections.Tests.csproj b/src/libraries/System.Collections/tests/System.Collections.Tests.csproj index d681aafe746bd2..6dee6b92c77644 100644 --- a/src/libraries/System.Collections/tests/System.Collections.Tests.csproj +++ b/src/libraries/System.Collections/tests/System.Collections.Tests.csproj @@ -37,6 +37,8 @@ Link="Common\System\Collections\TestBase.Generic.Tests.cs" /> + The value of associatedMetadataType is null. public AssociatedMetadataTypeTypeDescriptionProvider( Type type, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type associatedMetadataType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type associatedMetadataType!!) : this(type) { - if (associatedMetadataType == null) - { - throw new ArgumentNullException(nameof(associatedMetadataType)); - } - _associatedMetadataType = associatedMetadataType; } diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs index 4e3b82cf4fa6ad..5f1fe3536c6338 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/CompareAttribute.cs @@ -12,9 +12,9 @@ namespace System.ComponentModel.DataAnnotations public class CompareAttribute : ValidationAttribute { [RequiresUnreferencedCode("The property referenced by 'otherProperty' may be trimmed. Ensure it is preserved.")] - public CompareAttribute(string otherProperty) : base(SR.CompareAttribute_MustMatch) + public CompareAttribute(string otherProperty!!) : base(SR.CompareAttribute_MustMatch) { - OtherProperty = otherProperty ?? throw new ArgumentNullException(nameof(otherProperty)); + OtherProperty = otherProperty; } public string OtherProperty { get; } diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttribute.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttribute.cs index 41fad8c6539971..4314563f23aba3 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttribute.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttribute.cs @@ -406,13 +406,8 @@ public virtual bool IsValid(object? value) /// is thrown when /// has not been implemented by a derived class. /// - public ValidationResult? GetValidationResult(object? value, ValidationContext validationContext) + public ValidationResult? GetValidationResult(object? value, ValidationContext validationContext!!) { - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } - var result = IsValid(value, validationContext); // If validation fails, we want to ensure we have a ValidationResult that guarantees it has an ErrorMessage @@ -476,13 +471,8 @@ public void Validate(object? value, string name) /// is thrown when /// has not been implemented by a derived class. /// - public void Validate(object? value, ValidationContext validationContext) + public void Validate(object? value, ValidationContext validationContext!!) { - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } - ValidationResult? result = GetValidationResult(value, validationContext); if (result != null) diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttributeStore.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttributeStore.cs index 650a114e5af50d..a086b9cfd1e57d 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttributeStore.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationAttributeStore.cs @@ -135,12 +135,8 @@ private TypeStoreItem GetTypeStoreItem([DynamicallyAccessedMembers(TypeStoreItem /// Throws an ArgumentException of the validation context is null /// /// The context to check - private static void EnsureValidationContext(ValidationContext validationContext) + private static void EnsureValidationContext(ValidationContext validationContext!!) { - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } } internal static bool IsPublic(PropertyInfo p) => diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationContext.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationContext.cs index 836bf43ac9f77a..58163389f9a4f0 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationContext.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationContext.cs @@ -84,13 +84,8 @@ public ValidationContext(object instance, IDictionary? items) /// /// When is null [RequiresUnreferencedCode(InstanceTypeNotStaticallyDiscovered)] - public ValidationContext(object instance, IServiceProvider? serviceProvider, IDictionary? items) + public ValidationContext(object instance!!, IServiceProvider? serviceProvider, IDictionary? items) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - if (serviceProvider != null) { IServiceProvider localServiceProvider = serviceProvider; diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationResult.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationResult.cs index fa26fd83bd1816..004d66ca0fde8a 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationResult.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/ValidationResult.cs @@ -65,13 +65,8 @@ public ValidationResult(string? errorMessage, IEnumerable? memberNames) /// /// The validation result. /// The is null. - protected ValidationResult(ValidationResult validationResult) + protected ValidationResult(ValidationResult validationResult!!) { - if (validationResult == null) - { - throw new ArgumentNullException(nameof(validationResult)); - } - ErrorMessage = validationResult.ErrorMessage; MemberNames = validationResult.MemberNames; } diff --git a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs index 3e409406079949..53ce73aa522a13 100644 --- a/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs +++ b/src/libraries/System.ComponentModel.Annotations/src/System/ComponentModel/DataAnnotations/Validator.cs @@ -130,14 +130,9 @@ public static bool TryValidateObject( /// on . /// [RequiresUnreferencedCode(ValidationContext.InstanceTypeNotStaticallyDiscovered)] - public static bool TryValidateObject(object instance, ValidationContext validationContext, + public static bool TryValidateObject(object instance!!, ValidationContext validationContext, ICollection? validationResults, bool validateAllProperties) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - if (validationContext != null && instance != validationContext.ObjectInstance) { throw new ArgumentException(SR.Validator_InstanceMustMatchValidationContextInstance, nameof(instance)); @@ -186,10 +181,8 @@ public static bool TryValidateObject(object instance, ValidationContext validati /// /// true if the object is valid, false if any validation errors are encountered. public static bool TryValidateValue(object value, ValidationContext validationContext, - ICollection? validationResults, IEnumerable validationAttributes) + ICollection? validationResults, IEnumerable validationAttributes!!) { - ArgumentNullException.ThrowIfNull(validationAttributes); - var result = true; var breakOnFirstError = validationResults == null; @@ -276,17 +269,9 @@ public static void ValidateObject(object instance, ValidationContext validationC /// /// When is found to be invalid. [RequiresUnreferencedCode(ValidationContext.InstanceTypeNotStaticallyDiscovered)] - public static void ValidateObject(object instance, ValidationContext validationContext, + public static void ValidateObject(object instance!!, ValidationContext validationContext!!, bool validateAllProperties) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } if (instance != validationContext.ObjectInstance) { throw new ArgumentException(SR.Validator_InstanceMustMatchValidationContextInstance, nameof(instance)); @@ -316,12 +301,9 @@ public static void ValidateObject(object instance, ValidationContext validationC /// The list of s to validate against this instance. /// When is null. /// When is found to be invalid. - public static void ValidateValue(object value, ValidationContext validationContext, - IEnumerable validationAttributes) + public static void ValidateValue(object value, ValidationContext validationContext!!, + IEnumerable validationAttributes!!) { - ArgumentNullException.ThrowIfNull(validationContext); - ArgumentNullException.ThrowIfNull(validationAttributes); - List errors = GetValidationErrors(value, validationContext, validationAttributes, false); if (errors.Count > 0) { @@ -409,15 +391,10 @@ private static void EnsureValidPropertyType(string propertyName, Type propertyTy /// [RequiresUnreferencedCode(ValidationContext.InstanceTypeNotStaticallyDiscovered)] private static List GetObjectValidationErrors(object instance, - ValidationContext validationContext, bool validateAllProperties, bool breakOnFirstError) + ValidationContext validationContext!!, bool validateAllProperties, bool breakOnFirstError) { Debug.Assert(instance != null); - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } - // Step 1: Validate the object properties' validation attributes var errors = new List(); errors.AddRange(GetObjectPropertyValidationErrors(instance, validationContext, validateAllProperties, @@ -563,13 +540,8 @@ private static IEnumerable GetObjectPropertyValidationErrors(ob /// The collection of validation errors. /// When is null. private static List GetValidationErrors(object? value, - ValidationContext validationContext, IEnumerable attributes, bool breakOnFirstError) + ValidationContext validationContext!!, IEnumerable attributes, bool breakOnFirstError) { - if (validationContext == null) - { - throw new ArgumentNullException(nameof(validationContext)); - } - var errors = new List(); ValidationError? validationError; diff --git a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilder.cs b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilder.cs index 2d9b046570ecbc..854321cddaaa8d 100644 --- a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilder.cs +++ b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilder.cs @@ -98,90 +98,64 @@ public PartBuilder ExportInterfaces() return ExportInterfaces(t => true, null); } - public PartBuilder ExportInterfaces(Predicate interfaceFilter, + public PartBuilder ExportInterfaces(Predicate interfaceFilter!!, Action exportConfiguration) { - if (interfaceFilter == null) - throw new ArgumentNullException(nameof(interfaceFilter)); _interfaceExports.Add(Tuple.Create(interfaceFilter, exportConfiguration)); return this; } // Choose a property to export then configure it - public PartBuilder ExportProperties(Predicate propertyFilter) + public PartBuilder ExportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - return ExportProperties(propertyFilter, null); } - public PartBuilder ExportProperties(Predicate propertyFilter, + public PartBuilder ExportProperties(Predicate propertyFilter!!, Action exportConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - _propertyExports.Add(Tuple.Create(propertyFilter, exportConfiguration, default(Type))); return this; } // Choose a property to export then configure it - public PartBuilder ExportProperties(Predicate propertyFilter) + public PartBuilder ExportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - return ExportProperties(propertyFilter, null); } - public PartBuilder ExportProperties(Predicate propertyFilter, + public PartBuilder ExportProperties(Predicate propertyFilter!!, Action exportConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - _propertyExports.Add(Tuple.Create(propertyFilter, exportConfiguration, typeof(T))); return this; } // Choose a property to export then configure it - public PartBuilder ImportProperties(Predicate propertyFilter) + public PartBuilder ImportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - return ImportProperties(propertyFilter, null); } - public PartBuilder ImportProperties(Predicate propertyFilter, + public PartBuilder ImportProperties(Predicate propertyFilter!!, Action importConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - _propertyImports.Add(Tuple.Create(propertyFilter, importConfiguration, default(Type))); return this; } // Choose a property to export then configure it - public PartBuilder ImportProperties(Predicate propertyFilter) + public PartBuilder ImportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - return ImportProperties(propertyFilter, null); } - public PartBuilder ImportProperties(Predicate propertyFilter, + public PartBuilder ImportProperties(Predicate propertyFilter!!, Action importConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - _propertyImports.Add(Tuple.Create(propertyFilter, importConfiguration, typeof(T))); return this; } diff --git a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilderOfT.cs b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilderOfT.cs index a85c31ef87f605..657c5853f72bb6 100644 --- a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilderOfT.cs +++ b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/PartBuilderOfT.cs @@ -39,11 +39,8 @@ public void ConfigureExport(PropertyInfo propertyInfo, ExportBuilder exportBuild _configureExport?.Invoke(exportBuilder); } - private static PropertyInfo SelectProperties(Expression> propertyFilter) + private static PropertyInfo SelectProperties(Expression> propertyFilter!!) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - Expression expr = Reduce(propertyFilter).Body; if (expr.NodeType == ExpressionType.MemberAccess) { @@ -92,11 +89,8 @@ public void ConfigureConstructorImports(ParameterInfo parameterInfo, ImportBuild } } - private void ParseSelectConstructor(Expression> constructorFilter) + private void ParseSelectConstructor(Expression> constructorFilter!!) { - if (constructorFilter == null) - throw new ArgumentNullException(nameof(constructorFilter)); - Expression expr = Reduce(constructorFilter).Body; if (expr.NodeType != ExpressionType.New) { @@ -150,11 +144,8 @@ internal PartBuilder(Predicate selectType) : base(selectType) { } - public PartBuilder SelectConstructor(Expression> constructorFilter) + public PartBuilder SelectConstructor(Expression> constructorFilter!!) { - if (constructorFilter == null) - throw new ArgumentNullException(nameof(constructorFilter)); - var adapter = new ConstructorExpressionAdapter(constructorFilter); SelectConstructor(adapter.SelectConstructor, adapter.ConfigureConstructorImports); @@ -168,12 +159,9 @@ public PartBuilder ExportProperty(Expression> propertyFilter) } public PartBuilder ExportProperty( - Expression> propertyFilter, + Expression> propertyFilter!!, Action exportConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - var adapter = new PropertyExpressionAdapter(propertyFilter, null, exportConfiguration); ExportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureExport); @@ -185,12 +173,9 @@ public PartBuilder ExportProperty(Expression> prop return ExportProperty(propertyFilter, null); } - public PartBuilder ExportProperty(Expression> propertyFilter, + public PartBuilder ExportProperty(Expression> propertyFilter!!, Action exportConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - var adapter = new PropertyExpressionAdapter(propertyFilter, null, exportConfiguration); ExportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureExport); @@ -202,12 +187,9 @@ public PartBuilder ImportProperty(Expression> propertyFilter) return ImportProperty(propertyFilter, null); } - public PartBuilder ImportProperty(Expression> propertyFilter, + public PartBuilder ImportProperty(Expression> propertyFilter!!, Action importConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - var adapter = new PropertyExpressionAdapter(propertyFilter, importConfiguration, null); ImportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureImport); @@ -219,12 +201,9 @@ public PartBuilder ImportProperty(Expression> prop return ImportProperty(propertyFilter, null); } - public PartBuilder ImportProperty(Expression> propertyFilter, + public PartBuilder ImportProperty(Expression> propertyFilter!!, Action importConfiguration) { - if (propertyFilter == null) - throw new ArgumentNullException(nameof(propertyFilter)); - var adapter = new PropertyExpressionAdapter(propertyFilter, importConfiguration, null); ImportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureImport); diff --git a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/RegistrationBuilder.cs b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/RegistrationBuilder.cs index 9ed87a0ff35e23..fa82204739a881 100644 --- a/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/RegistrationBuilder.cs +++ b/src/libraries/System.ComponentModel.Composition.Registration/src/System/ComponentModel/Composition/Registration/RegistrationBuilder.cs @@ -38,11 +38,8 @@ public PartBuilder ForTypesDerivedFrom() return partBuilder; } - public PartBuilder ForTypesDerivedFrom(Type type) + public PartBuilder ForTypesDerivedFrom(Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - var partBuilder = new PartBuilder((t) => type != t && type.IsAssignableFrom(t)); _conventions.Add(partBuilder); @@ -57,33 +54,24 @@ public PartBuilder ForType() return partBuilder; } - public PartBuilder ForType(Type type) + public PartBuilder ForType(Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - var partBuilder = new PartBuilder((t) => t == type); _conventions.Add(partBuilder); return partBuilder; } - public PartBuilder ForTypesMatching(Predicate typeFilter) + public PartBuilder ForTypesMatching(Predicate typeFilter!!) { - if (typeFilter == null) - throw new ArgumentNullException(nameof(typeFilter)); - var partBuilder = new PartBuilder(typeFilter); _conventions.Add(partBuilder); return partBuilder; } - public PartBuilder ForTypesMatching(Predicate typeFilter) + public PartBuilder ForTypesMatching(Predicate typeFilter!!) { - if (typeFilter == null) - throw new ArgumentNullException(nameof(typeFilter)); - var partBuilder = new PartBuilder(typeFilter); _conventions.Add(partBuilder); diff --git a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs index 55249fc22f7b9b..9ef2fd2f361428 100644 --- a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs +++ b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.CollectionOfObject.cs @@ -9,18 +9,8 @@ namespace Microsoft.Internal.Collections { internal static partial class CollectionServices { - public static ICollection GetCollectionWrapper(Type itemType, object collectionObject) + public static ICollection GetCollectionWrapper(Type itemType!!, object collectionObject!!) { - if (itemType == null) - { - throw new ArgumentNullException(nameof(itemType)); - } - - if (collectionObject == null) - { - throw new ArgumentNullException(nameof(collectionObject)); - } - var underlyingItemType = itemType.UnderlyingSystemType; if (underlyingItemType == typeof(object)) diff --git a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.cs b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.cs index c41333296127f1..1c0fcb03d57a89 100644 --- a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/Collections/CollectionServices.cs @@ -56,13 +56,8 @@ public static bool IsEnumerableOfT(Type type) return null; } - public static ReadOnlyCollection ToReadOnlyCollection(this IEnumerable source) + public static ReadOnlyCollection ToReadOnlyCollection(this IEnumerable source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - return new ReadOnlyCollection(source.AsArray()); } @@ -168,13 +163,8 @@ public static void ForEach(this IEnumerable source, Action action) } } - public static EnumerableCardinality GetCardinality(this IEnumerable source) + public static EnumerableCardinality GetCardinality(this IEnumerable source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - // Cast to ICollection instead of ICollection for performance reasons. if (source is ICollection collection) { @@ -202,13 +192,8 @@ public static EnumerableCardinality GetCardinality(this IEnumerable source } } - public static Stack Copy(this Stack stack) + public static Stack Copy(this Stack stack!!) { - if (stack == null) - { - throw new ArgumentNullException(nameof(stack)); - } - // Stack.GetEnumerator walks from top to bottom // of the stack, whereas Stack(IEnumerable) // pushes to bottom from top, so we need to reverse diff --git a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/GenerationServices.cs b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/GenerationServices.cs index 036811b5ae93cb..10df9f5c97ba5d 100644 --- a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/GenerationServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/GenerationServices.cs @@ -162,25 +162,10 @@ public static void LoadValue(this ILGenerator ilGenerator, object? value) /// /// /// - public static void AddItemToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, object value) + public static void AddItemToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary!!, object key!!, object value!!) { Debug.Assert(ilGenerator != null); - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - ilGenerator.Emit(OpCodes.Ldloc, dictionary); ilGenerator.LoadValue(key); ilGenerator.LoadValue(value); @@ -192,25 +177,10 @@ public static void AddItemToLocalDictionary(this ILGenerator ilGenerator, LocalB /// /// /// - public static void AddLocalToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary, object key, LocalBuilder value) + public static void AddLocalToLocalDictionary(this ILGenerator ilGenerator, LocalBuilder dictionary!!, object key!!, LocalBuilder value!!) { Debug.Assert(ilGenerator != null); - if (dictionary == null) - { - throw new ArgumentNullException(nameof(dictionary)); - } - - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - ilGenerator.Emit(OpCodes.Ldloc, dictionary); ilGenerator.LoadValue(key); ilGenerator.Emit(OpCodes.Ldloc, value); @@ -221,34 +191,19 @@ public static void AddLocalToLocalDictionary(this ILGenerator ilGenerator, Local /// /// /// - public static void GetExceptionDataAndStoreInLocal(this ILGenerator ilGenerator, LocalBuilder exception, LocalBuilder dataStore) + public static void GetExceptionDataAndStoreInLocal(this ILGenerator ilGenerator, LocalBuilder exception!!, LocalBuilder dataStore!!) { Debug.Assert(ilGenerator != null); - if (exception == null) - { - throw new ArgumentNullException(nameof(exception)); - } - - if (dataStore == null) - { - throw new ArgumentNullException(nameof(dataStore)); - } - ilGenerator.Emit(OpCodes.Ldloc, exception); ilGenerator.Emit(OpCodes.Callvirt, ExceptionGetData); ilGenerator.Emit(OpCodes.Stloc, dataStore); } - private static void LoadEnumerable(this ILGenerator ilGenerator, IEnumerable enumerable) + private static void LoadEnumerable(this ILGenerator ilGenerator, IEnumerable enumerable!!) { Debug.Assert(ilGenerator != null); - if (enumerable == null) - { - throw new ArgumentNullException(nameof(enumerable)); - } - // We load enumerable as an array - this is the most compact and efficient way of representing it Type elementType; if (ReflectionServices.TryGetGenericInterfaceType(enumerable.GetType(), GenerationServices.s_iEnumerableTypeofT, out Type? closedType)) diff --git a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/LazyServices.cs b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/LazyServices.cs index 0e8ecae85fa8ed..e20f13ae89d870 100644 --- a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/LazyServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/LazyServices.cs @@ -2,20 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; -using System.Globalization; namespace Microsoft.Internal { internal static class LazyServices { - public static T GetNotNullValue(this Lazy lazy, string argument) + public static T GetNotNullValue(this Lazy lazy!!, string argument) where T : class { - if (lazy == null) - { - throw new ArgumentNullException(nameof(lazy)); - } - T value = lazy.Value; if (value == null) { diff --git a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/ReflectionServices.cs b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/ReflectionServices.cs index d6ec08259a05b8..e3f8b040bf9419 100644 --- a/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/ReflectionServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/Microsoft/Internal/ReflectionServices.cs @@ -57,23 +57,13 @@ public static bool IsVisible(this MethodInfo method) return true; } - public static string GetDisplayName(Type declaringType, string? name) + public static string GetDisplayName(Type declaringType!!, string? name) { - if (declaringType == null) - { - throw new ArgumentNullException(nameof(name)); - } - return declaringType.GetDisplayName() + "." + name; } - public static string GetDisplayName(this MemberInfo member) + public static string GetDisplayName(this MemberInfo member!!) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - switch (member.MemberType) { case MemberTypes.TypeInfo: diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs index b37ca10ac9ed55..ff61848f49ae83 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedExportDefinition.cs @@ -18,24 +18,9 @@ internal sealed class AttributedExportDefinition : ExportDefinition private IDictionary? _metadata; - public AttributedExportDefinition(AttributedPartCreationInfo partCreationInfo, MemberInfo member, ExportAttribute exportAttribute, Type? typeIdentityType, string contractName) + public AttributedExportDefinition(AttributedPartCreationInfo partCreationInfo!!, MemberInfo member!!, ExportAttribute exportAttribute!!, Type? typeIdentityType, string contractName) : base(contractName, (IDictionary?)null) { - if (partCreationInfo == null) - { - throw new ArgumentNullException(nameof(partCreationInfo)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - - if (exportAttribute == null) - { - throw new ArgumentNullException(nameof(exportAttribute)); - } - _partCreationInfo = partCreationInfo; _member = member; _exportAttribute = exportAttribute; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs index f2f498827c0b51..9e5d2207492f4a 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedModelDiscovery.cs @@ -24,43 +24,23 @@ internal static class AttributedModelDiscovery return new ReflectionComposablePartDefinition(creationInfo); } - public static ReflectionComposablePartDefinition CreatePartDefinition(Type type, PartCreationPolicyAttribute? partCreationPolicy, bool ignoreConstructorImports, ICompositionElement? origin) + public static ReflectionComposablePartDefinition CreatePartDefinition(Type type!!, PartCreationPolicyAttribute? partCreationPolicy, bool ignoreConstructorImports, ICompositionElement? origin) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - AttributedPartCreationInfo creationInfo = new AttributedPartCreationInfo(type, partCreationPolicy, ignoreConstructorImports, origin); return new ReflectionComposablePartDefinition(creationInfo); } - public static ReflectionComposablePart CreatePart(object attributedPart) + public static ReflectionComposablePart CreatePart(object attributedPart!!) { - if (attributedPart == null) - { - throw new ArgumentNullException(nameof(attributedPart)); - } - // If given an instance then we want to pass the default composition options because we treat it as a shared part ReflectionComposablePartDefinition definition = AttributedModelDiscovery.CreatePartDefinition(attributedPart.GetType(), PartCreationPolicyAttribute.Shared, true, (ICompositionElement?)null); return new ReflectionComposablePart(definition, attributedPart); } - public static ReflectionComposablePart CreatePart(object attributedPart, ReflectionContext reflectionContext) + public static ReflectionComposablePart CreatePart(object attributedPart!!, ReflectionContext reflectionContext!!) { - if (attributedPart == null) - { - throw new ArgumentNullException(nameof(attributedPart)); - } - - if (reflectionContext == null) - { - throw new ArgumentNullException(nameof(reflectionContext)); - } - // If given an instance then we want to pass the default composition options because we treat it as a shared part var mappedType = reflectionContext.MapType(IntrospectionExtensions.GetTypeInfo(attributedPart.GetType())); if (mappedType.Assembly.ReflectionOnly) @@ -73,19 +53,8 @@ public static ReflectionComposablePart CreatePart(object attributedPart, Reflect return CreatePart(definition, attributedPart); } - public static ReflectionComposablePart CreatePart(ComposablePartDefinition partDefinition, object attributedPart) + public static ReflectionComposablePart CreatePart(ComposablePartDefinition partDefinition!!, object attributedPart!!) { - if (partDefinition == null) - { - throw new ArgumentNullException(nameof(partDefinition)); - } - - if (attributedPart == null) - { - throw new ArgumentNullException(nameof(attributedPart)); - } - - return new ReflectionComposablePart((ReflectionComposablePartDefinition)partDefinition, attributedPart); } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs index e59154c185a5ef..34d611c7e21218 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/AttributedModel/AttributedPartCreationInfo.cs @@ -24,13 +24,8 @@ internal sealed class AttributedPartCreationInfo : IReflectionPartCreationInfo private IEnumerable? _imports; private HashSet? _contractNamesOnNonInterfaces; - public AttributedPartCreationInfo(Type type, PartCreationPolicyAttribute? partCreationPolicy, bool ignoreConstructorImports, ICompositionElement? origin) + public AttributedPartCreationInfo(Type type!!, PartCreationPolicyAttribute? partCreationPolicy, bool ignoreConstructorImports, ICompositionElement? origin) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - _type = type; _ignoreConstructorImports = ignoreConstructorImports; _partCreationPolicy = partCreationPolicy; @@ -187,13 +182,8 @@ private CreationPolicy CreationPolicy } } - private static ConstructorInfo? SelectPartConstructor(Type type) + private static ConstructorInfo? SelectPartConstructor(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (type.IsAbstract) { return null; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ConstraintServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ConstraintServices.cs index c7e74e85cc5e20..56974a4043d41b 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ConstraintServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ConstraintServices.cs @@ -53,31 +53,16 @@ public static Expression> CreateConstraint(string c return constraint; } - private static Expression CreateContractConstraintBody(string contractName, ParameterExpression parameter) + private static Expression CreateContractConstraintBody(string contractName, ParameterExpression parameter!!) { - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - // export.ContractName=; return Expression.Equal( Expression.Property(parameter, ConstraintServices._exportDefinitionContractNameProperty), Expression.Constant(contractName ?? string.Empty, typeof(string))); } - private static Expression? CreateMetadataConstraintBody(IEnumerable> requiredMetadata, ParameterExpression parameter) + private static Expression? CreateMetadataConstraintBody(IEnumerable> requiredMetadata!!, ParameterExpression parameter!!) { - if (requiredMetadata == null) - { - throw new ArgumentNullException(nameof(requiredMetadata)); - } - - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - Expression? body = null; foreach (KeyValuePair requiredMetadataItem in requiredMetadata) { @@ -91,18 +76,13 @@ private static Expression CreateContractConstraintBody(string contractName, Para return body; } - private static Expression CreateCreationPolicyContraint(CreationPolicy policy, ParameterExpression parameter) + private static Expression CreateCreationPolicyContraint(CreationPolicy policy, ParameterExpression parameter!!) { if (policy == CreationPolicy.Any) { throw new Exception(SR.Diagnostic_InternalExceptionMessage); } - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - // !definition.Metadata.ContainsKey(CompositionConstants.PartCreationPolicyMetadataName) || // CreationPolicy.Any.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]) || // policy.Equals(definition.Metadata[CompositionConstants.PartCreationPolicyMetadataName]); @@ -114,18 +94,8 @@ private static Expression CreateCreationPolicyContraint(CreationPolicy policy, P CreateMetadataValueEqualsExpression(parameter, policy, CompositionConstants.PartCreationPolicyMetadataName)); } - private static Expression CreateTypeIdentityContraint(string requiredTypeIdentity, ParameterExpression parameter) + private static Expression CreateTypeIdentityContraint(string requiredTypeIdentity!!, ParameterExpression parameter!!) { - if (requiredTypeIdentity == null) - { - throw new ArgumentNullException(requiredTypeIdentity); - } - - if (parameter == null) - { - throw new ArgumentException(nameof(parameter)); - } - // definition.Metadata.ContainsKey(CompositionServices.ExportTypeIdentity) && // requiredTypeIdentity.Equals(definition.Metadata[CompositionConstants.ExportTypeIdentityMetadataName]); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ContractNameServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ContractNameServices.cs index 08c4bfb717e068..fe502db6365a18 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ContractNameServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ContractNameServices.cs @@ -41,13 +41,8 @@ internal static string GetTypeIdentity(Type type) return GetTypeIdentity(type, true); } - internal static string GetTypeIdentity(Type type, bool formatGenericName) + internal static string GetTypeIdentity(Type type!!, bool formatGenericName) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (!TypeIdentityCache.TryGetValue(type, out string? typeIdentity)) { if (!type.IsAbstract && type.HasBaseclassOf(typeof(Delegate))) diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ErrorBuilder.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ErrorBuilder.cs index 80a171cc1b776d..67259b1149a227 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ErrorBuilder.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ErrorBuilder.cs @@ -32,18 +32,8 @@ public static CompositionError ComposeTookTooManyIterations(int maximumNumberOfC maximumNumberOfCompositionIterations); } - public static CompositionError CreateImportCardinalityMismatch(ImportCardinalityMismatchException exception, ImportDefinition definition) + public static CompositionError CreateImportCardinalityMismatch(ImportCardinalityMismatchException exception!!, ImportDefinition definition!!) { - if (exception == null) - { - throw new ArgumentNullException(nameof(exception)); - } - - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - return CompositionError.Create( CompositionErrorId.ImportEngine_ImportCardinalityMismatch, exception.Message, @@ -51,18 +41,8 @@ public static CompositionError CreateImportCardinalityMismatch(ImportCardinality (Exception?)null); } - public static CompositionError CreatePartCannotActivate(ComposablePart part, Exception innerException) + public static CompositionError CreatePartCannotActivate(ComposablePart part!!, Exception innerException!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - - if (innerException == null) - { - throw new ArgumentNullException(nameof(innerException)); - } - ICompositionElement element = part.ToElement(); return CompositionError.Create( CompositionErrorId.ImportEngine_PartCannotActivate, @@ -72,23 +52,8 @@ public static CompositionError CreatePartCannotActivate(ComposablePart part, Exc element.DisplayName); } - public static CompositionError CreatePartCannotSetImport(ComposablePart part, ImportDefinition definition, Exception innerException) + public static CompositionError CreatePartCannotSetImport(ComposablePart part!!, ImportDefinition definition!!, Exception innerException!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - - if (innerException == null) - { - throw new ArgumentNullException(nameof(innerException)); - } - ICompositionElement element = definition.ToElement(); return CompositionError.Create( CompositionErrorId.ImportEngine_PartCannotSetImport, @@ -99,23 +64,8 @@ public static CompositionError CreatePartCannotSetImport(ComposablePart part, Im part.ToElement().DisplayName); } - public static CompositionError CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException) + public static CompositionError CreateCannotGetExportedValue(ComposablePart part!!, ExportDefinition definition!!, Exception innerException!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - - if (innerException == null) - { - throw new ArgumentNullException(nameof(innerException)); - } - ICompositionElement element = definition.ToElement(); return CompositionError.Create( CompositionErrorId.ImportEngine_PartCannotGetExportedValue, @@ -126,13 +76,8 @@ public static CompositionError CreateCannotGetExportedValue(ComposablePart part, part.ToElement().DisplayName); } - public static CompositionError CreatePartCycle(ComposablePart part) + public static CompositionError CreatePartCycle(ComposablePart part!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - ICompositionElement element = part.ToElement(); return CompositionError.Create( CompositionErrorId.ImportEngine_PartCycle, diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExceptionBuilder.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExceptionBuilder.cs index dea39fb6e6f43f..0279e161ff7f42 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExceptionBuilder.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExceptionBuilder.cs @@ -16,35 +16,20 @@ public static Exception CreateDiscoveryException(string messageFormat, params st return new InvalidOperationException(Format(messageFormat, arguments)); } - public static ArgumentException CreateContainsNullElement(string parameterName) + public static ArgumentException CreateContainsNullElement(string parameterName!!) { - if (parameterName == null) - { - throw new ArgumentNullException(nameof(parameterName)); - } - string message = Format(SR.Argument_NullElement, parameterName); return new ArgumentException(message, parameterName); } - public static ObjectDisposedException CreateObjectDisposed(object instance) + public static ObjectDisposedException CreateObjectDisposed(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return new ObjectDisposedException(instance.GetType().ToString()); } - public static NotImplementedException CreateNotOverriddenByDerived(string memberName) + public static NotImplementedException CreateNotOverriddenByDerived(string memberName!!) { - if (memberName == null) - { - throw new ArgumentNullException(nameof(memberName)); - } - if (memberName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(memberName)), nameof(memberName)); @@ -55,13 +40,8 @@ public static NotImplementedException CreateNotOverriddenByDerived(string member return new NotImplementedException(message); } - public static ArgumentException CreateExportDefinitionNotOnThisComposablePart(string parameterName) + public static ArgumentException CreateExportDefinitionNotOnThisComposablePart(string parameterName!!) { - if (parameterName == null) - { - throw new ArgumentNullException(nameof(parameterName)); - } - if (parameterName.Length == 0) { throw new ArgumentException(SR.ArgumentException_EmptyString); @@ -73,13 +53,8 @@ public static ArgumentException CreateExportDefinitionNotOnThisComposablePart(st return new ArgumentException(message, parameterName); } - public static ArgumentException CreateImportDefinitionNotOnThisComposablePart(string parameterName) + public static ArgumentException CreateImportDefinitionNotOnThisComposablePart(string parameterName!!) { - if (parameterName == null) - { - throw new ArgumentNullException(nameof(parameterName)); - } - if (parameterName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(parameterName)), nameof(parameterName)); @@ -90,34 +65,14 @@ public static ArgumentException CreateImportDefinitionNotOnThisComposablePart(st return new ArgumentException(message, parameterName); } - public static CompositionException CreateCannotGetExportedValue(ComposablePart part, ExportDefinition definition, Exception innerException) + public static CompositionException CreateCannotGetExportedValue(ComposablePart part!!, ExportDefinition definition!!, Exception innerException!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - - if (innerException == null) - { - throw new ArgumentNullException(nameof(innerException)); - } - return new CompositionException( ErrorBuilder.CreateCannotGetExportedValue(part, definition, innerException)); } - public static ArgumentException CreateReflectionModelInvalidPartDefinition(string parameterName, Type partDefinitionType) + public static ArgumentException CreateReflectionModelInvalidPartDefinition(string parameterName!!, Type partDefinitionType) { - if (parameterName == null) - { - throw new ArgumentNullException(nameof(parameterName)); - } - if (parameterName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(parameterName)), nameof(parameterName)); @@ -131,13 +86,8 @@ public static ArgumentException CreateReflectionModelInvalidPartDefinition(strin return new ArgumentException(SR.Format(SR.ReflectionModel_InvalidPartDefinition, partDefinitionType), parameterName); } - public static ArgumentException ExportFactory_TooManyGenericParameters(string typeName) + public static ArgumentException ExportFactory_TooManyGenericParameters(string typeName!!) { - if (typeName == null) - { - throw new ArgumentNullException(nameof(typeName)); - } - if (typeName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(typeName)), nameof(typeName)); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportFactoryOfT.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportFactoryOfT.cs index a5547d23532306..37fe04226567d6 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportFactoryOfT.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportFactoryOfT.cs @@ -7,13 +7,8 @@ public class ExportFactory { private readonly Func> _exportLifetimeContextCreator; - public ExportFactory(Func> exportLifetimeContextCreator) + public ExportFactory(Func> exportLifetimeContextCreator!!) { - if (exportLifetimeContextCreator == null) - { - throw new ArgumentNullException(nameof(exportLifetimeContextCreator)); - } - _exportLifetimeContextCreator = exportLifetimeContextCreator; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs index 1f9c8004676f77..bfbcb4b96347e8 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.DisposableLazy.cs @@ -11,14 +11,9 @@ private sealed class DisposableLazy : Lazy, { private readonly IDisposable _disposable; - public DisposableLazy(Func valueFactory, TMetadataView metadataView, IDisposable disposable, LazyThreadSafetyMode mode) + public DisposableLazy(Func valueFactory, TMetadataView metadataView, IDisposable disposable!!, LazyThreadSafetyMode mode) : base(valueFactory, metadataView, mode) { - if (disposable == null) - { - throw new ArgumentNullException(nameof(disposable)); - } - _disposable = disposable; } @@ -32,14 +27,9 @@ private sealed class DisposableLazy : Lazy, IDisposable { private readonly IDisposable _disposable; - public DisposableLazy(Func valueFactory, IDisposable disposable, LazyThreadSafetyMode mode) + public DisposableLazy(Func valueFactory, IDisposable disposable!!, LazyThreadSafetyMode mode) : base(valueFactory, mode) { - if (disposable == null) - { - throw new ArgumentNullException(nameof(disposable)); - } - _disposable = disposable; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.cs index af5e86056da17b..fff07d2d958ae6 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ExportServices.cs @@ -23,26 +23,16 @@ internal static partial class ExportServices internal static readonly Type DefaultMetadataViewType = typeof(IDictionary); internal static readonly Type DefaultExportedValueType = typeof(object); - internal static bool IsDefaultMetadataViewType(Type metadataViewType) + internal static bool IsDefaultMetadataViewType(Type metadataViewType!!) { - if (metadataViewType == null) - { - throw new ArgumentNullException(nameof(metadataViewType)); - } - // Consider all types that IDictionary derives from, such // as ICollection>, IEnumerable> // and IEnumerable, as default metadata view return metadataViewType.IsAssignableFrom(DefaultMetadataViewType); } - internal static bool IsDictionaryConstructorViewType(Type metadataViewType) + internal static bool IsDictionaryConstructorViewType(Type metadataViewType!!) { - if (metadataViewType == null) - { - throw new ArgumentNullException(nameof(metadataViewType)); - } - // Does the view type have a constructor that is a Dictionary return metadataViewType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, Type.DefaultBinder, diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs index e0d99e469252ac..e07e233f5798d3 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/AtomicCompositionExtensions.cs @@ -6,13 +6,8 @@ namespace System.ComponentModel.Composition.Hosting { internal static class AtomicCompositionExtensions { - internal static T GetValueAllowNull(this AtomicComposition? atomicComposition, T defaultResultAndKey) where T : class + internal static T GetValueAllowNull(this AtomicComposition? atomicComposition, T defaultResultAndKey!!) where T : class { - if (defaultResultAndKey == null) - { - throw new ArgumentNullException(nameof(defaultResultAndKey)); - } - return GetValueAllowNull(atomicComposition, defaultResultAndKey, defaultResultAndKey); } @@ -27,13 +22,8 @@ internal static T GetValueAllowNull(this AtomicComposition? atomicComposition return defaultResult; } - internal static void AddRevertActionAllowNull(this AtomicComposition? atomicComposition, Action action) + internal static void AddRevertActionAllowNull(this AtomicComposition? atomicComposition, Action action!!) { - if (action == null) - { - throw new ArgumentNullException(nameof(action)); - } - if (atomicComposition == null) { action(); @@ -44,13 +34,8 @@ internal static void AddRevertActionAllowNull(this AtomicComposition? atomicComp } } - internal static void AddCompleteActionAllowNull(this AtomicComposition? atomicComposition, Action action) + internal static void AddCompleteActionAllowNull(this AtomicComposition? atomicComposition, Action action!!) { - if (action == null) - { - throw new ArgumentNullException(nameof(action)); - } - if (atomicComposition == null) { action(); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.ScopeManager.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.ScopeManager.cs index c10f2e48d045a2..d79e0c71f586cb 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.ScopeManager.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.ScopeManager.cs @@ -13,17 +13,8 @@ internal sealed class ScopeManager : ExportProvider private readonly CompositionScopeDefinition _scopeDefinition; private readonly CatalogExportProvider _catalogExportProvider; - public ScopeManager(CatalogExportProvider catalogExportProvider, CompositionScopeDefinition scopeDefinition) + public ScopeManager(CatalogExportProvider catalogExportProvider!!, CompositionScopeDefinition scopeDefinition!!) { - if (catalogExportProvider == null) - { - throw new ArgumentNullException(nameof(catalogExportProvider)); - } - if (scopeDefinition == null) - { - throw new ArgumentNullException(nameof(scopeDefinition)); - } - _scopeDefinition = scopeDefinition; _catalogExportProvider = catalogExportProvider; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs index b981f8cd8a7e1d..81f7d21230c959 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CatalogExportProvider.cs @@ -22,12 +22,8 @@ private sealed class InnerCatalogExportProvider : ExportProvider { private readonly CatalogExportProvider _outerExportProvider; - public InnerCatalogExportProvider(CatalogExportProvider outerExportProvider) + public InnerCatalogExportProvider(CatalogExportProvider outerExportProvider!!) { - if (outerExportProvider == null) - { - throw new ArgumentNullException(nameof(outerExportProvider)); - } _outerExportProvider = outerExportProvider; } @@ -566,13 +562,8 @@ private void ReleasePart(object exportedValue, CatalogPart catalogPart, AtomicCo DisposePart(exportedValue, catalogPart, atomicComposition); } - private void DisposePart(object? exportedValue, CatalogPart catalogPart, AtomicComposition? atomicComposition) + private void DisposePart(object? exportedValue, CatalogPart catalogPart!!, AtomicComposition? atomicComposition) { - if (catalogPart == null) - { - throw new ArgumentNullException(nameof(catalogPart)); - } - if (_isDisposed) return; @@ -620,18 +611,8 @@ private void DisposePart(object? exportedValue, CatalogPart catalogPart, AtomicC } } - private void PreventPartCollection(object exportedValue, ComposablePart part) + private void PreventPartCollection(object exportedValue!!, ComposablePart part!!) { - if (exportedValue == null) - { - throw new ArgumentNullException(nameof(exportedValue)); - } - - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - using (_lock.LockStateForWrite()) { List? partList; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs index 8e17e23540e164..3e771180e8be5d 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ComposablePartExportProvider.cs @@ -318,13 +318,8 @@ public void Compose(CompositionBatch batch) result.ThrowOnErrors(); } - private List GetUpdatedPartsList(ref CompositionBatch batch) + private List GetUpdatedPartsList(ref CompositionBatch batch!!) { - if (batch == null) - { - throw new ArgumentNullException(nameof(batch)); - } - // Copy the current list of parts - we are about to modify it // This is an OK thing to do as this is the only method that can modify the List AND Compose can // only be executed on one thread at a time - thus two different threads cannot tramp over each other @@ -361,13 +356,8 @@ private List GetUpdatedPartsList(ref CompositionBatch batch) return parts; } - private void Recompose(CompositionBatch batch, AtomicComposition atomicComposition) + private void Recompose(CompositionBatch batch!!, AtomicComposition atomicComposition) { - if (batch == null) - { - throw new ArgumentNullException(nameof(batch)); - } - // Unregister any removed component parts foreach (ComposablePart part in batch.PartsToRemove) { diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs index e2f8250d304796..700c77b942b8e1 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionBatch.SingleExportComposablePart.cs @@ -15,13 +15,8 @@ private sealed class SingleExportComposablePart : ComposablePart { private readonly Export _export; - public SingleExportComposablePart(Export export) + public SingleExportComposablePart(Export export!!) { - if (export == null) - { - throw new ArgumentNullException(nameof(export)); - } - _export = export; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionContainer.CompositionServiceShim.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionContainer.CompositionServiceShim.cs index afdc59810599e2..9a75cd080afe73 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionContainer.CompositionServiceShim.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionContainer.CompositionServiceShim.cs @@ -11,12 +11,8 @@ private sealed class CompositionServiceShim : ICompositionService { private readonly CompositionContainer _innerContainer; - public CompositionServiceShim(CompositionContainer innerContainer) + public CompositionServiceShim(CompositionContainer innerContainer!!) { - if (innerContainer == null) - { - throw new ArgumentNullException(nameof(innerContainer)); - } _innerContainer = innerContainer; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionScopeDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionScopeDefinition.cs index ee9b9d80eb4565..ef625dcbdd9fba 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionScopeDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionScopeDefinition.cs @@ -184,13 +184,8 @@ public override IEnumerable> G return _catalog.GetExports(definition); } - internal IEnumerable> GetExportsFromPublicSurface(ImportDefinition definition) + internal IEnumerable> GetExportsFromPublicSurface(ImportDefinition definition!!) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - var exports = new List>(); foreach (var exportDefinition in PublicSurface) diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionService.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionService.cs index 624adf905b8f5b..2f3fe14433b246 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionService.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionService.cs @@ -17,13 +17,8 @@ public class CompositionService : ICompositionService, IDisposable private readonly CompositionContainer? _compositionContainer; private readonly INotifyComposablePartCatalogChanged? _notifyCatalog; - internal CompositionService(ComposablePartCatalog composablePartCatalog) + internal CompositionService(ComposablePartCatalog composablePartCatalog!!) { - if (composablePartCatalog == null) - { - throw new ArgumentNullException(nameof(composablePartCatalog)); - } - _notifyCatalog = composablePartCatalog as INotifyComposablePartCatalogChanged; try { diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionServices.cs index 3df3463c0b2111..0447aef747c02b 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/CompositionServices.cs @@ -23,13 +23,8 @@ internal static class CompositionServices CompositionConstants.PartCreationPolicyMetadataName }; - internal static Type GetDefaultTypeFromMember(this MemberInfo member) + internal static Type GetDefaultTypeFromMember(this MemberInfo member!!) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - switch (member.MemberType) { case MemberTypes.Property: @@ -61,13 +56,8 @@ internal static Type AdjustSpecifiedTypeIdentityType(this Type specifiedContract } } - internal static Type AdjustSpecifiedTypeIdentityType(this Type specifiedContractType, Type? memberType) + internal static Type AdjustSpecifiedTypeIdentityType(this Type specifiedContractType!!, Type? memberType) { - if (specifiedContractType == null) - { - throw new ArgumentNullException(nameof(specifiedContractType)); - } - if ((memberType != null) && memberType.IsGenericType && specifiedContractType.IsGenericType) { // if the memeber type is closed and the specified contract type is open and they have exatly the same number of parameters @@ -406,13 +396,8 @@ public void Add(object? item, Type? itemType) _innerList.Add(item); } - private void InferArrayType(Type itemType) + private void InferArrayType(Type itemType!!) { - if (itemType == null) - { - throw new ArgumentNullException(nameof(itemType)); - } - if (_arrayType == null) { // this is the first typed element we've been given, it sets the type of the array @@ -627,13 +612,8 @@ private static bool IsValidAttributeType(Type type) return IsValidAttributeType(type, true); } - private static bool IsValidAttributeType(Type type, bool arrayAllowed) + private static bool IsValidAttributeType(Type type!!, bool arrayAllowed) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - // Definitions of valid attribute type taken from C# 3.0 Specification section 17.1.3. // One of the following types: bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort. diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs index 8ddbd6c5368902..4b571813a5888a 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.GetExportOverrides.cs @@ -794,23 +794,8 @@ private IEnumerable GetExportsCore(Type type, Type? metadataViewType, st return GetExports(importDefinition, null); } - private static ImportDefinition BuildImportDefinition(Type type, Type metadataViewType, string contractName, ImportCardinality cardinality) + private static ImportDefinition BuildImportDefinition(Type type!!, Type metadataViewType!!, string contractName!!, ImportCardinality cardinality) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (metadataViewType == null) - { - throw new ArgumentNullException(nameof(metadataViewType)); - } - - if (contractName == null) - { - throw new ArgumentNullException(nameof(contractName)); - } - IEnumerable> requiredMetadata = CompositionServices.GetRequiredMetadata(metadataViewType); IDictionary metadata = CompositionServices.GetImportMetadata(type, null); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.cs index d17e1210684af3..78be23bdd6704c 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ExportProvider.cs @@ -205,13 +205,8 @@ protected virtual void OnExportsChanging(ExportsChangeEventArgs e) } } - private ExportCardinalityCheckResult TryGetExportsCore(ImportDefinition definition, AtomicComposition? atomicComposition, out IEnumerable? exports) + private ExportCardinalityCheckResult TryGetExportsCore(ImportDefinition definition!!, AtomicComposition? atomicComposition, out IEnumerable? exports) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - exports = GetExportsCore(definition, atomicComposition); var checkResult = ExportServices.CheckCardinality(definition, exports); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependenciesTraversal.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependenciesTraversal.cs index 4c991d6542de12..7877e487f8a0f6 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependenciesTraversal.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependenciesTraversal.cs @@ -17,17 +17,8 @@ internal sealed class DependenciesTraversal : IComposablePartCatalogTraversal private readonly Func _importFilter; private Dictionary>? _exportersIndex; - public DependenciesTraversal(FilteredCatalog catalog, Func importFilter) + public DependenciesTraversal(FilteredCatalog catalog!!, Func importFilter!!) { - if (catalog == null) - { - throw new ArgumentNullException(nameof(catalog)); - } - - if (importFilter == null) - { - throw new ArgumentNullException(nameof(importFilter)); - } _parts = catalog._innerCatalog; _importFilter = importFilter; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependentsTraversal.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependentsTraversal.cs index b949ec434338bc..872d99333ad7f8 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependentsTraversal.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.DependentsTraversal.cs @@ -23,17 +23,8 @@ internal sealed class DependentsTraversal : IComposablePartCatalogTraversal private readonly Func _importFilter; private Dictionary>? _importersIndex; - public DependentsTraversal(FilteredCatalog catalog, Func importFilter) + public DependentsTraversal(FilteredCatalog catalog!!, Func importFilter!!) { - if (catalog == null) - { - throw new ArgumentNullException(nameof(catalog)); - } - if (importFilter == null) - { - throw new ArgumentNullException(nameof(importFilter)); - } - _parts = catalog._innerCatalog; _importFilter = importFilter; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.Traversal.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.Traversal.cs index aaffa2ccc6feb1..8860f64133b478 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.Traversal.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/FilteredCatalog.Traversal.cs @@ -56,13 +56,8 @@ public FilteredCatalog IncludeDependents(Func importFilt return Traverse(new DependentsTraversal(this, importFilter)); } - private FilteredCatalog Traverse(IComposablePartCatalogTraversal traversal) + private FilteredCatalog Traverse(IComposablePartCatalogTraversal traversal!!) { - if (traversal == null) - { - throw new ArgumentNullException(nameof(traversal)); - } - // we make sure that the underlyiong catalog cannot change while we are doing the trasversal // After thaty traversal is done, the freeze is lifted, and the catalog is free to change, but the changes // cannot affect partitioning @@ -80,12 +75,8 @@ private FilteredCatalog Traverse(IComposablePartCatalogTraversal traversal) } } - private static HashSet GetTraversalClosure(IEnumerable parts, IComposablePartCatalogTraversal traversal) + private static HashSet GetTraversalClosure(IEnumerable parts, IComposablePartCatalogTraversal traversal!!) { - if (traversal == null) - { - throw new ArgumentNullException(nameof(traversal)); - } var traversedParts = new HashSet(); GetTraversalClosure(parts, traversedParts, traversal); return traversedParts; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs index 9bd187f8899587..7ba75809e9f017 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.EngineContext.cs @@ -25,26 +25,16 @@ public EngineContext(ImportEngine importEngine, EngineContext? parentEngineConte _parentEngineContext = parentEngineContext; } - public void AddPartManager(PartManager part) + public void AddPartManager(PartManager part!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - if (!_removedPartManagers.Remove(part)) { _addedPartManagers.Add(part); } } - public void RemovePartManager(PartManager part) + public void RemovePartManager(PartManager part!!) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } - if (!_addedPartManagers.Remove(part)) { _removedPartManagers.Add(part); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.cs index 36df11b809a622..57b215f82e16c4 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportEngine.cs @@ -407,12 +407,8 @@ private CompositionResult TrySatisfyImportsStateMachine(PartManager partManager, return result; } - private CompositionResult TrySatisfyImports(PartManager partManager, ComposablePart part, bool shouldTrackImports) + private CompositionResult TrySatisfyImports(PartManager partManager, ComposablePart part!!, bool shouldTrackImports) { - if (part == null) - { - throw new ArgumentNullException(nameof(part)); - } var result = CompositionResult.SucceededResult; // get out if the part is already composed @@ -686,13 +682,8 @@ private void StopSatisfyingImports(PartManager partManager, AtomicComposition? a return partManager; } - private EngineContext GetEngineContext(AtomicComposition atomicComposition) + private EngineContext GetEngineContext(AtomicComposition atomicComposition!!) { - if (atomicComposition == null) - { - throw new ArgumentNullException(nameof(atomicComposition)); - } - if (!atomicComposition.TryGetValue(this, true, out EngineContext? engineContext)) { atomicComposition.TryGetValue(this, false, out EngineContext? parentContext); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportSourceImportDefinitionHelpers.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportSourceImportDefinitionHelpers.cs index 17194f7b9bf6f1..c685134ded8a32 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportSourceImportDefinitionHelpers.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/ImportSourceImportDefinitionHelpers.cs @@ -30,12 +30,8 @@ internal sealed class NonImportSourceImportDefinition : ContractBasedImportDefin private readonly ContractBasedImportDefinition _sourceDefinition; private IDictionary? _metadata; - public NonImportSourceImportDefinition(ContractBasedImportDefinition sourceDefinition) + public NonImportSourceImportDefinition(ContractBasedImportDefinition sourceDefinition!!) { - if (sourceDefinition == null) - { - throw new ArgumentNullException(nameof(sourceDefinition)); - } _sourceDefinition = sourceDefinition; _metadata = null; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/TypeCatalog.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/TypeCatalog.cs index 2a0d7eb1fc1ac0..8783ab01798697 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/TypeCatalog.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/Hosting/TypeCatalog.cs @@ -281,13 +281,8 @@ private IEnumerable PartsInternal } } - internal override IEnumerable? GetCandidateParts(ImportDefinition definition) + internal override IEnumerable? GetCandidateParts(ImportDefinition definition!!) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - string contractName = definition.ContractName; if (string.IsNullOrEmpty(contractName)) { diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataServices.cs index 25d362e457d7d4..370486eb7fc55e 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataServices.cs @@ -26,13 +26,8 @@ internal static class MetadataServices return new ReadOnlyDictionary(metadata); } - public static T? GetValue(this IDictionary metadata, string key) + public static T? GetValue(this IDictionary metadata!!, string key) { - if (metadata == null) - { - throw new ArgumentNullException(nameof(metadata)); - } - if (metadata.TryGetValue(key, out object? untypedValue) && untypedValue is T t) { return t; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewGenerator.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewGenerator.cs index b56a1695b12d7e..f8188f46572e97 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewGenerator.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewGenerator.cs @@ -88,13 +88,8 @@ private static ModuleBuilder GetProxyModuleBuilder(bool requiresCritical) return transparentProxyModuleBuilder; } - public static MetadataViewFactory GetMetadataViewFactory(Type viewType) + public static MetadataViewFactory GetMetadataViewFactory(Type viewType!!) { - if (viewType == null) - { - throw new ArgumentNullException(nameof(viewType)); - } - if (!viewType.IsInterface) { throw new Exception(SR.Diagnostic_InternalExceptionMessage); @@ -137,12 +132,8 @@ public static MetadataViewFactory GetMetadataViewFactory(Type viewType) return metadataViewFactory!; } - public static TMetadataView CreateMetadataView(MetadataViewFactory metadataViewFactory, IDictionary metadata) + public static TMetadataView CreateMetadataView(MetadataViewFactory metadataViewFactory!!, IDictionary metadata) { - if (metadataViewFactory == null) - { - throw new ArgumentNullException(nameof(metadataViewFactory)); - } // we are simulating the Activator.CreateInstance behavior by wrapping everything in a TargetInvocationException try { diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewProvider.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewProvider.cs index c4514fdc9a8ad3..85f9431381fbd6 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewProvider.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/MetadataViewProvider.cs @@ -12,13 +12,8 @@ namespace System.ComponentModel.Composition { internal static class MetadataViewProvider { - public static TMetadataView GetMetadataView(IDictionary metadata) + public static TMetadataView GetMetadataView(IDictionary metadata!!) { - if (metadata == null) - { - throw new ArgumentNullException(nameof(metadata)); - } - Type metadataViewType = typeof(TMetadataView); // If the Metadata dictionary is cast compatible with the passed in type @@ -126,13 +121,8 @@ public static TMetadataView GetMetadataView(IDictionary GetPureGenericParameters(this Type type) + internal static IList GetPureGenericParameters(this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (type.IsGenericType && type.ContainsGenericParameters) { List pureGenericParameters = new List(); @@ -36,13 +31,8 @@ internal static IList GetPureGenericParameters(this Type type) } } - internal static int GetPureGenericArity(this Type type) + internal static int GetPureGenericArity(this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - int genericArity = 0; if (type.IsGenericType && type.ContainsGenericParameters) { diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/GenericSpecializationPartCreationInfo.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/GenericSpecializationPartCreationInfo.cs index fe017bf5bafb82..0cda1e03db94d7 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/GenericSpecializationPartCreationInfo.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/GenericSpecializationPartCreationInfo.cs @@ -29,23 +29,8 @@ internal sealed class GenericSpecializationPartCreationInfo : IReflectionPartCre private ConstructorInfo? _constructor; private readonly object _lock = new object(); - public GenericSpecializationPartCreationInfo(IReflectionPartCreationInfo originalPartCreationInfo, ReflectionComposablePartDefinition originalPart, Type[] specialization) + public GenericSpecializationPartCreationInfo(IReflectionPartCreationInfo originalPartCreationInfo!!, ReflectionComposablePartDefinition originalPart!!, Type[] specialization!!) { - if (originalPartCreationInfo == null) - { - throw new ArgumentNullException(nameof(originalPartCreationInfo)); - } - - if (originalPart == null) - { - throw new ArgumentNullException(nameof(originalPart)); - } - - if (specialization == null) - { - throw new ArgumentNullException(nameof(specialization)); - } - _originalPartCreationInfo = originalPartCreationInfo; _originalPart = originalPart; _specialization = specialization; @@ -188,13 +173,8 @@ private void BuildTables() } } - private Dictionary BuildMembersTable(List members) + private Dictionary BuildMembersTable(List members!!) { - if (members == null) - { - throw new ArgumentNullException(nameof(members)); - } - Dictionary membersTable = new Dictionary(); Dictionary specializedPartMembers = new Dictionary(); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportType.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportType.cs index cb4ea1ce43b35e..883d19802ab21b 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportType.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportType.cs @@ -32,13 +32,8 @@ private static Dictionary?> CastSingleValueCache } } - public ImportType(Type type, ImportCardinality cardinality) + public ImportType(Type type!!, ImportCardinality cardinality) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - _type = type; Type contractType = type; @@ -108,18 +103,8 @@ private static bool IsGenericDescendentOf(Type? type, Type baseGenericTypeDefini return IsGenericDescendentOf(type.BaseType, baseGenericTypeDefinition); } - public static bool IsDescendentOf(Type type, Type baseType) + public static bool IsDescendentOf(Type type!!, Type baseType!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (baseType == null) - { - throw new ArgumentNullException(nameof(baseType)); - } - if (!baseType.IsGenericTypeDefinition) { return baseType.IsAssignableFrom(type); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs index b47301619caaec..9212785003dbff 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingItem.cs @@ -12,13 +12,8 @@ internal abstract class ImportingItem private readonly ContractBasedImportDefinition _definition; private readonly ImportType _importType; - protected ImportingItem(ContractBasedImportDefinition definition, ImportType importType) + protected ImportingItem(ContractBasedImportDefinition definition!!, ImportType importType) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - _definition = definition; _importType = importType; } @@ -45,13 +40,8 @@ public ImportType ImportType } } - private object CastExportsToCollectionImportType(Export[] exports) + private object CastExportsToCollectionImportType(Export[] exports!!) { - if (exports == null) - { - throw new ArgumentNullException(nameof(exports)); - } - // Element type could be null if the actually import type of the member is not a collection // This particular case will end up failing when we set the member. Type elementType = ImportType.ElementType ?? typeof(object); @@ -68,13 +58,8 @@ private object CastExportsToCollectionImportType(Export[] exports) return array; } - private object? CastExportsToSingleImportType(Export[] exports) + private object? CastExportsToSingleImportType(Export[] exports!!) { - if (exports == null) - { - throw new ArgumentNullException(nameof(exports)); - } - if (exports.Length >= 2) { throw new Exception(SR.Diagnostic_InternalExceptionMessage); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs index b0c424d0855651..acf0f892b38438 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ImportingMember.cs @@ -16,14 +16,9 @@ internal sealed class ImportingMember : ImportingItem { private readonly ReflectionWritableMember _member; - public ImportingMember(ContractBasedImportDefinition definition, ReflectionWritableMember member, ImportType importType) + public ImportingMember(ContractBasedImportDefinition definition, ReflectionWritableMember member!!, ImportType importType) : base(definition, importType) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - _member = member; } @@ -105,13 +100,8 @@ private void EnsureWritable() } } - private void SetCollectionMemberValue(object? instance, IEnumerable values) + private void SetCollectionMemberValue(object? instance, IEnumerable values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - ICollection? collection = null; Type? itemType = CollectionServices.GetCollectionElementType(ImportType.ActualType); if (itemType != null) @@ -123,13 +113,8 @@ private void SetCollectionMemberValue(object? instance, IEnumerable values) PopulateCollection(collection!, values); } - private ICollection GetNormalizedCollection(Type itemType, object? instance) + private ICollection GetNormalizedCollection(Type itemType!!, object? instance) { - if (itemType == null) - { - throw new ArgumentNullException(nameof(itemType)); - } - object? collectionObject = null; if (_member.CanRead) @@ -219,18 +204,8 @@ private void EnsureCollectionIsWritable(ICollection? collection) } } - private void PopulateCollection(ICollection collection, IEnumerable values) + private void PopulateCollection(ICollection collection!!, IEnumerable values!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - try { collection.Clear(); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs index 483f6bf6f0a37d..fa58b846c34b04 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorMemberImportDefinition.cs @@ -15,14 +15,10 @@ internal sealed class PartCreatorMemberImportDefinition : ReflectionMemberImport public PartCreatorMemberImportDefinition( LazyMemberInfo importingLazyMember, ICompositionElement? origin, - ContractBasedImportDefinition productImportDefinition) + ContractBasedImportDefinition productImportDefinition!!) : base(importingLazyMember, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity, productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, productImportDefinition.IsRecomposable, false, productImportDefinition.RequiredCreationPolicy, MetadataServices.EmptyMetadata, origin) { - if (productImportDefinition == null) - { - throw new ArgumentNullException(nameof(productImportDefinition)); - } _productImportDefinition = productImportDefinition; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs index 09452db87569f0..93280fa2bc2aca 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/PartCreatorParameterImportDefinition.cs @@ -16,14 +16,10 @@ internal sealed class PartCreatorParameterImportDefinition : ReflectionParameter public PartCreatorParameterImportDefinition( Lazy importingLazyParameter, ICompositionElement? origin, - ContractBasedImportDefinition productImportDefinition) + ContractBasedImportDefinition productImportDefinition!!) : base(importingLazyParameter, CompositionConstants.PartCreatorContractName, CompositionConstants.PartCreatorTypeIdentity, productImportDefinition.RequiredMetadata, productImportDefinition.Cardinality, CreationPolicy.Any, MetadataServices.EmptyMetadata, origin) { - if (productImportDefinition == null) - { - throw new ArgumentNullException(nameof(productImportDefinition)); - } _productImportDefinition = productImportDefinition; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs index 7628378dc5f510..ceedd6c97bca0e 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionComposablePartDefinition.cs @@ -21,12 +21,8 @@ internal sealed class ReflectionComposablePartDefinition : ComposablePartDefinit private volatile ConstructorInfo? _constructor; private readonly object _lock = new object(); - public ReflectionComposablePartDefinition(IReflectionPartCreationInfo creationInfo) + public ReflectionComposablePartDefinition(IReflectionPartCreationInfo creationInfo!!) { - if (creationInfo == null) - { - throw new ArgumentNullException(nameof(creationInfo)); - } _creationInfo = creationInfo; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs index 144603f65ecf6a..4dc59dd2b64f60 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionExtensions.cs @@ -41,13 +41,8 @@ public static ReflectionMember ToReflectionMember(this LazyMemberInfo lazyMember } } - public static LazyMemberInfo ToLazyMember(this MemberInfo member) + public static LazyMemberInfo ToLazyMember(this MemberInfo member!!) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (member.MemberType == MemberTypes.Property) { PropertyInfo? property = member as PropertyInfo; @@ -81,13 +76,8 @@ public static ReflectionWritableMember ToReflectionWriteableMember(this LazyMemb return reflectionMember; } - public static ReflectionProperty ToReflectionProperty(this PropertyInfo property) + public static ReflectionProperty ToReflectionProperty(this PropertyInfo property!!) { - if (property == null) - { - throw new ArgumentNullException(nameof(property)); - } - return CreateReflectionProperty(property.GetGetMethod(true)!, property.GetSetMethod(true)!); } @@ -101,13 +91,8 @@ public static ReflectionProperty CreateReflectionProperty(MethodInfo getMethod, return new ReflectionProperty(getMethod, setMethod); } - public static ReflectionParameter ToReflectionParameter(this ParameterInfo parameter) + public static ReflectionParameter ToReflectionParameter(this ParameterInfo parameter!!) { - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - return new ReflectionParameter(parameter); } @@ -121,33 +106,18 @@ public static ReflectionMethod ToReflectionMethod(this MethodInfo method) return new ReflectionMethod(method); } - public static ReflectionField ToReflectionField(this FieldInfo field) + public static ReflectionField ToReflectionField(this FieldInfo field!!) { - if (field == null) - { - throw new ArgumentNullException(nameof(field)); - } - return new ReflectionField(field); } - public static ReflectionType ToReflectionType(this Type type) + public static ReflectionType ToReflectionType(this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - return new ReflectionType(type); } - public static ReflectionWritableMember ToReflectionWritableMember(this MemberInfo member) + public static ReflectionWritableMember ToReflectionWritableMember(this MemberInfo member!!) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (member.MemberType == MemberTypes.Property) { return ((PropertyInfo)member).ToReflectionProperty(); diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs index 544227712ac350..81283f0f124bd7 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionField.cs @@ -10,13 +10,8 @@ internal sealed class ReflectionField : ReflectionWritableMember { private readonly FieldInfo _field; - public ReflectionField(FieldInfo field) + public ReflectionField(FieldInfo field!!) { - if (field == null) - { - throw new ArgumentNullException(nameof(field)); - } - _field = field; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs index 0bf6f7f6b2cb4d..12a2a3af79b140 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberExportDefinition.cs @@ -14,13 +14,8 @@ internal sealed class ReflectionMemberExportDefinition : ExportDefinition, IComp private readonly ICompositionElement? _origin; private IDictionary? _metadata; - public ReflectionMemberExportDefinition(LazyMemberInfo member, ExportDefinition exportDefinition, ICompositionElement? origin) + public ReflectionMemberExportDefinition(LazyMemberInfo member, ExportDefinition exportDefinition!!, ICompositionElement? origin) { - if (exportDefinition == null) - { - throw new ArgumentNullException(nameof(exportDefinition)); - } - _member = member; _exportDefinition = exportDefinition; _origin = origin; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs index 20657c1d489376..8ea838bff2a591 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMemberImportDefinition.cs @@ -13,7 +13,7 @@ internal class ReflectionMemberImportDefinition : ReflectionImportDefinition public ReflectionMemberImportDefinition( LazyMemberInfo importingLazyMember, - string contractName, + string contractName!!, string? requiredTypeIdentity, IEnumerable>? requiredMetadata, ImportCardinality cardinality, @@ -24,11 +24,6 @@ public ReflectionMemberImportDefinition( ICompositionElement? origin) : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, isRecomposable, isPrerequisite, requiredCreationPolicy, metadata, origin) { - if (contractName == null) - { - throw new ArgumentNullException(nameof(contractName)); - } - _importingLazyMember = importingLazyMember; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs index a869d34e539ced..9484b9ec86ffb1 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionMethod.cs @@ -10,13 +10,8 @@ internal sealed partial class ReflectionMethod : ReflectionMember { private readonly MethodInfo _method; - public ReflectionMethod(MethodInfo method) + public ReflectionMethod(MethodInfo method!!) { - if (method == null) - { - throw new ArgumentNullException(nameof(method)); - } - _method = method; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs index 9fabe855f0911b..8719590128f726 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionModelServices.cs @@ -325,18 +325,13 @@ internal sealed class ReflectionPartCreationInfo : IReflectionPartCreationInfo private readonly bool _isDisposalRequired; public ReflectionPartCreationInfo( - Lazy partType, + Lazy partType!!, bool isDisposalRequired, Lazy>? imports, Lazy>? exports, Lazy>? metadata, ICompositionElement? origin) { - if (partType == null) - { - throw new ArgumentNullException(nameof(partType)); - } - _partType = partType; _isDisposalRequired = isDisposalRequired; _imports = imports; diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs index 8124cfdf05b5fc..b7f7b9b6a6e168 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameter.cs @@ -11,13 +11,8 @@ internal sealed class ReflectionParameter : ReflectionItem { private readonly ParameterInfo _parameter; - public ReflectionParameter(ParameterInfo parameter) + public ReflectionParameter(ParameterInfo parameter!!) { - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - _parameter = parameter; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs index 0eb181feb9c26d..bb8241f9554f59 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionParameterImportDefinition.cs @@ -14,7 +14,7 @@ internal class ReflectionParameterImportDefinition : ReflectionImportDefinition private readonly Lazy _importingLazyParameter; public ReflectionParameterImportDefinition( - Lazy importingLazyParameter, + Lazy importingLazyParameter!!, string contractName, string? requiredTypeIdentity, IEnumerable>? requiredMetadata, @@ -24,11 +24,6 @@ public ReflectionParameterImportDefinition( ICompositionElement? origin) : base(contractName, requiredTypeIdentity, requiredMetadata, cardinality, false, true, requiredCreationPolicy, metadata, origin) { - if (importingLazyParameter == null) - { - throw new ArgumentNullException(nameof(importingLazyParameter)); - } - _importingLazyParameter = importingLazyParameter; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs index d06d87eb2525f2..9d3659fadf4c1d 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/ComponentModel/Composition/ReflectionModel/ReflectionType.cs @@ -9,13 +9,8 @@ internal sealed class ReflectionType : ReflectionMember { private readonly Type _type; - public ReflectionType(Type type) + public ReflectionType(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - _type = type; } diff --git a/src/libraries/System.ComponentModel.Composition/src/System/Composition/Diagnostics/CompositionTrace.cs b/src/libraries/System.ComponentModel.Composition/src/System/Composition/Diagnostics/CompositionTrace.cs index 1bdc9a906861cb..08105a1d139d87 100644 --- a/src/libraries/System.ComponentModel.Composition/src/System/Composition/Diagnostics/CompositionTrace.cs +++ b/src/libraries/System.ComponentModel.Composition/src/System/Composition/Diagnostics/CompositionTrace.cs @@ -12,13 +12,8 @@ namespace System.Composition.Diagnostics { internal static class CompositionTrace { - internal static void PartDefinitionResurrected(ComposablePartDefinition definition) + internal static void PartDefinitionResurrected(ComposablePartDefinition definition!!) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - if (CompositionTraceSource.CanWriteInformation) { CompositionTraceSource.WriteInformation(CompositionTraceId.Rejection_DefinitionResurrected, @@ -27,19 +22,8 @@ internal static void PartDefinitionResurrected(ComposablePartDefinition definiti } } - internal static void PartDefinitionRejected(ComposablePartDefinition definition, ChangeRejectedException exception) + internal static void PartDefinitionRejected(ComposablePartDefinition definition!!, ChangeRejectedException exception!!) { - if (definition == null) - { - throw new ArgumentNullException(nameof(definition)); - } - - if (exception == null) - { - throw new ArgumentNullException(nameof(exception)); - } - - if (CompositionTraceSource.CanWriteWarning) { CompositionTraceSource.WriteWarning(CompositionTraceId.Rejection_DefinitionRejected, @@ -49,23 +33,8 @@ internal static void PartDefinitionRejected(ComposablePartDefinition definition, } } - internal static void AssemblyLoadFailed(DirectoryCatalog catalog, string fileName, Exception exception) + internal static void AssemblyLoadFailed(DirectoryCatalog catalog!!, string fileName!!, Exception exception!!) { - if (catalog == null) - { - throw new ArgumentNullException(nameof(catalog)); - } - - if (exception == null) - { - throw new ArgumentNullException(nameof(exception)); - } - - if (fileName == null) - { - throw new ArgumentNullException(nameof(fileName)); - } - if (fileName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(fileName)), nameof(fileName)); @@ -81,13 +50,8 @@ internal static void AssemblyLoadFailed(DirectoryCatalog catalog, string fileNam } } - internal static void DefinitionMarkedWithPartNotDiscoverableAttribute(Type type) + internal static void DefinitionMarkedWithPartNotDiscoverableAttribute(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (CompositionTraceSource.CanWriteInformation) { CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionMarkedWithPartNotDiscoverableAttribute, @@ -96,18 +60,8 @@ internal static void DefinitionMarkedWithPartNotDiscoverableAttribute(Type type) } } - internal static void DefinitionMismatchedExportArity(Type type, MemberInfo member) + internal static void DefinitionMismatchedExportArity(Type type!!, MemberInfo member!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - if (CompositionTraceSource.CanWriteInformation) { CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionMismatchedExportArity, @@ -116,13 +70,8 @@ internal static void DefinitionMismatchedExportArity(Type type, MemberInfo membe } } - internal static void DefinitionContainsNoExports(Type type) + internal static void DefinitionContainsNoExports(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (CompositionTraceSource.CanWriteInformation) { CompositionTraceSource.WriteInformation(CompositionTraceId.Discovery_DefinitionContainsNoExports, @@ -131,13 +80,8 @@ internal static void DefinitionContainsNoExports(Type type) } } - internal static void MemberMarkedWithMultipleImportAndImportMany(ReflectionItem item) + internal static void MemberMarkedWithMultipleImportAndImportMany(ReflectionItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - if (CompositionTraceSource.CanWriteError) { CompositionTraceSource.WriteError(CompositionTraceId.Discovery_MemberMarkedWithMultipleImportAndImportMany, diff --git a/src/libraries/System.ComponentModel.Composition/tests/System/ComponentModel/Composition/ConstraintParser.cs b/src/libraries/System.ComponentModel.Composition/tests/System/ComponentModel/Composition/ConstraintParser.cs index 4f05d617239f2f..9543968fb86d16 100644 --- a/src/libraries/System.ComponentModel.Composition/tests/System/ComponentModel/Composition/ConstraintParser.cs +++ b/src/libraries/System.ComponentModel.Composition/tests/System/ComponentModel/Composition/ConstraintParser.cs @@ -134,18 +134,8 @@ private static bool TryParseContractNameFromEqualsExpression(Expression left, Ex return true; } - private static bool TryParseExpressionAsMetadataConstraintBody(Expression expression, Expression parameter, out string requiredMetadataKey, out Type requiredMetadataType) + private static bool TryParseExpressionAsMetadataConstraintBody(Expression expression!!, Expression parameter!!, out string requiredMetadataKey, out Type requiredMetadataType) { - if (expression == null) - { - throw new ArgumentNullException(nameof(expression)); - } - - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - requiredMetadataKey = null; requiredMetadataType = null; @@ -218,14 +208,9 @@ private static bool TryParseExpressionAsMetadataConstraintBody(Expression expres return true; } - private static bool TryParseConstant(ConstantExpression constant, out T result) + private static bool TryParseConstant(ConstantExpression constant!!, out T result) where T : class { - if (constant == null) - { - throw new ArgumentNullException(nameof(constant)); - } - if (constant.Type == typeof(T) && constant.Value != null) { result = (T)constant.Value; diff --git a/src/libraries/System.ComponentModel.EventBasedAsync/src/Resources/Strings.resx b/src/libraries/System.ComponentModel.EventBasedAsync/src/Resources/Strings.resx index 86c96d308b8dd6..6ce9fbe442bfc8 100644 --- a/src/libraries/System.ComponentModel.EventBasedAsync/src/Resources/Strings.resx +++ b/src/libraries/System.ComponentModel.EventBasedAsync/src/Resources/Strings.resx @@ -57,9 +57,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - A non-null SendOrPostCallback must be supplied. - This operation has already had OperationCompleted called on it and further calls are illegal. @@ -78,4 +75,4 @@ This BackgroundWorker states that it doesn't support cancellation. Modify WorkerSupportsCancellation to state that it does support cancellation. - \ No newline at end of file + diff --git a/src/libraries/System.ComponentModel.EventBasedAsync/src/System/ComponentModel/AsyncOperation.cs b/src/libraries/System.ComponentModel.EventBasedAsync/src/System/ComponentModel/AsyncOperation.cs index 8c90014be5d255..d008cab6819924 100644 --- a/src/libraries/System.ComponentModel.EventBasedAsync/src/System/ComponentModel/AsyncOperation.cs +++ b/src/libraries/System.ComponentModel.EventBasedAsync/src/System/ComponentModel/AsyncOperation.cs @@ -64,7 +64,7 @@ public void OperationCompleted() private void PostCore(SendOrPostCallback d, object? arg, bool markCompleted) { VerifyNotCompleted(); - VerifyDelegateNotNull(d); + ArgumentNullException.ThrowIfNull(d); if (markCompleted) { // This call is in response to a PostOperationCompleted. As such, we need to mark @@ -96,14 +96,6 @@ private void VerifyNotCompleted() } } - private void VerifyDelegateNotNull(SendOrPostCallback d) - { - if (d == null) - { - throw new ArgumentNullException(nameof(d), SR.Async_NullDelegate); - } - } - /// /// Only for use by AsyncOperationManager to create new AsyncOperation objects /// diff --git a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/Design/Serialization/DesignerSerializerAttribute.cs b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/Design/Serialization/DesignerSerializerAttribute.cs index 91f604aa7a46f1..2082564bbffaff 100644 --- a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/Design/Serialization/DesignerSerializerAttribute.cs +++ b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/Design/Serialization/DesignerSerializerAttribute.cs @@ -16,17 +16,8 @@ public sealed class DesignerSerializerAttribute : Attribute /// /// Creates a new designer serialization attribute. /// - public DesignerSerializerAttribute(Type serializerType, Type baseSerializerType) + public DesignerSerializerAttribute(Type serializerType!!, Type baseSerializerType!!) { - if (serializerType == null) - { - throw new ArgumentNullException(nameof(serializerType)); - } - if (baseSerializerType == null) - { - throw new ArgumentNullException(nameof(baseSerializerType)); - } - SerializerTypeName = serializerType.AssemblyQualifiedName; SerializerBaseTypeName = baseSerializerType.AssemblyQualifiedName; } @@ -34,13 +25,8 @@ public DesignerSerializerAttribute(Type serializerType, Type baseSerializerType) /// /// Creates a new designer serialization attribute. /// - public DesignerSerializerAttribute(string? serializerTypeName, Type baseSerializerType) + public DesignerSerializerAttribute(string? serializerTypeName, Type baseSerializerType!!) { - if (baseSerializerType == null) - { - throw new ArgumentNullException(nameof(baseSerializerType)); - } - SerializerTypeName = serializerTypeName; SerializerBaseTypeName = baseSerializerType.AssemblyQualifiedName; } diff --git a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/DesignerAttribute.cs b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/DesignerAttribute.cs index 51472cdeed5b6b..b78fb24b15721a 100644 --- a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/DesignerAttribute.cs +++ b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/DesignerAttribute.cs @@ -17,9 +17,9 @@ public sealed class DesignerAttribute : Attribute /// Initializes a new instance of the class using the name of the type that /// provides design-time services. /// - public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName) + public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName!!) { - DesignerTypeName = designerTypeName ?? throw new ArgumentNullException(nameof(designerTypeName)); + DesignerTypeName = designerTypeName; DesignerBaseTypeName = "System.ComponentModel.Design.IDesigner, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; } @@ -27,13 +27,8 @@ public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTy /// Initializes a new instance of the class using the type that provides /// design-time services. /// - public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerType) + public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerType!!) { - if (designerType == null) - { - throw new ArgumentNullException(nameof(designerType)); - } - DesignerTypeName = designerType.AssemblyQualifiedName!; DesignerBaseTypeName = "System.ComponentModel.Design.IDesigner, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; } @@ -43,10 +38,10 @@ public DesignerAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTy /// base class for the designer. /// public DesignerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerBaseTypeName) { - DesignerTypeName = designerTypeName ?? throw new ArgumentNullException(nameof(designerTypeName)); + DesignerTypeName = designerTypeName; DesignerBaseTypeName = designerBaseTypeName; } @@ -55,18 +50,9 @@ public DesignerAttribute( /// class and the base class for the designer. /// public DesignerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerBaseType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string designerTypeName!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerBaseType!!) { - if (designerTypeName == null) - { - throw new ArgumentNullException(nameof(designerTypeName)); - } - if (designerBaseType == null) - { - throw new ArgumentNullException(nameof(designerBaseType)); - } - DesignerTypeName = designerTypeName; DesignerBaseTypeName = designerBaseType.AssemblyQualifiedName!; } @@ -76,18 +62,9 @@ public DesignerAttribute( /// designer base class. /// public DesignerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerType, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerBaseType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerType!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type designerBaseType!!) { - if (designerType == null) - { - throw new ArgumentNullException(nameof(designerType)); - } - if (designerBaseType == null) - { - throw new ArgumentNullException(nameof(designerBaseType)); - } - DesignerTypeName = designerType.AssemblyQualifiedName!; DesignerBaseTypeName = designerBaseType.AssemblyQualifiedName!; } diff --git a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EditorAttribute.cs b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EditorAttribute.cs index ce23595bc2b1cb..6addfb6f065dea 100644 --- a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EditorAttribute.cs +++ b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EditorAttribute.cs @@ -28,10 +28,10 @@ public EditorAttribute() /// name of the editor. /// public EditorAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string? baseTypeName) { - EditorTypeName = typeName ?? throw new ArgumentNullException(nameof(typeName)); + EditorTypeName = typeName; EditorBaseTypeName = baseTypeName; } @@ -39,18 +39,9 @@ public EditorAttribute( /// Initializes a new instance of the class. /// public EditorAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type baseType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type baseType!!) { - if (typeName == null) - { - throw new ArgumentNullException(nameof(typeName)); - } - if (baseType == null) - { - throw new ArgumentNullException(nameof(baseType)); - } - EditorTypeName = typeName; EditorBaseTypeName = baseType.AssemblyQualifiedName; } @@ -59,18 +50,9 @@ public EditorAttribute( /// Initializes a new instance of the class. /// public EditorAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type type, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type baseType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type type!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type baseType!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (baseType == null) - { - throw new ArgumentNullException(nameof(baseType)); - } - EditorTypeName = type.AssemblyQualifiedName!; EditorBaseTypeName = baseType.AssemblyQualifiedName; } diff --git a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EventHandlerList.cs b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EventHandlerList.cs index 54e01530a48ad4..40bd1c903b01f0 100644 --- a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EventHandlerList.cs +++ b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/EventHandlerList.cs @@ -69,13 +69,8 @@ public void AddHandler(object key, Delegate? value) } } - public void AddHandlers(EventHandlerList listToAddFrom) + public void AddHandlers(EventHandlerList listToAddFrom!!) { - if (listToAddFrom == null) - { - throw new ArgumentNullException(nameof(listToAddFrom)); - } - ListEntry? currentListEntry = listToAddFrom._head; while (currentListEntry != null) { diff --git a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/InvalidEnumArgumentException.cs b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/InvalidEnumArgumentException.cs index bd24fd3129c8d8..da48222cbfcba1 100644 --- a/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/InvalidEnumArgumentException.cs +++ b/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/InvalidEnumArgumentException.cs @@ -43,16 +43,12 @@ public InvalidEnumArgumentException(string? message, Exception? innerException) /// class with a message generated from the argument, invalid value, and /// enumeration class. /// - public InvalidEnumArgumentException(string? argumentName, int invalidValue, Type enumClass) + public InvalidEnumArgumentException(string? argumentName, int invalidValue, Type enumClass!!) : base(SR.Format(SR.InvalidEnumArgument, argumentName, invalidValue, - enumClass?.Name), argumentName) + enumClass.Name), argumentName) { - if (enumClass == null) - { - throw new ArgumentNullException(nameof(enumClass)); - } } /// diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/MS/Internal/Xml/Linq/ComponentModel/XComponentModel.cs b/src/libraries/System.ComponentModel.TypeConverter/src/MS/Internal/Xml/Linq/ComponentModel/XComponentModel.cs index 102ca666d2e444..c8920bb7c00f3e 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/MS/Internal/Xml/Linq/ComponentModel/XComponentModel.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/MS/Internal/Xml/Linq/ComponentModel/XComponentModel.cs @@ -500,12 +500,8 @@ internal sealed class XDeferredAxis : IEnumerable, IEnumerable where T : X internal XElement element; internal XName? name; - public XDeferredAxis(Func> func, XElement element, XName? name) + public XDeferredAxis(Func> func!!, XElement element!!, XName? name) { - if (func == null) - throw new ArgumentNullException(nameof(func)); - if (element == null) - throw new ArgumentNullException(nameof(element)); _func = func; this.element = element; this.name = name; @@ -546,12 +542,8 @@ internal sealed class XDeferredSingleton where T : XObject internal XElement element; internal XName? name; - public XDeferredSingleton(Func func, XElement element, XName? name) + public XDeferredSingleton(Func func!!, XElement element!!, XName? name) { - if (func == null) - throw new ArgumentNullException(nameof(func)); - if (element == null) - throw new ArgumentNullException(nameof(element)); _func = func; this.element = element; this.name = name; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeCollection.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeCollection.cs index 934475456098a5..df35395f255337 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeCollection.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeCollection.cs @@ -3,6 +3,7 @@ using System.Reflection; using System.Collections; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace System.ComponentModel @@ -19,7 +20,7 @@ public class AttributeCollection : ICollection, IEnumerable /// public static readonly AttributeCollection Empty = new AttributeCollection(null); - private static Hashtable? s_defaultAttributes; + private static Dictionary? s_defaultAttributes; private readonly Attribute[] _attributes; @@ -46,10 +47,7 @@ public AttributeCollection(params Attribute[]? attributes) for (int idx = 0; idx < _attributes.Length; idx++) { - if (_attributes[idx] == null) - { - throw new ArgumentNullException(nameof(attributes)); - } + ArgumentNullException.ThrowIfNull(_attributes[idx], nameof(attributes)); } } @@ -60,13 +58,8 @@ protected AttributeCollection() : this(Array.Empty()) /// /// Creates a new AttributeCollection from an existing AttributeCollection /// - public static AttributeCollection FromExisting(AttributeCollection existing, params Attribute[]? newAttributes) + public static AttributeCollection FromExisting(AttributeCollection existing!!, params Attribute[]? newAttributes) { - if (existing == null) - { - throw new ArgumentNullException(nameof(existing)); - } - if (newAttributes == null) { newAttributes = Array.Empty(); @@ -78,10 +71,7 @@ public static AttributeCollection FromExisting(AttributeCollection existing, par for (int idx = 0; idx < newAttributes.Length; idx++) { - if (newAttributes[idx] == null) - { - throw new ArgumentNullException(nameof(newAttributes)); - } + ArgumentNullException.ThrowIfNull(newAttributes[idx], nameof(newAttributes)); // We must see if this attribute is already in the existing // array. If it is, we replace it. @@ -135,15 +125,10 @@ public static AttributeCollection FromExisting(AttributeCollection existing, par /// /// Gets the attribute with the specified type. /// - public virtual Attribute? this[[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type attributeType] + public virtual Attribute? this[[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type attributeType!!] { get { - if (attributeType == null) - { - throw new ArgumentNullException(nameof(attributeType)); - } - lock (s_internalSyncObject) { // 2 passes here for perf. Really! first pass, we just @@ -257,24 +242,19 @@ public bool Contains(Attribute[]? attributes) /// Returns the default value for an attribute. This uses the following heuristic: /// 1. It looks for a public static field named "Default". /// - protected Attribute? GetDefaultAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type attributeType) + protected Attribute? GetDefaultAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type attributeType!!) { - if (attributeType == null) - { - throw new ArgumentNullException(nameof(attributeType)); - } - lock (s_internalSyncObject) { if (s_defaultAttributes == null) { - s_defaultAttributes = new Hashtable(); + s_defaultAttributes = new Dictionary(); } // If we have already encountered this, use what's in the table. - if (s_defaultAttributes.ContainsKey(attributeType)) + if (s_defaultAttributes.TryGetValue(attributeType, out Attribute? defaultAttribute)) { - return (Attribute?)s_defaultAttributes[attributeType]; + return defaultAttribute; } Attribute? attr = null; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeProviderAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeProviderAttribute.cs index 69e13363d62a56..3c9f22c6572dbe 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeProviderAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/AttributeProviderAttribute.cs @@ -13,30 +13,25 @@ public class AttributeProviderAttribute : Attribute /// /// Creates a new AttributeProviderAttribute object. /// - public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] string typeName) + public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] string typeName!!) { - TypeName = typeName ?? throw new ArgumentNullException(nameof(typeName)); + TypeName = typeName; } /// /// Creates a new AttributeProviderAttribute object. /// - public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] string typeName, string propertyName) + public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] string typeName!!, string propertyName!!) { - TypeName = typeName ?? throw new ArgumentNullException(nameof(typeName)); - PropertyName = propertyName ?? throw new ArgumentNullException(nameof(propertyName)); + TypeName = typeName; + PropertyName = propertyName; } /// /// Creates a new AttributeProviderAttribute object. /// - public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] Type type) + public AttributeProviderAttribute([DynamicallyAccessedMembers(RequiredMemberTypes)] Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - TypeName = type.AssemblyQualifiedName; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/BaseNumberConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/BaseNumberConverter.cs index 24158ec5b2c853..0cc31005ea0549 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/BaseNumberConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/BaseNumberConverter.cs @@ -89,13 +89,8 @@ public override bool CanConvertFrom(ITypeDescriptorContext? context, Type source /// /// Converts the given value object to the destination type. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string) && value != null && TargetType.IsInstanceOfType(value)) { if (culture == null) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentResourceManager.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentResourceManager.cs index 945a723d1b6e7b..efb6eb8fb41cc3 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentResourceManager.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ComponentResourceManager.cs @@ -17,7 +17,7 @@ namespace System.ComponentModel /// public class ComponentResourceManager : ResourceManager { - private Hashtable? _resourceSets; + private Dictionary?>? _resourceSets; private CultureInfo? _neutralResourcesCulture; public ComponentResourceManager() @@ -63,16 +63,8 @@ private CultureInfo? NeutralResourcesCulture /// property the resource will be ignored. /// [RequiresUnreferencedCode("The Type of value cannot be statically discovered.")] - public virtual void ApplyResources(object value, string objectName, CultureInfo? culture) + public virtual void ApplyResources(object value!!, string objectName!!, CultureInfo? culture) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (objectName == null) - { - throw new ArgumentNullException(nameof(objectName)); - } if (culture == null) { culture = CultureInfo.CurrentUICulture; @@ -93,13 +85,13 @@ public virtual void ApplyResources(object value, string objectName, CultureInfo? if (_resourceSets == null) { - _resourceSets = new Hashtable(); + _resourceSets = new Dictionary?>(); resources = FillResources(culture, out _); _resourceSets[culture] = resources; } else { - resources = (SortedList?)_resourceSets[culture]; + resources = _resourceSets.GetValueOrDefault(culture, defaultValue: null); if (resources == null || (resources.Comparer.Equals(StringComparer.OrdinalIgnoreCase) != IgnoreCase)) { resources = FillResources(culture, out _); diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Container.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Container.cs index 9449116e8cad81..3617a233e79bca 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Container.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Container.cs @@ -217,13 +217,8 @@ private void Remove(IComponent? component, bool preserveSite) /// components in the container. /// [RequiresUnreferencedCode("The Type of components in the container cannot be statically discovered.")] - protected virtual void ValidateName(IComponent component, string? name) + protected virtual void ValidateName(IComponent component!!, string? name) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - if (name != null) { for (int i = 0; i < Math.Min(_siteCount, _sites!.Length); i++) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs index 3e8408548c63a0..16f64850b08078 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/CultureInfoConverter.cs @@ -29,13 +29,8 @@ public class CultureInfoConverter : TypeConverter /// /// Retrieves the Name for a input CultureInfo. /// - protected virtual string GetCultureName(CultureInfo culture) + protected virtual string GetCultureName(CultureInfo culture!!) { - if (culture == null) - { - throw new ArgumentNullException(nameof(culture)); - } - return culture.Name; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerOptionService.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerOptionService.cs index df182f2dff24d9..b39b1b67472e3f 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerOptionService.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerOptionService.cs @@ -32,18 +32,8 @@ public DesignerOptionCollection Options /// anything into the component parameter of the property descriptor will be /// ignored and the value object will be substituted. /// - protected DesignerOptionCollection CreateOptionCollection(DesignerOptionCollection parent, string name, object value) + protected DesignerOptionCollection CreateOptionCollection(DesignerOptionCollection parent!!, string name!!, object value) { - if (parent == null) - { - throw new ArgumentNullException(nameof(parent)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.InvalidArgumentValue, "name.Length"), nameof(name)); @@ -57,18 +47,8 @@ protected DesignerOptionCollection CreateOptionCollection(DesignerOptionCollecti /// null if the property couldn't be found. /// [RequiresUnreferencedCode("The Type of DesignerOptionCollection's value cannot be statically discovered.")] - private PropertyDescriptor? GetOptionProperty(string pageName, string valueName) + private PropertyDescriptor? GetOptionProperty(string pageName!!, string valueName!!) { - if (pageName == null) - { - throw new ArgumentNullException(nameof(pageName)); - } - - if (valueName == null) - { - throw new ArgumentNullException(nameof(valueName)); - } - string[] optionNames = pageName.Split('\\'); DesignerOptionCollection? options = Options; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerVerbCollection.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerVerbCollection.cs index fcd934ab68b83c..b22b655bf28922 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerVerbCollection.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesignerVerbCollection.cs @@ -21,26 +21,16 @@ public DesignerVerb? this[int index] public int Add(DesignerVerb? value) => List.Add(value); - public void AddRange(DesignerVerb?[] value) + public void AddRange(DesignerVerb?[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(DesignerVerbCollection value) + public void AddRange(DesignerVerbCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesigntimeLicenseContext.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesigntimeLicenseContext.cs index eb5f0d456b8cd3..1da32e75bb553e 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesigntimeLicenseContext.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/DesigntimeLicenseContext.cs @@ -30,13 +30,8 @@ public class DesigntimeLicenseContext : LicenseContext /// /// Sets a saved license key. /// - public override void SetSavedLicenseKey(Type type, string key) + public override void SetSavedLicenseKey(Type type!!, string key) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - _savedLicenseKeys[type.AssemblyQualifiedName!] = key; } } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/HelpKeywordAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/HelpKeywordAttribute.cs index 460ec9b91d2f59..1179fc405b1fbb 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/HelpKeywordAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/HelpKeywordAttribute.cs @@ -59,21 +59,16 @@ public HelpKeywordAttribute() /// /// Creates a HelpKeywordAttribute with the value being the given keyword string. /// - public HelpKeywordAttribute(string keyword) + public HelpKeywordAttribute(string keyword!!) { - HelpKeyword = keyword ?? throw new ArgumentNullException(nameof(keyword)); + HelpKeyword = keyword; } /// /// Creates a HelpKeywordAttribute with the value being the full name of the given type. /// - public HelpKeywordAttribute(Type t) + public HelpKeywordAttribute(Type t!!) { - if (t == null) - { - throw new ArgumentNullException(nameof(t)); - } - HelpKeyword = t.FullName; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/ContextStack.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/ContextStack.cs index 2e7841929e1540..b0b88158fdcfb4 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/ContextStack.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/ContextStack.cs @@ -1,7 +1,7 @@ // 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; +using System.Collections.Generic; namespace System.ComponentModel.Design.Serialization { @@ -23,7 +23,7 @@ namespace System.ComponentModel.Design.Serialization /// public sealed class ContextStack { - private ArrayList? _contextStack; + private List? _contextStack; /// /// Retrieves the current object on the stack, or null @@ -66,15 +66,10 @@ public object? this[int level] /// inherits from or implements the given type, or /// null if no object on the stack implements the type. /// - public object? this[Type type] + public object? this[Type type!!] { get { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (_contextStack != null) { int level = _contextStack.Count; @@ -99,16 +94,11 @@ public object? this[Type type] /// be popped in order. There is no way to remove an object that was /// appended to the end of the stack without popping all other objects. /// - public void Append(object context) + public void Append(object context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (_contextStack == null) { - _contextStack = new ArrayList(); + _contextStack = new List(); } _contextStack.Insert(0, context); } @@ -134,16 +124,11 @@ public void Append(object context) /// /// Pushes the given object onto the stack. /// - public void Push(object context) + public void Push(object context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if (_contextStack == null) { - _contextStack = new ArrayList(); + _contextStack = new List(); } _contextStack.Add(context); } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/DefaultSerializationProviderAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/DefaultSerializationProviderAttribute.cs index c1c610a1bb28f1..060ad08d616df5 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/DefaultSerializationProviderAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/DefaultSerializationProviderAttribute.cs @@ -16,26 +16,16 @@ public sealed class DefaultSerializationProviderAttribute : Attribute /// /// Creates a new DefaultSerializationProviderAttribute /// - public DefaultSerializationProviderAttribute(Type providerType) + public DefaultSerializationProviderAttribute(Type providerType!!) { - if (providerType == null) - { - throw new ArgumentNullException(nameof(providerType)); - } - ProviderTypeName = providerType.AssemblyQualifiedName!; } /// /// Creates a new DefaultSerializationProviderAttribute /// - public DefaultSerializationProviderAttribute(string providerTypeName) + public DefaultSerializationProviderAttribute(string providerTypeName!!) { - if (providerTypeName == null) - { - throw new ArgumentNullException(nameof(providerTypeName)); - } - ProviderTypeName = providerTypeName; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/MemberRelationshipService.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/MemberRelationshipService.cs index 090fa91accbf7c..54f7abcd9cfeb5 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/MemberRelationshipService.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/MemberRelationshipService.cs @@ -69,32 +69,14 @@ public MemberRelationship this[MemberRelationship source] /// Also sets a relationship between two objects. Null can be passed as the property value, in which /// case the relationship will be cleared. /// - public MemberRelationship this[object sourceOwner, MemberDescriptor sourceMember] + public MemberRelationship this[object sourceOwner!!, MemberDescriptor sourceMember!!] { get { - if (sourceOwner == null) - { - throw new ArgumentNullException(nameof(sourceOwner)); - } - if (sourceMember == null) - { - throw new ArgumentNullException(nameof(sourceMember)); - } - return GetRelationship(new MemberRelationship(sourceOwner, sourceMember)); } set { - if (sourceOwner == null) - { - throw new ArgumentNullException(nameof(sourceOwner)); - } - if (sourceMember == null) - { - throw new ArgumentNullException(nameof(sourceMember)); - } - SetRelationship(new MemberRelationship(sourceOwner, sourceMember), value); } } @@ -197,10 +179,10 @@ public bool Equals(RelationshipEntry other) /// /// Creates a new member relationship. /// - public MemberRelationship(object owner, MemberDescriptor member) + public MemberRelationship(object owner!!, MemberDescriptor member!!) { - Owner = owner ?? throw new ArgumentNullException(nameof(owner)); - Member = member ?? throw new ArgumentNullException(nameof(member)); + Owner = owner; + Member = member; } /// diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/RootDesignerSerializerAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/RootDesignerSerializerAttribute.cs index f9b7d358911b9e..c22454c9d84b66 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/RootDesignerSerializerAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/Serialization/RootDesignerSerializerAttribute.cs @@ -17,17 +17,8 @@ public sealed class RootDesignerSerializerAttribute : Attribute /// /// Creates a new designer serialization attribute. /// - public RootDesignerSerializerAttribute(Type serializerType, Type baseSerializerType, bool reloadable) + public RootDesignerSerializerAttribute(Type serializerType!!, Type baseSerializerType!!, bool reloadable) { - if (serializerType == null) - { - throw new ArgumentNullException(nameof(serializerType)); - } - if (baseSerializerType == null) - { - throw new ArgumentNullException(nameof(baseSerializerType)); - } - SerializerTypeName = serializerType.AssemblyQualifiedName; SerializerBaseTypeName = baseSerializerType.AssemblyQualifiedName; Reloadable = reloadable; @@ -36,13 +27,8 @@ public RootDesignerSerializerAttribute(Type serializerType, Type baseSerializerT /// /// Creates a new designer serialization attribute. /// - public RootDesignerSerializerAttribute(string serializerTypeName, Type baseSerializerType, bool reloadable) + public RootDesignerSerializerAttribute(string serializerTypeName, Type baseSerializerType!!, bool reloadable) { - if (baseSerializerType == null) - { - throw new ArgumentNullException(nameof(baseSerializerType)); - } - SerializerTypeName = serializerTypeName; SerializerBaseTypeName = baseSerializerType.AssemblyQualifiedName; Reloadable = reloadable; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/ServiceContainer.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/ServiceContainer.cs index 116bbf564c0265..3077865a5f5adc 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/ServiceContainer.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/Design/ServiceContainer.cs @@ -233,10 +233,7 @@ public virtual void RemoveService(Type serviceType, bool promote) } // We're going to remove this from our local list. - if (serviceType == null) - { - throw new ArgumentNullException(nameof(serviceType)); - } + ArgumentNullException.ThrowIfNull(serviceType); Services.Remove(serviceType); } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/EnumConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/EnumConverter.cs index c043cdd6e1011b..aae303fab6b605 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/EnumConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/EnumConverter.cs @@ -115,13 +115,8 @@ private static long GetEnumValue(bool isUnderlyingTypeUInt64, Enum enumVal, Cult /// /// Converts the given value object to the specified destination type. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string) && value != null) { // Raise an argument exception if the value isn't defined and if diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/InstallerTypeAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/InstallerTypeAttribute.cs index 79ae3633528f87..508c394d9a13f0 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/InstallerTypeAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/InstallerTypeAttribute.cs @@ -17,13 +17,8 @@ public class InstallerTypeAttribute : Attribute /// /// Initializes a new instance of the System.Windows.Forms.ComponentModel.InstallerTypeAttribute class. /// - public InstallerTypeAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type installerType) + public InstallerTypeAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type installerType!!) { - if (installerType == null) - { - throw new ArgumentNullException(nameof(installerType)); - } - _typeName = installerType.AssemblyQualifiedName; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/LicenseManager.LicenseInteropHelper.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/LicenseManager.LicenseInteropHelper.cs index 94476ab50969b4..ddc88ef89f486d 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/LicenseManager.LicenseInteropHelper.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/LicenseManager.LicenseInteropHelper.cs @@ -1,10 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.ComponentModel.Design; -using System.Collections; +using System.Collections.Generic; using System.Reflection; -using System.Runtime.InteropServices; namespace System.ComponentModel { @@ -64,9 +62,9 @@ public override void SetSavedLicenseKey(Type type, string? key) // Used from IClassFactory2 when retrieving LicInfo private sealed class LicInfoHelperLicenseContext : LicenseContext { - private readonly Hashtable _savedLicenseKeys = new Hashtable(); + private readonly Dictionary _savedLicenseKeys = new Dictionary(); - public bool Contains(string assemblyName) => _savedLicenseKeys.Contains(assemblyName); + public bool Contains(string assemblyName) => _savedLicenseKeys.ContainsKey(assemblyName); public override LicenseUsageMode UsageMode => LicenseUsageMode.Designtime; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MaskedTextProvider.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MaskedTextProvider.cs index 5810df7258e5fc..7fef5ef5ccaa7a 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MaskedTextProvider.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MaskedTextProvider.cs @@ -882,13 +882,8 @@ public bool Add(string input) /// The MaskedTextResultHint out param gives a hint about the operation result reason. /// Returns true on success, false otherwise. /// - public bool Add(string input, out int testPosition, out MaskedTextResultHint resultHint) + public bool Add(string input!!, out int testPosition, out MaskedTextResultHint resultHint) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - testPosition = LastAssignedPosition + 1; if (input.Length == 0) // nothing to add. @@ -1258,13 +1253,8 @@ public bool InsertAt(string input, int position) /// The MaskedTextResultHint out param gives more information about the operation result. /// Returns true on success, false otherwise. /// - public bool InsertAt(string input, int position, out int testPosition, out MaskedTextResultHint resultHint) + public bool InsertAt(string input!!, int position, out int testPosition, out MaskedTextResultHint resultHint) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - if (position < 0 || position >= _testString.Length) { testPosition = position; @@ -1819,13 +1809,8 @@ public bool Replace(string input, int position) /// The MaskedTextResultHint out param gives more information about the operation result. /// Returns true on success, false otherwise. /// - public bool Replace(string input, int position, out int testPosition, out MaskedTextResultHint resultHint) + public bool Replace(string input!!, int position, out int testPosition, out MaskedTextResultHint resultHint) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - if (position < 0 || position >= _testString.Length) { testPosition = position; @@ -1858,13 +1843,8 @@ public bool Replace(string input, int position, out int testPosition, out Masked /// The MaskedTextResultHint out param gives more information about the operation result. /// Returns true on success, false otherwise. /// - public bool Replace(string input, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint) + public bool Replace(string input!!, int startPosition, int endPosition, out int testPosition, out MaskedTextResultHint resultHint) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - if (endPosition >= _testString.Length) { testPosition = endPosition; @@ -2044,13 +2024,8 @@ public bool Set(string input) /// The MaskedTextResultHint out param gives more information about the operation result. /// If passwordChar is assigned, it is rendered in the output string instead of the user-supplied values. /// - public bool Set(string input, out int testPosition, out MaskedTextResultHint resultHint) + public bool Set(string input!!, out int testPosition, out MaskedTextResultHint resultHint) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - testPosition = 0; if (input.Length == 0) // Clearing the input text. diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MemberDescriptor.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MemberDescriptor.cs index 3d419bf44a7ac2..7bace2d4e7ecbe 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MemberDescriptor.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MemberDescriptor.cs @@ -38,12 +38,8 @@ protected MemberDescriptor(string name) : this(name, null) /// /// Initializes a new instance of the class with the specified and array. /// - protected MemberDescriptor(string name, Attribute[]? attributes) + protected MemberDescriptor(string name!!, Attribute[]? attributes) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.InvalidMemberName, nameof(name)); @@ -65,13 +61,8 @@ protected MemberDescriptor(string name, Attribute[]? attributes) /// /// Initializes a new instance of the class with the specified . /// - protected MemberDescriptor(MemberDescriptor descr) + protected MemberDescriptor(MemberDescriptor descr!!) { - if (descr == null) - { - throw new ArgumentNullException(nameof(descr)); - } - _name = descr.Name; _displayName = _name; _nameHash = _name?.GetHashCode() ?? 0; @@ -89,13 +80,8 @@ protected MemberDescriptor(MemberDescriptor descr) /// and the attributes /// in both the old and the array. /// - protected MemberDescriptor(MemberDescriptor oldMemberDescriptor, Attribute[]? newAttributes) + protected MemberDescriptor(MemberDescriptor oldMemberDescriptor!!, Attribute[]? newAttributes) { - if (oldMemberDescriptor == null) - { - throw new ArgumentNullException(nameof(oldMemberDescriptor)); - } - _name = oldMemberDescriptor.Name; _displayName = oldMemberDescriptor.DisplayName; _nameHash = _name.GetHashCode(); @@ -316,13 +302,8 @@ public override bool Equals([NotNullWhen(true)] object? obj) /// specified list of attributes in the parent class. For duplicate attributes, /// the last one added to the list will be kept. /// - protected virtual void FillAttributes(IList attributeList) + protected virtual void FillAttributes(IList attributeList!!) { - if (attributeList == null) - { - throw new ArgumentNullException(nameof(attributeList)); - } - if (_originalAttributes != null) { foreach (Attribute attr in _originalAttributes) @@ -406,17 +387,12 @@ private void FilterAttributesIfNeeded() /// Finds the given method through reflection. /// protected static MethodInfo? FindMethod( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type componentClass, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type componentClass!!, string name, Type[] args, Type returnType, bool publicOnly) { - if (componentClass == null) - { - throw new ArgumentNullException(nameof(componentClass)); - } - MethodInfo? result; if (publicOnly) { @@ -445,18 +421,8 @@ private void FilterAttributesIfNeeded() /// someone associated another object with this instance, or if the instance is a /// custom type descriptor, GetInvocationTarget may return a different value. /// - protected virtual object? GetInvocationTarget(Type type, object instance) + protected virtual object? GetInvocationTarget(Type type!!, object instance!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return TypeDescriptor.GetAssociation(type, instance); } @@ -466,19 +432,8 @@ private void FilterAttributesIfNeeded() protected static ISite? GetSite(object? component) => (component as IComponent)?.Site; [Obsolete("MemberDescriptor.GetInvokee has been deprecated. Use GetInvocationTarget instead.")] - protected static object GetInvokee(Type componentClass, object component) + protected static object GetInvokee(Type componentClass!!, object component!!) { - - if (componentClass == null) - { - throw new ArgumentNullException(nameof(componentClass)); - } - - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - return TypeDescriptor.GetAssociation(componentClass, component); } } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MultilineStringConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MultilineStringConverter.cs index 656191ebfaffcb..62275414eaa2ef 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MultilineStringConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/MultilineStringConverter.cs @@ -14,13 +14,8 @@ public class MultilineStringConverter : TypeConverter /// /// Converts the given value object to the specified destination type. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string) && value is string) { return SR.Text; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NestedContainer.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NestedContainer.cs index 87728cf2c6b961..d443705fc6d315 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NestedContainer.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NestedContainer.cs @@ -18,9 +18,9 @@ public class NestedContainer : Container, INestedContainer /// /// Creates a new NestedContainer. /// - public NestedContainer(IComponent owner) + public NestedContainer(IComponent owner!!) { - Owner = owner ?? throw new ArgumentNullException(nameof(owner)); + Owner = owner; Owner.Disposed += new EventHandler(OnOwnerDisposed); } @@ -59,12 +59,8 @@ protected virtual string? OwnerName /// /// Creates a site for the component within the container. /// - protected override ISite CreateSite(IComponent component, string? name) + protected override ISite CreateSite(IComponent component!!, string? name) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } return new Site(component, this, name); } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NullableConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NullableConverter.cs index e0a06176054ebc..d59ceab099e5e2 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NullableConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/NullableConverter.cs @@ -97,13 +97,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// /// Converts the given value object to the destination type. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == UnderlyingType && value != null && NullableType.IsInstanceOfType(value)) { return value; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/PropertyDescriptor.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/PropertyDescriptor.cs index 9ffaaa702da168..0300f9f3bbec8d 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/PropertyDescriptor.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/PropertyDescriptor.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Reflection; @@ -15,7 +16,7 @@ public abstract class PropertyDescriptor : MemberDescriptor internal const string PropertyDescriptorPropertyTypeMessage = "PropertyDescriptor's PropertyType cannot be statically discovered."; private TypeConverter? _converter; - private Hashtable? _valueChangedHandlers; + private Dictionary? _valueChangedHandlers; private object?[]? _editors; private Type[]? _editorTypes; private int _editorCount; @@ -121,24 +122,15 @@ public DesignerSerializationVisibility SerializationVisibility /// /// Allows interested objects to be notified when this property changes. /// - public virtual void AddValueChanged(object component, EventHandler handler) + public virtual void AddValueChanged(object component!!, EventHandler handler!!) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - if (handler == null) - { - throw new ArgumentNullException(nameof(handler)); - } - if (_valueChangedHandlers == null) { - _valueChangedHandlers = new Hashtable(); + _valueChangedHandlers = new Dictionary(); } - EventHandler? h = (EventHandler?)_valueChangedHandlers[component]; - _valueChangedHandlers[component] = Delegate.Combine(h, handler); + EventHandler? h = _valueChangedHandlers.GetValueOrDefault(component, defaultValue: null); + _valueChangedHandlers[component] = (EventHandler?)Delegate.Combine(h, handler); } /// @@ -392,27 +384,18 @@ protected virtual void OnValueChanged(object? component, EventArgs e) { if (component != null) { - ((EventHandler?)_valueChangedHandlers?[component])?.Invoke(component, e); + _valueChangedHandlers?.GetValueOrDefault(component, defaultValue: null)?.Invoke(component, e); } } /// /// Allows interested objects to be notified when this property changes. /// - public virtual void RemoveValueChanged(object component, EventHandler handler) + public virtual void RemoveValueChanged(object component!!, EventHandler handler!!) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - if (handler == null) - { - throw new ArgumentNullException(nameof(handler)); - } - if (_valueChangedHandlers != null) { - EventHandler? h = (EventHandler?)_valueChangedHandlers[component]; + EventHandler? h = _valueChangedHandlers.GetValueOrDefault(component, defaultValue: null); h = (EventHandler?)Delegate.Remove(h, handler); if (h != null) { @@ -434,7 +417,7 @@ public virtual void RemoveValueChanged(object component, EventHandler handler) { if (component != null && _valueChangedHandlers != null) { - return (EventHandler?)_valueChangedHandlers[component]; + return _valueChangedHandlers.GetValueOrDefault(component, defaultValue: null); } else { diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ProvidePropertyAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ProvidePropertyAttribute.cs index 4f49461af5c373..639e76d3538317 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ProvidePropertyAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ProvidePropertyAttribute.cs @@ -16,13 +16,8 @@ public sealed class ProvidePropertyAttribute : Attribute /// public ProvidePropertyAttribute( string propertyName, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type receiverType) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type receiverType!!) { - if (receiverType == null) - { - throw new ArgumentNullException(nameof(receiverType)); - } - PropertyName = propertyName; ReceiverTypeName = receiverType.AssemblyQualifiedName!; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectPropertyDescriptor.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectPropertyDescriptor.cs index ec1987b77bb451..e5a11634c6e7bc 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectPropertyDescriptor.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectPropertyDescriptor.cs @@ -481,17 +481,8 @@ private MethodInfo? ShouldSerializeMethodValue /// /// Allows interested objects to be notified when this property changes. /// - public override void AddValueChanged(object component, EventHandler handler) + public override void AddValueChanged(object component!!, EventHandler handler!!) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - if (handler == null) - { - throw new ArgumentNullException(nameof(handler)); - } - // If there's an event called Changed, hook the caller's handler directly up to that on the component EventDescriptor changedEvent = ChangedEventValue; if (changedEvent != null && changedEvent.EventType.IsInstanceOfType(handler)) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectTypeDescriptionProvider.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectTypeDescriptionProvider.cs index 2e694467f8465f..e4ff7e40f2cb60 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectTypeDescriptionProvider.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ReflectTypeDescriptionProvider.cs @@ -228,18 +228,9 @@ internal static void ClearReflectionCaches() /// table for the editor type, if one can be found. /// [RequiresUnreferencedCode("The Types specified in table may be trimmed, or have their static construtors trimmed.")] - internal static void AddEditorTable(Type editorBaseType, Hashtable table) + internal static void AddEditorTable(Type editorBaseType!!, Hashtable table) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - - if (table == null) - { - Debug.Fail("COMPAT: Editor table should not be null"); - // don't throw; RTM didn't so we can't do it either. - } + Debug.Assert(table != null, "COMPAT: Editor table should not be null"); // don't throw; RTM didn't so we can't do it either. lock (s_internalSyncObject) { @@ -628,13 +619,8 @@ internal PropertyDescriptorCollection GetExtendedProperties(object instance) return properties; } - protected internal override IExtenderProvider[] GetExtenderProviders(object instance) + protected internal override IExtenderProvider[] GetExtenderProviders(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - IComponent? component = instance as IComponent; if (component != null && component.Site != null) { diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ToolboxItemAttribute.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ToolboxItemAttribute.cs index f974e4f2275140..d86d57cd0c198c 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ToolboxItemAttribute.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/ToolboxItemAttribute.cs @@ -46,21 +46,16 @@ public ToolboxItemAttribute(bool defaultType) /// /// Initializes a new instance of ToolboxItemAttribute and specifies the name of the type. /// - public ToolboxItemAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string toolboxItemTypeName) + public ToolboxItemAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string toolboxItemTypeName!!) { - _toolboxItemTypeName = toolboxItemTypeName ?? throw new ArgumentNullException(nameof(toolboxItemTypeName)); + _toolboxItemTypeName = toolboxItemTypeName; } /// /// Initializes a new instance of ToolboxItemAttribute and specifies the type of the toolbox item. /// - public ToolboxItemAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type toolboxItemType) + public ToolboxItemAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type toolboxItemType!!) { - if (toolboxItemType == null) - { - throw new ArgumentNullException(nameof(toolboxItemType)); - } - _toolboxItemType = toolboxItemType; _toolboxItemTypeName = toolboxItemType.AssemblyQualifiedName; } diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeConverter.cs index f19dff841be888..2a40510c67ff29 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeConverter.cs @@ -110,13 +110,8 @@ public virtual bool CanConvertTo(ITypeDescriptorContext? context, Type? destinat /// Converts the given value object to /// the specified destination type using the specified context and arguments. /// - public virtual object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public virtual object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { if (value == null) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptionProvider.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptionProvider.cs index ce66028a1acf7d..deb02e1689b910 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptionProvider.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptionProvider.cs @@ -61,10 +61,7 @@ protected TypeDescriptionProvider(TypeDescriptionProvider parent) return _parent.CreateInstance(provider, objectType, argTypes, args); } - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } + ArgumentNullException.ThrowIfNull(objectType); return Activator.CreateInstance(objectType, args); } @@ -114,10 +111,7 @@ protected internal virtual IExtenderProvider[] GetExtenderProviders(object insta return _parent.GetExtenderProviders(instance); } - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } + ArgumentNullException.ThrowIfNull(instance); return Array.Empty(); } @@ -160,13 +154,8 @@ protected internal virtual IExtenderProvider[] GetExtenderProviders(object insta /// method will invoke the parent provider's GetReflectionType method. /// [RequiresUnreferencedCode("GetReflectionType is not trim compatible because the Type of object cannot be statically discovered.")] - public Type GetReflectionType(object instance) + public Type GetReflectionType(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return GetReflectionType(instance.GetType(), instance); } @@ -205,10 +194,7 @@ public virtual Type GetRuntimeType(Type reflectionType) return _parent.GetRuntimeType(reflectionType); } - if (reflectionType == null) - { - throw new ArgumentNullException(nameof(reflectionType)); - } + ArgumentNullException.ThrowIfNull(reflectionType); if (reflectionType.GetType().Assembly == typeof(object).Assembly) { @@ -240,13 +226,8 @@ public virtual Type GetRuntimeType(Type reflectionType) /// return base. /// [RequiresUnreferencedCode("The Type of instance cannot be statically discovered.")] - public ICustomTypeDescriptor? GetTypeDescriptor(object instance) + public ICustomTypeDescriptor? GetTypeDescriptor(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return GetTypeDescriptor(instance.GetType(), instance); } @@ -278,13 +259,8 @@ public virtual Type GetRuntimeType(Type reflectionType) /// This method returns true if the type is "supported" by the type descriptor /// and its chain of type description providers. /// - public virtual bool IsSupportedType(Type type) + public virtual bool IsSupportedType(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (_parent != null) { return _parent.IsSupportedType(type); diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs index ded2068999cc5c..9fb2c5a8c34913 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeDescriptor.cs @@ -114,18 +114,8 @@ public static Type InterfaceType /// RemoveProvider if the added attributes are no longer needed. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[] attributes) + public static TypeDescriptionProvider AddAttributes(Type type!!, params Attribute[] attributes!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (attributes == null) - { - throw new ArgumentNullException(nameof(attributes)); - } - TypeDescriptionProvider existingProvider = GetProvider(type); TypeDescriptionProvider provider = new AttributeProvider(existingProvider, attributes); TypeDescriptor.AddProvider(provider, type); @@ -143,18 +133,8 @@ public static TypeDescriptionProvider AddAttributes(Type type, params Attribute[ /// RemoveProvider if the added attributes are no longer needed. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static TypeDescriptionProvider AddAttributes(object instance, params Attribute[] attributes) + public static TypeDescriptionProvider AddAttributes(object instance!!, params Attribute[] attributes!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - - if (attributes == null) - { - throw new ArgumentNullException(nameof(attributes)); - } - TypeDescriptionProvider existingProvider = GetProvider(instance); TypeDescriptionProvider provider = new AttributeProvider(existingProvider, attributes); AddProvider(provider, instance); @@ -184,18 +164,8 @@ public static void AddEditorTable(Type editorBaseType, Hashtable table) /// all types. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void AddProvider(TypeDescriptionProvider provider, Type type) + public static void AddProvider(TypeDescriptionProvider provider!!, Type type!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - lock (s_providerTable) { // Get the root node, hook it up, and stuff it back into @@ -217,17 +187,8 @@ public static void AddProvider(TypeDescriptionProvider provider, Type type) /// the object from finalizing. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void AddProvider(TypeDescriptionProvider provider, object instance) + public static void AddProvider(TypeDescriptionProvider provider!!, object instance!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } bool refreshNeeded; // Get the root node, hook it up, and stuff it back into @@ -257,18 +218,8 @@ public static void AddProvider(TypeDescriptionProvider provider, object instance /// all types. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void AddProviderTransparent(TypeDescriptionProvider provider, Type type) + public static void AddProviderTransparent(TypeDescriptionProvider provider!!, Type type!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - AddProvider(provider, type); } @@ -280,18 +231,8 @@ public static void AddProviderTransparent(TypeDescriptionProvider provider, Type /// the object from finalizing. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void AddProviderTransparent(TypeDescriptionProvider provider, object instance) + public static void AddProviderTransparent(TypeDescriptionProvider provider!!, object instance!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - AddProvider(provider, instance); } @@ -360,18 +301,8 @@ private static void CheckDefaultProvider(Type type) /// instance that is related to its type parameter. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void CreateAssociation(object primary, object secondary) + public static void CreateAssociation(object primary!!, object secondary!!) { - if (primary == null) - { - throw new ArgumentNullException(nameof(primary)); - } - - if (secondary == null) - { - throw new ArgumentNullException(nameof(secondary)); - } - if (primary == secondary) { throw new ArgumentException(SR.TypeDescriptorSameAssociation); @@ -441,21 +372,13 @@ public static EventDescriptor CreateEvent( /// public static object? CreateInstance( IServiceProvider? provider, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType!!, Type[]? argTypes, object[]? args) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - if (argTypes != null) { - if (args == null) - { - throw new ArgumentNullException(nameof(args)); - } + ArgumentNullException.ThrowIfNull(args); if (argTypes.Length != args.Length) { @@ -575,18 +498,8 @@ public static PropertyDescriptor CreateProperty( /// for the requested type. It never returns null. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static object GetAssociation(Type type, object primary) + public static object GetAssociation(Type type!!, object primary!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (primary == null) - { - throw new ArgumentNullException(nameof(primary)); - } - object associatedObject = primary; if (!type.IsInstanceOfType(primary)) @@ -924,14 +837,9 @@ internal static TypeConverter GetConverterTrimUnsafe([DynamicallyAccessedMembers /// Performs arg checking so callers don't have to. /// internal static ICustomTypeDescriptor? GetDescriptor( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type!!, string typeName) { - if (type == null) - { - throw new ArgumentNullException(typeName); - } - return NodeFor(type).GetTypeDescriptor(type); } @@ -989,13 +897,8 @@ internal static ICustomTypeDescriptor GetExtendedDescriptor(object component) /// [EditorBrowsable(EditorBrowsableState.Advanced)] [RequiresUnreferencedCode(EditorRequiresUnreferencedCode + " The Type of component cannot be statically discovered.")] - public static object? GetEditor(object component, Type editorBaseType, bool noCustomTypeDesc) + public static object? GetEditor(object component, Type editorBaseType!!, bool noCustomTypeDesc) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - return GetDescriptor(component, noCustomTypeDesc)!.GetEditor(editorBaseType); } @@ -1005,13 +908,8 @@ internal static ICustomTypeDescriptor GetExtendedDescriptor(object component) [RequiresUnreferencedCode(EditorRequiresUnreferencedCode)] public static object? GetEditor( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type, - Type editorBaseType) + Type editorBaseType!!) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - return GetDescriptor(type, nameof(type))!.GetEditor(editorBaseType); } @@ -1222,13 +1120,8 @@ public static EventDescriptorCollection GetEvents(object component, Attribute[]? /// return a different fully qualified name. /// [RequiresUnreferencedCode("The Type of component cannot be statically discovered.")] - public static string? GetFullComponentName(object component) + public static string? GetFullComponentName(object component!!) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - return GetProvider(component).GetFullComponentName(component); } @@ -1430,13 +1323,8 @@ private static PropertyDescriptorCollection GetPropertiesImpl(object component, /// another provider that someone else has added. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static TypeDescriptionProvider GetProvider(Type type) + public static TypeDescriptionProvider GetProvider(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - return NodeFor(type, true); } @@ -1448,13 +1336,8 @@ public static TypeDescriptionProvider GetProvider(Type type) /// another provider that someone else has added. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static TypeDescriptionProvider GetProvider(object instance) + public static TypeDescriptionProvider GetProvider(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return NodeFor(instance, true); } @@ -1475,13 +1358,8 @@ internal static TypeDescriptionProvider GetProviderRecursive(Type type) /// [EditorBrowsable(EditorBrowsableState.Advanced)] [return: DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] - public static Type GetReflectionType([DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] Type type) + public static Type GetReflectionType([DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - return NodeFor(type).GetReflectionType(type); } @@ -1490,13 +1368,8 @@ public static Type GetReflectionType([DynamicallyAccessedMembers(ReflectTypesDyn /// [EditorBrowsable(EditorBrowsableState.Advanced)] [RequiresUnreferencedCode("GetReflectionType is not trim compatible because the Type of object cannot be statically discovered.")] - public static Type GetReflectionType(object instance) + public static Type GetReflectionType(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return NodeFor(instance).GetReflectionType(instance); } @@ -2479,18 +2352,8 @@ public static IComNativeDescriptorHandler? ComNativeDescriptorHandler /// The RemoveAssociation method removes an association with an object. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveAssociation(object primary, object secondary) + public static void RemoveAssociation(object primary!!, object secondary!!) { - if (primary == null) - { - throw new ArgumentNullException(nameof(primary)); - } - - if (secondary == null) - { - throw new ArgumentNullException(nameof(secondary)); - } - Hashtable assocTable = AssociationTable; IList? associations = (IList?)assocTable?[primary]; if (associations != null) @@ -2516,13 +2379,8 @@ public static void RemoveAssociation(object primary, object secondary) /// The RemoveAssociations method removes all associations for a primary object. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveAssociations(object primary) + public static void RemoveAssociations(object primary!!) { - if (primary == null) - { - throw new ArgumentNullException(nameof(primary)); - } - Hashtable assocTable = AssociationTable; assocTable?.Remove(primary); } @@ -2534,18 +2392,8 @@ public static void RemoveAssociations(object primary) /// associated with. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveProvider(TypeDescriptionProvider provider, Type type) + public static void RemoveProvider(TypeDescriptionProvider provider!!, Type type!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - // Walk the nodes until we find the right one, and then remove it. NodeRemove(type, provider); RaiseRefresh(type); @@ -2558,18 +2406,8 @@ public static void RemoveProvider(TypeDescriptionProvider provider, Type type) /// associated with. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveProvider(TypeDescriptionProvider provider, object instance) + public static void RemoveProvider(TypeDescriptionProvider provider!!, object instance!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - // Walk the nodes until we find the right one, and then remove it. NodeRemove(instance, provider); RaiseRefresh(instance); @@ -2583,18 +2421,8 @@ public static void RemoveProvider(TypeDescriptionProvider provider, object insta /// associated with. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveProviderTransparent(TypeDescriptionProvider provider, Type type) + public static void RemoveProviderTransparent(TypeDescriptionProvider provider!!, Type type!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - RemoveProvider(provider, type); } @@ -2605,18 +2433,8 @@ public static void RemoveProviderTransparent(TypeDescriptionProvider provider, T /// associated with. /// [EditorBrowsable(EditorBrowsableState.Advanced)] - public static void RemoveProviderTransparent(TypeDescriptionProvider provider, object instance) + public static void RemoveProviderTransparent(TypeDescriptionProvider provider!!, object instance!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - RemoveProvider(provider, instance); } @@ -2648,13 +2466,8 @@ private static bool ShouldHideMember(MemberDescriptor? member, Attribute? attrib /// /// Sorts descriptors by name of the descriptor. /// - public static void SortDescriptorArray(IList infos) + public static void SortDescriptorArray(IList infos!!) { - if (infos == null) - { - throw new ArgumentNullException(nameof(infos)); - } - ArrayList.Adapter(infos).Sort(MemberDescriptorComparer.Instance); } @@ -2681,13 +2494,8 @@ internal ComNativeDescriptionProvider(IComNativeDescriptorHandler handler) /// descriptor that walks the linked list for each of its calls. /// [return: NotNullIfNotNull("instance")] - public override ICustomTypeDescriptor? GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType, object? instance) + public override ICustomTypeDescriptor? GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType!!, object? instance) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - if (instance == null) { return null; @@ -3055,13 +2863,8 @@ TypeConverter ICustomTypeDescriptor.GetConverter() /// ICustomTypeDescriptor implementation. /// [RequiresUnreferencedCode(EditorRequiresUnreferencedCode)] - object? ICustomTypeDescriptor.GetEditor(Type editorBaseType) + object? ICustomTypeDescriptor.GetEditor(Type editorBaseType!!) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - object? editor = _primary.GetEditor(editorBaseType) ?? _secondary.GetEditor(editorBaseType); return editor; @@ -3155,21 +2958,13 @@ internal TypeDescriptionNode(TypeDescriptionProvider provider) /// public override object? CreateInstance( IServiceProvider? provider, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType!!, Type[]? argTypes, object[]? args) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - if (argTypes != null) { - if (args == null) - { - throw new ArgumentNullException(nameof(args)); - } + ArgumentNullException.ThrowIfNull(args); if (argTypes.Length != args.Length) { @@ -3184,13 +2979,8 @@ internal TypeDescriptionNode(TypeDescriptionProvider provider) /// Implements GetCache. This just walks the linked /// list looking for someone who implements the call. /// - public override IDictionary? GetCache(object instance) + public override IDictionary? GetCache(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return Provider.GetCache(instance); } @@ -3199,23 +2989,13 @@ internal TypeDescriptionNode(TypeDescriptionProvider provider) /// descriptor that walks the linked list for each of its calls. /// [RequiresUnreferencedCode("The Type of instance cannot be statically discovered.")] - public override ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance) + public override ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return new DefaultExtendedTypeDescriptor(this, instance); } - protected internal override IExtenderProvider[] GetExtenderProviders(object instance) + protected internal override IExtenderProvider[] GetExtenderProviders(object instance!!) { - if (instance == null) - { - throw new ArgumentNullException(nameof(instance)); - } - return Provider.GetExtenderProviders(instance); } @@ -3229,13 +3009,8 @@ protected internal override IExtenderProvider[] GetExtenderProviders(object inst /// GetTypeDescriptor.GetComponentName. /// [RequiresUnreferencedCode("The Type of component cannot be statically discovered.")] - public override string? GetFullComponentName(object component) + public override string? GetFullComponentName(object component!!) { - if (component == null) - { - throw new ArgumentNullException(nameof(component)); - } - return Provider.GetFullComponentName(component); } @@ -3245,24 +3020,14 @@ protected internal override IExtenderProvider[] GetExtenderProviders(object inst /// [return: DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] public override Type GetReflectionType( - [DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] Type objectType, + [DynamicallyAccessedMembers(ReflectTypesDynamicallyAccessedMembers)] Type objectType!!, object? instance) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - return Provider.GetReflectionType(objectType, instance); } - public override Type GetRuntimeType(Type objectType) + public override Type GetRuntimeType(Type objectType!!) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - return Provider.GetRuntimeType(objectType); } @@ -3270,13 +3035,8 @@ public override Type GetRuntimeType(Type objectType) /// Implements GetTypeDescriptor. This creates a custom type /// descriptor that walks the linked list for each of its calls. /// - public override ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType, object? instance) + public override ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType!!, object? instance) { - if (objectType == null) - { - throw new ArgumentNullException(nameof(objectType)); - } - if (instance != null && !objectType.IsInstanceOfType(instance)) { throw new ArgumentException(nameof(instance)); @@ -3285,12 +3045,8 @@ public override ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMemb return new DefaultTypeDescriptor(this, objectType, instance); } - public override bool IsSupportedType(Type type) + public override bool IsSupportedType(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return Provider.IsSupportedType(type); } @@ -3447,13 +3203,8 @@ TypeConverter ICustomTypeDescriptor.GetConverter() /// ICustomTypeDescriptor implementation. /// [RequiresUnreferencedCode(EditorRequiresUnreferencedCode)] - object? ICustomTypeDescriptor.GetEditor(Type editorBaseType) + object? ICustomTypeDescriptor.GetEditor(Type editorBaseType!!) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - // Check to see if the provider we get is a ReflectTypeDescriptionProvider. // If so, we can call on it directly rather than creating another // custom type descriptor @@ -3774,13 +3525,8 @@ TypeConverter ICustomTypeDescriptor.GetConverter() /// ICustomTypeDescriptor implementation. /// [RequiresUnreferencedCode(EditorRequiresUnreferencedCode)] - object? ICustomTypeDescriptor.GetEditor(Type editorBaseType) + object? ICustomTypeDescriptor.GetEditor(Type editorBaseType!!) { - if (editorBaseType == null) - { - throw new ArgumentNullException(nameof(editorBaseType)); - } - // Check to see if the provider we get is a ReflectTypeDescriptionProvider. // If so, we can call on it directly rather than creating another // custom type descriptor diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeListConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeListConverter.cs index 779fc781923167..96a75b59aaee28 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeListConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/TypeListConverter.cs @@ -64,13 +64,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// /// Converts the given value object to the specified destination type. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { if (value == null) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/UriTypeConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/UriTypeConverter.cs index b11bf810aafd59..b594d47fd0c5eb 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/UriTypeConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/UriTypeConverter.cs @@ -61,13 +61,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// Converts the given value object to /// the specified destination type using the specified context and arguments. /// - public override object ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Uri uri) { if (destinationType == typeof(InstanceDescriptor)) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/VersionConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/VersionConverter.cs index 616de8a7895c86..1c2361ebc54d68 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/VersionConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/VersionConverter.cs @@ -62,13 +62,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// Converts the given value object to /// the specified destination type using the specified context and arguments. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Version version) { if (destinationType == typeof(InstanceDescriptor)) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/ColorConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/ColorConverter.cs index c3c83605400e0e..5b43217751826b 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/ColorConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/ColorConverter.cs @@ -45,13 +45,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertFrom(context, culture, value); } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Color c) { if (destinationType == typeof(string)) diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/PointConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/PointConverter.cs index 7bf0030eccdda5..56b0817af3433e 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/PointConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/PointConverter.cs @@ -61,13 +61,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertFrom(context, culture, value); } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Point pt) { if (destinationType == typeof(string)) @@ -101,13 +96,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertTo(context, culture, value, destinationType); } - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? x = propertyValues["X"]; object? y = propertyValues["Y"]; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/RectangleConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/RectangleConverter.cs index 9c0393da53ab33..ebb96371a95f45 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/RectangleConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/RectangleConverter.cs @@ -59,13 +59,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertFrom(context, culture, value); } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Rectangle rect) { if (destinationType == typeof(string)) @@ -104,13 +99,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertTo(context, culture, value, destinationType); } - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? x = propertyValues["X"]; object? y = propertyValues["Y"]; object? width = propertyValues["Width"]; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeConverter.cs index b19113721a455e..aa15f5c416bc0e 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeConverter.cs @@ -59,13 +59,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertFrom(context, culture, value); } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is Size size) { if (destinationType == typeof(string)) @@ -99,13 +94,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertTo(context, culture, value, destinationType); } - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? width = propertyValues["Width"]; object? height = propertyValues["Height"]; diff --git a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeFConverter.cs b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeFConverter.cs index c48c0f4cd6698d..6db51a7530a517 100644 --- a/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeFConverter.cs +++ b/src/libraries/System.ComponentModel.TypeConverter/src/System/Drawing/SizeFConverter.cs @@ -58,13 +58,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertFrom(context, culture, value); } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (value is SizeF size) { if (destinationType == typeof(string)) @@ -96,13 +91,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina return base.ConvertTo(context, culture, value, destinationType); } - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? width = propertyValues["Width"]; object? height = propertyValues["Height"]; diff --git a/src/libraries/System.Composition.AttributedModel/src/System/Composition/PartMetadataAttribute.cs b/src/libraries/System.Composition.AttributedModel/src/System/Composition/PartMetadataAttribute.cs index 5564909ab1b90e..70c45e8aff1bcd 100644 --- a/src/libraries/System.Composition.AttributedModel/src/System/Composition/PartMetadataAttribute.cs +++ b/src/libraries/System.Composition.AttributedModel/src/System/Composition/PartMetadataAttribute.cs @@ -21,9 +21,9 @@ public class PartMetadataAttribute : Attribute /// An containing the metadata value. This can be /// . /// - public PartMetadataAttribute(string name, object value) + public PartMetadataAttribute(string name!!, object value) { - Name = name ?? throw new ArgumentNullException(nameof(name)); + Name = name; Value = value; } diff --git a/src/libraries/System.Composition.AttributedModel/src/System/Composition/SharingBoundaryAttribute.cs b/src/libraries/System.Composition.AttributedModel/src/System/Composition/SharingBoundaryAttribute.cs index e3f93414c4fa42..2ab60b99bbb8be 100644 --- a/src/libraries/System.Composition.AttributedModel/src/System/Composition/SharingBoundaryAttribute.cs +++ b/src/libraries/System.Composition.AttributedModel/src/System/Composition/SharingBoundaryAttribute.cs @@ -27,9 +27,9 @@ public sealed class SharingBoundaryAttribute : Attribute /// Construct a for the specified boundary names. /// /// Boundaries implemented by the created ExportLifetimeContext{T}s. - public SharingBoundaryAttribute(params string[] sharingBoundaryNames) + public SharingBoundaryAttribute(params string[] sharingBoundaryNames!!) { - _sharingBoundaryNames = sharingBoundaryNames ?? throw new ArgumentNullException(nameof(sharingBoundaryNames)); + _sharingBoundaryNames = sharingBoundaryNames; } /// diff --git a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ConventionBuilder.cs b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ConventionBuilder.cs index 738aa29a48d0be..c1185c2413b2d1 100644 --- a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ConventionBuilder.cs +++ b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ConventionBuilder.cs @@ -45,13 +45,8 @@ public PartConventionBuilder ForTypesDerivedFrom() /// /// The type from which matching types derive. /// A that must be used to specify the rule. - public PartConventionBuilder ForTypesDerivedFrom(Type type) + public PartConventionBuilder ForTypesDerivedFrom(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - var partBuilder = new PartConventionBuilder((t) => IsDescendentOf(t, type)); _conventions.Add(partBuilder); return partBuilder; @@ -74,13 +69,8 @@ public PartConventionBuilder ForType() /// /// The type to which the rule applies. /// A that must be used to specify the rule. - public PartConventionBuilder ForType(Type type) + public PartConventionBuilder ForType(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - var partBuilder = new PartConventionBuilder((t) => t == type); _conventions.Add(partBuilder); return partBuilder; @@ -93,13 +83,8 @@ public PartConventionBuilder ForType(Type type) /// A predicate that selects matching types. /// The type to which the rule applies. /// A that must be used to specify the rule. - public PartConventionBuilder ForTypesMatching(Predicate typeFilter) + public PartConventionBuilder ForTypesMatching(Predicate typeFilter!!) { - if (typeFilter == null) - { - throw new ArgumentNullException(nameof(typeFilter)); - } - var partBuilder = new PartConventionBuilder(typeFilter); _conventions.Add(partBuilder); return partBuilder; @@ -111,13 +96,8 @@ public PartConventionBuilder ForTypesMatching(Predicate typeFilter) /// /// A predicate that selects matching types. /// A that must be used to specify the rule. - public PartConventionBuilder ForTypesMatching(Predicate typeFilter) + public PartConventionBuilder ForTypesMatching(Predicate typeFilter!!) { - if (typeFilter == null) - { - throw new ArgumentNullException(nameof(typeFilter)); - } - var partBuilder = new PartConventionBuilder(typeFilter); _conventions.Add(partBuilder); return partBuilder; @@ -156,13 +136,8 @@ private IEnumerable>> EvaluateThisTypeInfoAgainstT /// The reflectedType the type used to retrieve the memberInfo. /// The member to supply attributes for. /// The list of applied attributes. - public override IEnumerable GetCustomAttributes(Type reflectedType, System.Reflection.MemberInfo member) + public override IEnumerable GetCustomAttributes(Type reflectedType, System.Reflection.MemberInfo member!!) { - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } - // Now edit the attributes returned from the base type List cachedAttributes = null; var typeInfo = member as TypeInfo; @@ -296,13 +271,8 @@ private List ReadMemberCustomAttributes(Type reflectedType, System.Re /// The reflectedType the type used to retrieve the parameterInfo. /// The parameter to supply attributes for. /// The list of applied attributes. - public override IEnumerable GetCustomAttributes(Type reflectedType, System.Reflection.ParameterInfo parameter) + public override IEnumerable GetCustomAttributes(Type reflectedType, System.Reflection.ParameterInfo parameter!!) { - if (parameter == null) - { - throw new ArgumentNullException(nameof(parameter)); - } - IEnumerable attributes = parameter.GetCustomAttributes(false); List cachedAttributes = ReadParameterCustomAttributes(reflectedType, parameter); return cachedAttributes == null ? attributes : attributes.Concat(cachedAttributes); diff --git a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ExportConventionBuilder.cs b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ExportConventionBuilder.cs index d460de83e2bfe0..a0bcdf7fe06a05 100644 --- a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ExportConventionBuilder.cs +++ b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ExportConventionBuilder.cs @@ -38,9 +38,9 @@ public ExportConventionBuilder AsContractType() /// /// The contract type. /// An export builder allowing further configuration. - public ExportConventionBuilder AsContractType(Type type) + public ExportConventionBuilder AsContractType(Type type!!) { - _contractType = type ?? throw new ArgumentNullException(nameof(type)); + _contractType = type; return this; } @@ -49,12 +49,8 @@ public ExportConventionBuilder AsContractType(Type type) /// /// The contract name. /// An export builder allowing further configuration. - public ExportConventionBuilder AsContractName(string contractName) + public ExportConventionBuilder AsContractName(string contractName!!) { - if (contractName == null) - { - throw new ArgumentNullException(nameof(contractName)); - } if (contractName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(contractName)), nameof(contractName)); @@ -68,9 +64,9 @@ public ExportConventionBuilder AsContractName(string contractName) /// /// A Func to retrieve the contract name from the part typeThe contract name. /// An export builder allowing further configuration. - public ExportConventionBuilder AsContractName(Func getContractNameFromPartType) + public ExportConventionBuilder AsContractName(Func getContractNameFromPartType!!) { - _getContractNameFromPartType = getContractNameFromPartType ?? throw new ArgumentNullException(nameof(getContractNameFromPartType)); + _getContractNameFromPartType = getContractNameFromPartType; return this; } @@ -80,13 +76,8 @@ public ExportConventionBuilder AsContractName(Func getContractName /// The name of the metadata item. /// The value of the metadata item. /// An export builder allowing further configuration. - public ExportConventionBuilder AddMetadata(string name, object value) + public ExportConventionBuilder AddMetadata(string name!!, object value) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); @@ -105,22 +96,13 @@ public ExportConventionBuilder AddMetadata(string name, object value) /// The name of the metadata item. /// A function that calculates the metadata value based on the type. /// An export builder allowing further configuration. - public ExportConventionBuilder AddMetadata(string name, Func getValueFromPartType) + public ExportConventionBuilder AddMetadata(string name!!, Func getValueFromPartType!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); } - if (getValueFromPartType == null) - { - throw new ArgumentNullException(nameof(getValueFromPartType)); - } - if (_metadataItemFuncs == null) { _metadataItemFuncs = new List>>(); diff --git a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ImportConventionBuilder.cs b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ImportConventionBuilder.cs index cbf0a1a54285e7..fef34353fb59be 100644 --- a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ImportConventionBuilder.cs +++ b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/ImportConventionBuilder.cs @@ -28,12 +28,8 @@ internal ImportConventionBuilder() { } /// /// /// An import builder allowing further configuration. - public ImportConventionBuilder AsContractName(string contractName) + public ImportConventionBuilder AsContractName(string contractName!!) { - if (contractName == null) - { - throw new ArgumentNullException(nameof(contractName)); - } if (contractName.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(contractName)), nameof(contractName)); @@ -47,9 +43,9 @@ public ImportConventionBuilder AsContractName(string contractName) /// /// A Func to retrieve the contract name from the part typeThe contract name. /// An export builder allowing further configuration. - public ImportConventionBuilder AsContractName(Func getContractNameFromPartType) + public ImportConventionBuilder AsContractName(Func getContractNameFromPartType!!) { - _getContractNameFromPartType = getContractNameFromPartType ?? throw new ArgumentNullException(nameof(getContractNameFromPartType)); + _getContractNameFromPartType = getContractNameFromPartType; return this; } @@ -90,12 +86,8 @@ public ImportConventionBuilder AllowDefault() /// The name of the constraint item. /// The value to match. /// An import builder allowing further configuration. - public ImportConventionBuilder AddMetadataConstraint(string name, object value) + public ImportConventionBuilder AddMetadataConstraint(string name!!, object value) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); @@ -114,22 +106,13 @@ public ImportConventionBuilder AddMetadataConstraint(string name, object value) /// The name of the constraint item. /// A function that calculates the value to match. /// An export builder allowing further configuration. - public ImportConventionBuilder AddMetadataConstraint(string name, Func getConstraintValueFromPartType) + public ImportConventionBuilder AddMetadataConstraint(string name!!, Func getConstraintValueFromPartType!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); } - if (getConstraintValueFromPartType == null) - { - throw new ArgumentNullException(nameof(getConstraintValueFromPartType)); - } - if (_metadataConstraintItemFuncs == null) { _metadataConstraintItemFuncs = new List>>(); diff --git a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilder.cs b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilder.cs index 8fbfd3d51ec4e4..151514d539203d 100644 --- a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilder.cs +++ b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilder.cs @@ -65,13 +65,8 @@ public PartConventionBuilder Export() /// /// Configuration action for the export. /// A part builder allowing further configuration of the part. - public PartConventionBuilder Export(Action exportConfiguration) + public PartConventionBuilder Export(Action exportConfiguration!!) { - if (exportConfiguration == null) - { - throw new ArgumentNullException(nameof(exportConfiguration)); - } - var exportBuilder = new ExportConventionBuilder(); exportConfiguration(exportBuilder); _typeExportBuilders.Add(exportBuilder); @@ -94,13 +89,8 @@ public PartConventionBuilder Export() /// /// Configuration action for the export. /// A part builder allowing further configuration of the part. - public PartConventionBuilder Export(Action exportConfiguration) + public PartConventionBuilder Export(Action exportConfiguration!!) { - if (exportConfiguration == null) - { - throw new ArgumentNullException(nameof(exportConfiguration)); - } - ExportConventionBuilder exportBuilder = new ExportConventionBuilder().AsContractType(); exportConfiguration(exportBuilder); _typeExportBuilders.Add(exportBuilder); @@ -112,9 +102,9 @@ public PartConventionBuilder Export(Action exportCon /// /// Filter that selects a single constructor. /// A part builder allowing further configuration of the part. - public PartConventionBuilder SelectConstructor(Func, ConstructorInfo> constructorSelector) + public PartConventionBuilder SelectConstructor(Func, ConstructorInfo> constructorSelector!!) { - _constructorFilter = constructorSelector ?? throw new ArgumentNullException(nameof(constructorSelector)); + _constructorFilter = constructorSelector; return this; } @@ -125,9 +115,9 @@ public PartConventionBuilder SelectConstructor(Func /// Action configuring the parameters of the selected constructor. /// A part builder allowing further configuration of the part. public PartConventionBuilder SelectConstructor(Func, ConstructorInfo> constructorSelector, - Action importConfiguration) + Action importConfiguration!!) { - _configureConstuctorImports = importConfiguration ?? throw new ArgumentNullException(nameof(importConfiguration)); + _configureConstuctorImports = importConfiguration; SelectConstructor(constructorSelector); return this; } @@ -137,13 +127,8 @@ public PartConventionBuilder SelectConstructor(Func /// /// Filter for interfaces. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter) + public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter!!) { - if (interfaceFilter == null) - { - throw new ArgumentNullException(nameof(interfaceFilter)); - } - return ExportInterfacesImpl(interfaceFilter, null); } @@ -162,19 +147,9 @@ public PartConventionBuilder ExportInterfaces() /// Filter for interfaces. /// Action to configure selected interfaces. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter, - Action exportConfiguration) + public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter!!, + Action exportConfiguration!!) { - if (interfaceFilter == null) - { - throw new ArgumentNullException(nameof(interfaceFilter)); - } - - if (exportConfiguration == null) - { - throw new ArgumentNullException(nameof(exportConfiguration)); - } - return ExportInterfacesImpl(interfaceFilter, exportConfiguration); } @@ -190,13 +165,8 @@ private PartConventionBuilder ExportInterfacesImpl(Predicate interfaceFilt /// /// Selector for exported properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportProperties(Predicate propertyFilter) + public PartConventionBuilder ExportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - return ExportPropertiesImpl(propertyFilter, null); } @@ -206,19 +176,9 @@ public PartConventionBuilder ExportProperties(Predicate propertyFi /// Selector for exported properties. /// Action to configure selected properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportProperties(Predicate propertyFilter, - Action exportConfiguration) + public PartConventionBuilder ExportProperties(Predicate propertyFilter!!, + Action exportConfiguration!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - - if (exportConfiguration == null) - { - throw new ArgumentNullException(nameof(exportConfiguration)); - } - return ExportPropertiesImpl(propertyFilter, exportConfiguration); } @@ -235,13 +195,8 @@ private PartConventionBuilder ExportPropertiesImpl(Predicate prope /// Contract type to export. /// Filter to select matching properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportProperties(Predicate propertyFilter) + public PartConventionBuilder ExportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - return ExportPropertiesImpl(propertyFilter, null); } @@ -252,19 +207,9 @@ public PartConventionBuilder ExportProperties(Predicate propert /// Filter to select matching properties. /// Action to configure selected properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ExportProperties(Predicate propertyFilter, - Action exportConfiguration) + public PartConventionBuilder ExportProperties(Predicate propertyFilter!!, + Action exportConfiguration!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - - if (exportConfiguration == null) - { - throw new ArgumentNullException(nameof(exportConfiguration)); - } - return ExportPropertiesImpl(propertyFilter, exportConfiguration); } @@ -280,13 +225,8 @@ private PartConventionBuilder ExportPropertiesImpl(Predicate pr /// /// Filter to select matching properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ImportProperties(Predicate propertyFilter) + public PartConventionBuilder ImportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - return ImportPropertiesImpl(propertyFilter, null); } @@ -296,19 +236,9 @@ public PartConventionBuilder ImportProperties(Predicate propertyFi /// Filter to select matching properties. /// Action to configure selected properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ImportProperties(Predicate propertyFilter, - Action importConfiguration) + public PartConventionBuilder ImportProperties(Predicate propertyFilter!!, + Action importConfiguration!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - - if (importConfiguration == null) - { - throw new ArgumentNullException(nameof(importConfiguration)); - } - return ImportPropertiesImpl(propertyFilter, importConfiguration); } @@ -325,13 +255,8 @@ private PartConventionBuilder ImportPropertiesImpl(Predicate prope /// Property type to import. /// Filter to select matching properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ImportProperties(Predicate propertyFilter) + public PartConventionBuilder ImportProperties(Predicate propertyFilter!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - return ImportPropertiesImpl(propertyFilter, null); } @@ -342,19 +267,9 @@ public PartConventionBuilder ImportProperties(Predicate propert /// Filter to select matching properties. /// Action to configure selected properties. /// A part builder allowing further configuration of the part. - public PartConventionBuilder ImportProperties(Predicate propertyFilter, - Action importConfiguration) + public PartConventionBuilder ImportProperties(Predicate propertyFilter!!, + Action importConfiguration!!) { - if (propertyFilter == null) - { - throw new ArgumentNullException(nameof(propertyFilter)); - } - - if (importConfiguration == null) - { - throw new ArgumentNullException(nameof(importConfiguration)); - } - return ImportPropertiesImpl(propertyFilter, importConfiguration); } @@ -390,13 +305,8 @@ public PartConventionBuilder Shared() /// /// Name of the sharing boundary. /// A part builder allowing further configuration of the part. - public PartConventionBuilder Shared(string sharingBoundary) + public PartConventionBuilder Shared(string sharingBoundary!!) { - if (sharingBoundary == null) - { - throw new ArgumentNullException(nameof(sharingBoundary)); - } - if (sharingBoundary.Length == 0) { throw new ArgumentException(SR.ArgumentException_EmptyString); @@ -418,12 +328,8 @@ private PartConventionBuilder SharedImpl(string sharingBoundary) /// The metadata name. /// The metadata value. /// A part builder allowing further configuration of the part. - public PartConventionBuilder AddPartMetadata(string name, object value) + public PartConventionBuilder AddPartMetadata(string name!!, object value) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); @@ -443,22 +349,13 @@ public PartConventionBuilder AddPartMetadata(string name, object value) /// The metadata name. /// A function mapping the part type to the metadata value. /// A part builder allowing further configuration of the part. - public PartConventionBuilder AddPartMetadata(string name, Func getValueFromPartType) + public PartConventionBuilder AddPartMetadata(string name!!, Func getValueFromPartType!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Format(SR.ArgumentException_EmptyString, nameof(name)), nameof(name)); } - if (getValueFromPartType == null) - { - throw new ArgumentNullException(nameof(getValueFromPartType)); - } - if (_metadataItemFuncs == null) { _metadataItemFuncs = new List>>(); diff --git a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilderOfT.cs b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilderOfT.cs index 717acbefec684a..0dd3993734a21e 100644 --- a/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilderOfT.cs +++ b/src/libraries/System.Composition.Convention/src/System/Composition/Convention/PartConventionBuilderOfT.cs @@ -27,13 +27,8 @@ public bool VerifyMethodInfo(MethodInfo mi) return mi == _methodInfo; } - private static MethodInfo SelectMethods(Expression> methodSelector) + private static MethodInfo SelectMethods(Expression> methodSelector!!) { - if (methodSelector == null) - { - throw new ArgumentNullException(nameof(methodSelector)); - } - Expression expr = Reduce(methodSelector).Body; if (expr.NodeType == ExpressionType.Call) { @@ -98,13 +93,8 @@ public void ConfigureExport(PropertyInfo propertyInfo, ExportConventionBuilder e _configureExport?.Invoke(exportBuilder); } - private static PropertyInfo SelectProperties(Expression> propertySelector) + private static PropertyInfo SelectProperties(Expression> propertySelector!!) { - if (propertySelector == null) - { - throw new ArgumentNullException(nameof(propertySelector)); - } - Expression expr = Reduce(propertySelector).Body; if (expr.NodeType == ExpressionType.MemberAccess) { @@ -157,13 +147,8 @@ public void ConfigureConstructorImports(ParameterInfo parameterInfo, ImportConve return; } - private void ParseSelectConstructor(Expression> constructorSelector) + private void ParseSelectConstructor(Expression> constructorSelector!!) { - if (constructorSelector == null) - { - throw new ArgumentNullException(nameof(constructorSelector)); - } - Expression expr = Reduce(constructorSelector).Body; if (expr.NodeType != ExpressionType.New) { @@ -218,13 +203,8 @@ internal PartConventionBuilder(Predicate selectType) : base(selectType) /// /// Expression that selects a single constructor. /// A part builder allowing further configuration of the part. - public PartConventionBuilder SelectConstructor(Expression> constructorSelector) + public PartConventionBuilder SelectConstructor(Expression> constructorSelector!!) { - if (constructorSelector == null) - { - throw new ArgumentNullException(nameof(constructorSelector)); - } - var adapter = new ConstructorExpressionAdapter(constructorSelector); base.SelectConstructor(adapter.SelectConstructor, adapter.ConfigureConstructorImports); return this; @@ -247,14 +227,9 @@ public PartConventionBuilder ExportProperty(Expression> prope /// Action to configure selected properties. /// A part builder allowing further configuration of the part. public PartConventionBuilder ExportProperty( - Expression> propertySelector, + Expression> propertySelector!!, Action exportConfiguration) { - if (propertySelector == null) - { - throw new ArgumentNullException(nameof(propertySelector)); - } - var adapter = new PropertyExpressionAdapter(propertySelector, null, exportConfiguration); base.ExportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureExport); return this; @@ -280,14 +255,9 @@ public PartConventionBuilder ExportProperty(ExpressionAction to configure selected properties. /// A part builder allowing further configuration of the part. public PartConventionBuilder ExportProperty( - Expression> propertySelector, + Expression> propertySelector!!, Action exportConfiguration) { - if (propertySelector == null) - { - throw new ArgumentNullException(nameof(propertySelector)); - } - var adapter = new PropertyExpressionAdapter(propertySelector, null, exportConfiguration); base.ExportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureExport); return this; @@ -310,14 +280,9 @@ public PartConventionBuilder ImportProperty(Expression> prope /// Action configuring the imported property. /// A part builder allowing further configuration of the part. public PartConventionBuilder ImportProperty( - Expression> propertySelector, + Expression> propertySelector!!, Action importConfiguration) { - if (propertySelector == null) - { - throw new ArgumentNullException(nameof(propertySelector)); - } - var adapter = new PropertyExpressionAdapter(propertySelector, importConfiguration, null); base.ImportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureImport); return this; @@ -342,14 +307,9 @@ public PartConventionBuilder ImportProperty(ExpressionAction configuring the imported property. /// A part builder allowing further configuration of the part. public PartConventionBuilder ImportProperty( - Expression> propertySelector, + Expression> propertySelector!!, Action importConfiguration) { - if (propertySelector == null) - { - throw new ArgumentNullException(nameof(propertySelector)); - } - var adapter = new PropertyExpressionAdapter(propertySelector, importConfiguration, null); base.ImportProperties(adapter.VerifyPropertyInfo, adapter.ConfigureImport); return this; @@ -359,13 +319,8 @@ public PartConventionBuilder ImportProperty( /// Mark the part as being shared within the entire composition. /// /// A part builder allowing further configuration of the part. - public PartConventionBuilder NotifyImportsSatisfied(Expression> methodSelector) + public PartConventionBuilder NotifyImportsSatisfied(Expression> methodSelector!!) { - if (methodSelector == null) - { - throw new ArgumentNullException(nameof(methodSelector)); - } - var adapter = new MethodExpressionAdapter(methodSelector); base.NotifyImportsSatisfied(adapter.VerifyMethodInfo); return this; diff --git a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/CompositionHost.cs b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/CompositionHost.cs index b8b01750bdef2e..44b0f727656728 100644 --- a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/CompositionHost.cs +++ b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/CompositionHost.cs @@ -41,13 +41,8 @@ public static CompositionHost CreateCompositionHost(params ExportDescriptorProvi /// Create the composition host. /// /// The container as an . - public static CompositionHost CreateCompositionHost(IEnumerable providers) + public static CompositionHost CreateCompositionHost(IEnumerable providers!!) { - if (providers == null) - { - throw new ArgumentNullException(nameof(providers)); - } - var allProviders = new ExportDescriptorProvider[] { new LazyExportDescriptorProvider(), new ExportFactoryExportDescriptorProvider(), diff --git a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionDependency.cs b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionDependency.cs index afb9a5b59f6f56..1bec402bf8faf4 100644 --- a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionDependency.cs +++ b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionDependency.cs @@ -37,23 +37,8 @@ public class CompositionDependency /// A marker used to identify the individual dependency among /// those on the dependent part. /// The contract required by the dependency. - public static CompositionDependency Satisfied(CompositionContract contract, ExportDescriptorPromise target, bool isPrerequisite, object site) + public static CompositionDependency Satisfied(CompositionContract contract!!, ExportDescriptorPromise target!!, bool isPrerequisite, object site!!) { - if (contract == null) - { - throw new ArgumentNullException(nameof(contract)); - } - - if (target == null) - { - throw new ArgumentNullException(nameof(target)); - } - - if (site == null) - { - throw new ArgumentNullException(nameof(site)); - } - return new CompositionDependency(contract, target, isPrerequisite, site); } @@ -64,18 +49,8 @@ public static CompositionDependency Satisfied(CompositionContract contract, Expo /// A marker used to identify the individual dependency among /// those on the dependent part. /// The contract required by the dependency. - public static CompositionDependency Missing(CompositionContract contract, object site) + public static CompositionDependency Missing(CompositionContract contract!!, object site!!) { - if (contract == null) - { - throw new ArgumentNullException(nameof(contract)); - } - - if (site == null) - { - throw new ArgumentNullException(nameof(site)); - } - return new CompositionDependency(contract, site); } @@ -87,23 +62,8 @@ public static CompositionDependency Missing(CompositionContract contract, object /// those on the dependent part. /// The targets found when expecting only one. /// The contract required by the dependency. - public static CompositionDependency Oversupplied(CompositionContract contract, IEnumerable targets, object site) + public static CompositionDependency Oversupplied(CompositionContract contract!!, IEnumerable targets!!, object site!!) { - if (contract == null) - { - throw new ArgumentNullException(nameof(contract)); - } - - if (targets == null) - { - throw new ArgumentNullException(nameof(targets)); - } - - if (site == null) - { - throw new ArgumentNullException(nameof(site)); - } - return new CompositionDependency(contract, targets, site); } diff --git a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionOperation.cs b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionOperation.cs index 8feef63077f259..aee870a0d404dd 100644 --- a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionOperation.cs +++ b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/CompositionOperation.cs @@ -28,18 +28,8 @@ private CompositionOperation() { } /// to the parents of the context if required). /// Activator that will drive the operation. /// The composed object graph. - public static object Run(LifetimeContext outermostLifetimeContext, CompositeActivator compositionRootActivator) + public static object Run(LifetimeContext outermostLifetimeContext!!, CompositeActivator compositionRootActivator!!) { - if (outermostLifetimeContext == null) - { - throw new ArgumentNullException(nameof(outermostLifetimeContext)); - } - - if (compositionRootActivator == null) - { - throw new ArgumentNullException(nameof(compositionRootActivator)); - } - using (var operation = new CompositionOperation()) { var result = compositionRootActivator(outermostLifetimeContext, operation); @@ -53,11 +43,8 @@ public static object Run(LifetimeContext outermostLifetimeContext, CompositeActi /// prerequisite part dependencies have been satisfied. /// /// Action to run. - public void AddNonPrerequisiteAction(Action action) + public void AddNonPrerequisiteAction(Action action!!) { - if (action == null) - throw new ArgumentNullException(nameof(action)); - if (_nonPrerequisiteActions == null) _nonPrerequisiteActions = new List(); @@ -69,13 +56,8 @@ public void AddNonPrerequisiteAction(Action action) /// all composition has completed. See OnImportsSatisfiedAttribute. /// /// Action to run. - public void AddPostCompositionAction(Action action) + public void AddPostCompositionAction(Action action!!) { - if (action == null) - { - throw new ArgumentNullException(nameof(action)); - } - if (_postCompositionActions == null) _postCompositionActions = new List(); diff --git a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/DirectExportDescriptor.cs b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/DirectExportDescriptor.cs index f85aa1be1e1531..0bfcddd06ae001 100644 --- a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/DirectExportDescriptor.cs +++ b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Core/DirectExportDescriptor.cs @@ -10,16 +10,8 @@ internal sealed class DirectExportDescriptor : ExportDescriptor private readonly CompositeActivator _activator; private readonly IDictionary _metadata; - public DirectExportDescriptor(CompositeActivator activator, IDictionary metadata) + public DirectExportDescriptor(CompositeActivator activator!!, IDictionary metadata!!) { - if (activator == null) - { - throw new ArgumentNullException(nameof(activator)); - } - if (metadata == null) - { - throw new ArgumentNullException(nameof(metadata)); - } _activator = activator; _metadata = metadata; } diff --git a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Util/Formatters.cs b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Util/Formatters.cs index d76687440ee469..55fb1829e834ce 100644 --- a/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Util/Formatters.cs +++ b/src/libraries/System.Composition.Hosting/src/System/Composition/Hosting/Util/Formatters.cs @@ -8,24 +8,14 @@ namespace System.Composition.Hosting.Util { internal static class Formatters { - public static string ReadableList(IEnumerable items) + public static string ReadableList(IEnumerable items!!) { - if (items == null) - { - throw new ArgumentNullException(nameof(items)); - } - string reply = string.Join(SR.Formatter_ListSeparatorWithSpace, items.OrderBy(t => t)); return !string.IsNullOrEmpty(reply) ? reply : SR.Formatter_None; } - public static string Format(Type type) + public static string Format(Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (type.IsConstructedGenericType) { return FormatClosedGeneric(type); @@ -33,13 +23,8 @@ public static string Format(Type type) return type.Name; } - private static string FormatClosedGeneric(Type closedGenericType) + private static string FormatClosedGeneric(Type closedGenericType!!) { - if (closedGenericType == null) - { - throw new ArgumentNullException(nameof(closedGenericType)); - } - if (!closedGenericType.IsConstructedGenericType) { throw new Exception(SR.Diagnostic_InternalExceptionMessage); diff --git a/src/libraries/System.Composition.Runtime/src/System/Composition/ExportFactoryOfT.cs b/src/libraries/System.Composition.Runtime/src/System/Composition/ExportFactoryOfT.cs index dabcc4491b5ad6..7d94fa7fa954db 100644 --- a/src/libraries/System.Composition.Runtime/src/System/Composition/ExportFactoryOfT.cs +++ b/src/libraries/System.Composition.Runtime/src/System/Composition/ExportFactoryOfT.cs @@ -15,9 +15,9 @@ public class ExportFactory /// Construct an ExportFactory. /// /// Action invoked upon calls to the Create() method. - public ExportFactory(Func> exportCreator) + public ExportFactory(Func> exportCreator!!) { - _exportLifetimeContextCreator = exportCreator ?? throw new ArgumentNullException(nameof(exportCreator)); + _exportLifetimeContextCreator = exportCreator; } /// diff --git a/src/libraries/System.Composition.Runtime/src/System/Composition/Hosting/Core/CompositionContract.cs b/src/libraries/System.Composition.Runtime/src/System/Composition/Hosting/Core/CompositionContract.cs index c584217d8501e8..68be062b230599 100644 --- a/src/libraries/System.Composition.Runtime/src/System/Composition/Hosting/Core/CompositionContract.cs +++ b/src/libraries/System.Composition.Runtime/src/System/Composition/Hosting/Core/CompositionContract.cs @@ -138,10 +138,8 @@ public CompositionContract ChangeType(Type newContractType) /// The value if it is present and of the correct type, otherwise null. /// The contract with the constraint removed if present, otherwise null. /// True if the constraint is present and of the correct type, otherwise false. - public bool TryUnwrapMetadataConstraint(string constraintName, out T constraintValue, out CompositionContract remainingContract) + public bool TryUnwrapMetadataConstraint(string constraintName!!, out T constraintValue, out CompositionContract remainingContract) { - if (constraintName == null) throw new ArgumentNullException(nameof(constraintName)); - constraintValue = default(T); remainingContract = null; diff --git a/src/libraries/System.Composition.Runtime/src/System/Composition/Runtime/Util/Formatters.cs b/src/libraries/System.Composition.Runtime/src/System/Composition/Runtime/Util/Formatters.cs index bf11f260c8a338..6f510121afc879 100644 --- a/src/libraries/System.Composition.Runtime/src/System/Composition/Runtime/Util/Formatters.cs +++ b/src/libraries/System.Composition.Runtime/src/System/Composition/Runtime/Util/Formatters.cs @@ -9,11 +9,8 @@ namespace System.Composition.Runtime.Util { internal static class Formatters { - public static string Format(object value) + public static string Format(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (value is string) return "\"" + value + "\""; diff --git a/src/libraries/System.Composition.TypedParts/src/System/Composition/CompositionContextExtensions.cs b/src/libraries/System.Composition.TypedParts/src/System/Composition/CompositionContextExtensions.cs index 54736c2bbc350b..41b6d61b32fb42 100644 --- a/src/libraries/System.Composition.TypedParts/src/System/Composition/CompositionContextExtensions.cs +++ b/src/libraries/System.Composition.TypedParts/src/System/Composition/CompositionContextExtensions.cs @@ -42,12 +42,8 @@ public static void SatisfyImports(this CompositionContext compositionContext, ob SatisfyImportsInternal(compositionContext, objectWithLooseImports, conventions); } - private static void SatisfyImportsInternal(this CompositionContext exportProvider, object objectWithLooseImports, AttributedModelProvider conventions) + private static void SatisfyImportsInternal(this CompositionContext exportProvider!!, object objectWithLooseImports!!, AttributedModelProvider conventions!!) { - if (exportProvider == null) throw new ArgumentNullException(nameof(exportProvider)); - if (objectWithLooseImports == null) throw new ArgumentNullException(nameof(objectWithLooseImports)); - if (conventions == null) throw new ArgumentNullException(nameof(conventions)); - var objType = objectWithLooseImports.GetType(); foreach (var pi in objType.GetRuntimeProperties()) diff --git a/src/libraries/System.Composition.TypedParts/src/System/Composition/Hosting/ContainerConfiguration.cs b/src/libraries/System.Composition.TypedParts/src/System/Composition/Hosting/ContainerConfiguration.cs index ac6433208b08e4..9c2f37764aab2e 100644 --- a/src/libraries/System.Composition.TypedParts/src/System/Composition/Hosting/ContainerConfiguration.cs +++ b/src/libraries/System.Composition.TypedParts/src/System/Composition/Hosting/ContainerConfiguration.cs @@ -47,9 +47,8 @@ public CompositionHost CreateContainer() /// /// An export descriptor provider. /// A configuration object allowing configuration to continue. - public ContainerConfiguration WithProvider(ExportDescriptorProvider exportDescriptorProvider) + public ContainerConfiguration WithProvider(ExportDescriptorProvider exportDescriptorProvider!!) { - if (exportDescriptorProvider == null) throw new ArgumentNullException(nameof(exportDescriptorProvider)); _addedSources.Add(exportDescriptorProvider); return this; } @@ -61,10 +60,8 @@ public ContainerConfiguration WithProvider(ExportDescriptorProvider exportDescri /// /// /// A configuration object allowing configuration to continue. - public ContainerConfiguration WithDefaultConventions(AttributedModelProvider conventions) + public ContainerConfiguration WithDefaultConventions(AttributedModelProvider conventions!!) { - if (conventions == null) throw new ArgumentNullException(nameof(conventions)); - if (_defaultAttributeContext != null) throw new InvalidOperationException(SR.ContainerConfiguration_DefaultConventionSet); @@ -148,9 +145,8 @@ public ContainerConfiguration WithParts(IEnumerable partTypes) /// The part types. /// Conventions represented by a , or null. /// A configuration object allowing configuration to continue. - public ContainerConfiguration WithParts(IEnumerable partTypes, AttributedModelProvider conventions) + public ContainerConfiguration WithParts(IEnumerable partTypes!!, AttributedModelProvider conventions) { - if (partTypes == null) throw new ArgumentNullException(nameof(partTypes)); _types.Add(Tuple.Create(partTypes, conventions)); return this; } @@ -196,9 +192,8 @@ public ContainerConfiguration WithAssemblies(IEnumerable assemblies) /// Assemblies containing part types. /// Conventions represented by a , or null. /// A configuration object allowing configuration to continue. - public ContainerConfiguration WithAssemblies(IEnumerable assemblies, AttributedModelProvider conventions) + public ContainerConfiguration WithAssemblies(IEnumerable assemblies!!, AttributedModelProvider conventions) { - if (assemblies == null) throw new ArgumentNullException(nameof(assemblies)); return WithParts(assemblies.SelectMany(a => a.DefinedTypes.Select(dt => dt.AsType())), conventions); } diff --git a/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/ActivationFeatures/OnImportsSatisfiedFeature.cs b/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/ActivationFeatures/OnImportsSatisfiedFeature.cs index 0824f2e318b0be..91e168e04b8212 100644 --- a/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/ActivationFeatures/OnImportsSatisfiedFeature.cs +++ b/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/ActivationFeatures/OnImportsSatisfiedFeature.cs @@ -19,9 +19,8 @@ internal sealed class OnImportsSatisfiedFeature : ActivationFeature { private readonly AttributedModelProvider _attributeContext; - public OnImportsSatisfiedFeature(AttributedModelProvider attributeContext) + public OnImportsSatisfiedFeature(AttributedModelProvider attributeContext!!) { - if (attributeContext == null) throw new ArgumentNullException(nameof(attributeContext)); _attributeContext = attributeContext; } diff --git a/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/Util/DirectAttributeContext.cs b/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/Util/DirectAttributeContext.cs index 2b54b8c1785a2a..e3afc75a0ea9ee 100644 --- a/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/Util/DirectAttributeContext.cs +++ b/src/libraries/System.Composition.TypedParts/src/System/Composition/TypedParts/Util/DirectAttributeContext.cs @@ -20,10 +20,9 @@ public override IEnumerable GetCustomAttributes(Type reflectedType, R return Attribute.GetCustomAttributes(member, false); } - public override IEnumerable GetCustomAttributes(Type reflectedType, Reflection.ParameterInfo parameter) + public override IEnumerable GetCustomAttributes(Type reflectedType, Reflection.ParameterInfo parameter!!) { if (reflectedType == null) throw new ArgumentNullException(nameof(reflectedType)); - if (parameter == null) throw new ArgumentNullException(nameof(parameter)); return Attribute.GetCustomAttributes(parameter, false); } diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/AppSettingsReader.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/AppSettingsReader.cs index b232f721d46af5..a2657c00f2b164 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/AppSettingsReader.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/AppSettingsReader.cs @@ -28,11 +28,8 @@ public AppSettingsReader() /// throw an exception with a descriptive message so the user can make the appropriate /// change /// - public object GetValue(string key, Type type) + public object GetValue(string key!!, Type type!!) { - if (key == null) throw new ArgumentNullException(nameof(key)); - if (type == null) throw new ArgumentNullException(nameof(type)); - string val = _map[key]; if (val == null) throw new InvalidOperationException(SR.Format(SR.AppSettingsReaderNoKey, key)); diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ApplicationSettingsBase.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ApplicationSettingsBase.cs index 0e9d0301f1f925..b0f6db13c9cf23 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ApplicationSettingsBase.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ApplicationSettingsBase.cs @@ -55,13 +55,8 @@ protected ApplicationSettingsBase(string settingsKey) /// /// Convenience overload that takes the owner component and settings key. /// - protected ApplicationSettingsBase(IComponent owner, string settingsKey) : this(settingsKey) + protected ApplicationSettingsBase(IComponent owner!!, string settingsKey) : this(settingsKey) { - if (owner == null) - { - throw new ArgumentNullException(nameof(owner)); - } - _owner = owner; if (owner.Site != null) diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/CallbackValidator.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/CallbackValidator.cs index e92c4f215aa63a..0e2d926ef92411 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/CallbackValidator.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/CallbackValidator.cs @@ -15,9 +15,8 @@ public CallbackValidator(Type type, ValidatorCallback callback) : this(callback) } // Do not check for null type here to handle the callback attribute case - internal CallbackValidator(ValidatorCallback callback) + internal CallbackValidator(ValidatorCallback callback!!) { - if (callback == null) throw new ArgumentNullException(nameof(callback)); _type = null; _callback = callback; } diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementCollection.cs index 7665fc0f569596..9f00b30f51802a 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementCollection.cs @@ -29,10 +29,8 @@ public abstract class ConfigurationElementCollection : ConfigurationElement, ICo protected ConfigurationElementCollection() { } - protected ConfigurationElementCollection(IComparer comparer) + protected ConfigurationElementCollection(IComparer comparer!!) { - if (comparer == null) throw new ArgumentNullException(nameof(comparer)); - _comparer = comparer; } diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementProperty.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementProperty.cs index cee27df385a207..78449e58857c29 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementProperty.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationElementProperty.cs @@ -9,10 +9,8 @@ namespace System.Configuration // new overridable on ConfigurationElement public sealed class ConfigurationElementProperty { - public ConfigurationElementProperty(ConfigurationValidatorBase validator) + public ConfigurationElementProperty(ConfigurationValidatorBase validator!!) { - if (validator == null) throw new ArgumentNullException(nameof(validator)); - Validator = validator; } diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionCollection.cs index e322ba08097d0f..d6cbe437a04253 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionCollection.cs @@ -68,10 +68,8 @@ public void Clear() foreach (string key in allKeys) Remove(key); } - public void CopyTo(ConfigurationSection[] array, int index) + public void CopyTo(ConfigurationSection[] array!!, int index) { - if (array == null) throw new ArgumentNullException(nameof(array)); - int c = Count; if (array.Length < c + index) throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionGroupCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionGroupCollection.cs index 7b696a06fb703e..253c360983e0f3 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionGroupCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ConfigurationSectionGroupCollection.cs @@ -65,10 +65,8 @@ public void Clear() foreach (string key in allKeys) Remove(key); } - public void CopyTo(ConfigurationSectionGroup[] array, int index) + public void CopyTo(ConfigurationSectionGroup[] array!!, int index) { - if (array == null) throw new ArgumentNullException(nameof(array)); - int c = Count; if (array.Length < c + index) throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PositiveTimeSpanValidator.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PositiveTimeSpanValidator.cs index 7a6ceb3caf06ba..cd6f9f1aff0e57 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PositiveTimeSpanValidator.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PositiveTimeSpanValidator.cs @@ -10,10 +10,8 @@ public override bool CanValidate(Type type) return type == typeof(TimeSpan); } - public override void Validate(object value) + public override void Validate(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if ((TimeSpan)value <= TimeSpan.Zero) throw new ArgumentException(SR.Validator_timespan_value_must_be_positive); } diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PropertyInformationCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PropertyInformationCollection.cs index 9023f6be23ed6b..23c4a0e8aaec0d 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PropertyInformationCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/PropertyInformationCollection.cs @@ -39,10 +39,8 @@ public PropertyInformation this[string propertyName] internal PropertyInformation this[int index] => (PropertyInformation)BaseGet(BaseGetKey(index)); - public void CopyTo(PropertyInformation[] array, int index) + public void CopyTo(PropertyInformation[] array!!, int index) { - if (array == null) throw new ArgumentNullException(nameof(array)); - if (array.Length < Count + index) throw new ArgumentOutOfRangeException(nameof(index)); foreach (PropertyInformation pi in this) array[index++] = pi; diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationProviderCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationProviderCollection.cs index 4c111c86800e51..a386057906d0f4 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationProviderCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/ProtectedConfigurationProviderCollection.cs @@ -9,11 +9,8 @@ public class ProtectedConfigurationProviderCollection : ProviderCollection { public new ProtectedConfigurationProvider this[string name] => (ProtectedConfigurationProvider)base[name]; - public override void Add(ProviderBase provider) + public override void Add(ProviderBase provider!!) { - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - if (!(provider is ProtectedConfigurationProvider)) { throw new ArgumentException( diff --git a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/SettingsProviderCollection.cs b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/SettingsProviderCollection.cs index 23fb407e92fb0f..4f667ff1435543 100644 --- a/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/SettingsProviderCollection.cs +++ b/src/libraries/System.Configuration.ConfigurationManager/src/System/Configuration/SettingsProviderCollection.cs @@ -7,13 +7,8 @@ namespace System.Configuration { public class SettingsProviderCollection : ProviderCollection { - public override void Add(ProviderBase provider) + public override void Add(ProviderBase provider!!) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); - } - if (!(provider is SettingsProvider)) { throw new ArgumentException(SR.Format(SR.Config_provider_must_implement_type, typeof(SettingsProvider)), nameof(provider)); diff --git a/src/libraries/System.Console/src/Resources/Strings.resx b/src/libraries/System.Console/src/Resources/Strings.resx index ce8a2ad62fc9ec..1a29dc63441579 100644 --- a/src/libraries/System.Console/src/Resources/Strings.resx +++ b/src/libraries/System.Console/src/Resources/Strings.resx @@ -128,9 +128,6 @@ Positive number required. - - Buffer cannot be null. - Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. @@ -221,9 +218,6 @@ The frequency must be between {0} and {1}. - - Array cannot be null. - Index and count must refer to a location within the buffer. diff --git a/src/libraries/System.Console/src/System.Console.csproj b/src/libraries/System.Console/src/System.Console.csproj index 4088dda76c070d..db9d0fb39fb742 100644 --- a/src/libraries/System.Console/src/System.Console.csproj +++ b/src/libraries/System.Console/src/System.Console.csproj @@ -21,6 +21,8 @@ + diff --git a/src/libraries/System.Console/src/System/IO/SyncTextReader.cs b/src/libraries/System.Console/src/System/IO/SyncTextReader.cs index 33ef898edb688c..380257a8af92eb 100644 --- a/src/libraries/System.Console/src/System/IO/SyncTextReader.cs +++ b/src/libraries/System.Console/src/System/IO/SyncTextReader.cs @@ -115,10 +115,8 @@ public override Task ReadToEndAsync(CancellationToken cancellationToken) Task.FromResult(ReadToEnd()); } - public override Task ReadBlockAsync(char[] buffer, int index, int count) + public override Task ReadBlockAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (buffer.Length - index < count) @@ -127,10 +125,8 @@ public override Task ReadBlockAsync(char[] buffer, int index, int count) return Task.FromResult(ReadBlock(buffer, index, count)); } - public override Task ReadAsync(char[] buffer, int index, int count) + public override Task ReadAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (buffer.Length - index < count) diff --git a/src/libraries/System.Console/src/System/TermInfo.cs b/src/libraries/System.Console/src/System/TermInfo.cs index 529ff7fcb7a3bf..02a4971b93fd45 100644 --- a/src/libraries/System.Console/src/System/TermInfo.cs +++ b/src/libraries/System.Console/src/System/TermInfo.cs @@ -559,17 +559,8 @@ public static string Evaluate(string format, FormatParam arg1, FormatParam arg2) /// The format string. /// The arguments to the format string. /// The formatted string. - public static string Evaluate(string format, params FormatParam[] args) + public static string Evaluate(string format!!, params FormatParam[] args!!) { - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - if (args == null) - { - throw new ArgumentNullException(nameof(args)); - } - // Initialize the stack to use for processing. Stack? stack = t_cachedStack; if (stack == null) diff --git a/src/libraries/System.Console/tests/CancelKeyPress.Unix.cs b/src/libraries/System.Console/tests/CancelKeyPress.Unix.cs index 2a8bc01fcf2b45..69aa37b679495d 100644 --- a/src/libraries/System.Console/tests/CancelKeyPress.Unix.cs +++ b/src/libraries/System.Console/tests/CancelKeyPress.Unix.cs @@ -134,11 +134,11 @@ private unsafe static bool IsSignalIgnored(int signal) } } - [DllImport("libc", SetLastError = true)] - private static extern int kill(int pid, int sig); + [GeneratedDllImport("libc", SetLastError = true)] + private static partial int kill(int pid, int sig); - [DllImport("libc", SetLastError = true)] - private static unsafe extern int sigaction(int signum, struct_sigaction* act, struct_sigaction* oldact); + [GeneratedDllImport("libc", SetLastError = true)] + private static unsafe partial int sigaction(int signum, struct_sigaction* act, struct_sigaction* oldact); private const int SIGINT = 2; private const int SIGQUIT = 3; diff --git a/src/libraries/System.Console/tests/ConsoleEncoding.Windows.cs b/src/libraries/System.Console/tests/ConsoleEncoding.Windows.cs index 8a116f50c00585..32363397a71be2 100644 --- a/src/libraries/System.Console/tests/ConsoleEncoding.Windows.cs +++ b/src/libraries/System.Console/tests/ConsoleEncoding.Windows.cs @@ -67,9 +67,9 @@ public void OutputEncoding_SetUnicodeEncoding_SilentlyIgnoredInternally() }).Dispose(); } - [DllImport("kernel32.dll")] - public static extern uint GetConsoleCP(); + [GeneratedDllImport("kernel32.dll")] + public static partial uint GetConsoleCP(); - [DllImport("kernel32.dll")] - public static extern uint GetConsoleOutputCP(); + [GeneratedDllImport("kernel32.dll")] + public static partial uint GetConsoleOutputCP(); } diff --git a/src/libraries/System.Console/tests/System.Console.Tests.csproj b/src/libraries/System.Console/tests/System.Console.Tests.csproj index 3c83ac5db2f9ea..4418da53021a70 100644 --- a/src/libraries/System.Console/tests/System.Console.Tests.csproj +++ b/src/libraries/System.Console/tests/System.Console.Tests.csproj @@ -24,6 +24,8 @@ + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "InstanceDescriptor calls GetType(string) on AssemblyQualifiedName of instance of type we already have in here.")] - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { return value != null ? value.ToString() : string.Empty; diff --git a/src/libraries/System.Data.Common/src/System/Data/Common/DbDataReaderExtensions.cs b/src/libraries/System.Data.Common/src/System/Data/Common/DbDataReaderExtensions.cs index 2140301f49ca86..307622604f8ad0 100644 --- a/src/libraries/System.Data.Common/src/System/Data/Common/DbDataReaderExtensions.cs +++ b/src/libraries/System.Data.Common/src/System/Data/Common/DbDataReaderExtensions.cs @@ -52,12 +52,8 @@ private void PopulateFields() private T? GetDbColumnValue(string columnName) => _schemaColumns.Contains(columnName) && _schemaRow[columnName] is T value ? value : default; } - public static ReadOnlyCollection GetColumnSchema(this DbDataReader reader) + public static ReadOnlyCollection GetColumnSchema(this DbDataReader reader!!) { - if (reader is null) - { - throw new ArgumentNullException(nameof(reader)); - } if (reader is IDbColumnSchemaGenerator schemaGenerator) { return schemaGenerator.GetColumnSchema(); diff --git a/src/libraries/System.Data.Common/src/System/Data/ConstraintConverter.cs b/src/libraries/System.Data.Common/src/System/Data/ConstraintConverter.cs index 664ff2d42b495e..944fdf98ccf34d 100644 --- a/src/libraries/System.Data.Common/src/System/Data/ConstraintConverter.cs +++ b/src/libraries/System.Data.Common/src/System/Data/ConstraintConverter.cs @@ -27,13 +27,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// type is string. If this cannot convert to the destination type, this will /// throw a NotSupportedException. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(InstanceDescriptor) && value is Constraint) { if (value is UniqueConstraint) diff --git a/src/libraries/System.Data.Common/src/System/Data/DataReaderExtensions.cs b/src/libraries/System.Data.Common/src/System/Data/DataReaderExtensions.cs index ac3e4c34f25e7c..62f7cb08d8b92a 100644 --- a/src/libraries/System.Data.Common/src/System/Data/DataReaderExtensions.cs +++ b/src/libraries/System.Data.Common/src/System/Data/DataReaderExtensions.cs @@ -3,7 +3,6 @@ using System.ComponentModel; using System.Data.Common; -using System.Diagnostics.CodeAnalysis; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -12,171 +11,137 @@ namespace System.Data { public static class DataReaderExtensions { - public static bool GetBoolean(this DbDataReader reader, string name) + public static bool GetBoolean(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetBoolean(reader.GetOrdinal(name)); } - public static byte GetByte(this DbDataReader reader, string name) + public static byte GetByte(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetByte(reader.GetOrdinal(name)); } - public static long GetBytes(this DbDataReader reader, string name, long dataOffset, byte[] buffer, int bufferOffset, int length) + public static long GetBytes(this DbDataReader reader!!, string name, long dataOffset, byte[] buffer, int bufferOffset, int length) { - AssertNotNull(reader); return reader.GetBytes(reader.GetOrdinal(name), dataOffset, buffer, bufferOffset, length); } - public static char GetChar(this DbDataReader reader, string name) + public static char GetChar(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetChar(reader.GetOrdinal(name)); } - public static long GetChars(this DbDataReader reader, string name, long dataOffset, char[] buffer, int bufferOffset, int length) + public static long GetChars(this DbDataReader reader!!, string name, long dataOffset, char[] buffer, int bufferOffset, int length) { - AssertNotNull(reader); return reader.GetChars(reader.GetOrdinal(name), dataOffset, buffer, bufferOffset, length); } [EditorBrowsable(EditorBrowsableState.Never)] - public static DbDataReader GetData(this DbDataReader reader, string name) + public static DbDataReader GetData(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetData(reader.GetOrdinal(name)); } - public static string GetDataTypeName(this DbDataReader reader, string name) + public static string GetDataTypeName(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetDataTypeName(reader.GetOrdinal(name)); } - public static DateTime GetDateTime(this DbDataReader reader, string name) + public static DateTime GetDateTime(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetDateTime(reader.GetOrdinal(name)); } - public static decimal GetDecimal(this DbDataReader reader, string name) + public static decimal GetDecimal(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetDecimal(reader.GetOrdinal(name)); } - public static double GetDouble(this DbDataReader reader, string name) + public static double GetDouble(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetDouble(reader.GetOrdinal(name)); } - public static Type GetFieldType(this DbDataReader reader, string name) + public static Type GetFieldType(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetFieldType(reader.GetOrdinal(name)); } - public static T GetFieldValue(this DbDataReader reader, string name) + public static T GetFieldValue(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetFieldValue(reader.GetOrdinal(name)); } - public static Task GetFieldValueAsync(this DbDataReader reader, string name, CancellationToken cancellationToken = default(CancellationToken)) + public static Task GetFieldValueAsync(this DbDataReader reader!!, string name, CancellationToken cancellationToken = default(CancellationToken)) { - AssertNotNull(reader); return reader.GetFieldValueAsync(reader.GetOrdinal(name), cancellationToken); } - public static float GetFloat(this DbDataReader reader, string name) + public static float GetFloat(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetFloat(reader.GetOrdinal(name)); } - public static Guid GetGuid(this DbDataReader reader, string name) + public static Guid GetGuid(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetGuid(reader.GetOrdinal(name)); } - public static short GetInt16(this DbDataReader reader, string name) + public static short GetInt16(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetInt16(reader.GetOrdinal(name)); } - public static int GetInt32(this DbDataReader reader, string name) + public static int GetInt32(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetInt32(reader.GetOrdinal(name)); } - public static long GetInt64(this DbDataReader reader, string name) + public static long GetInt64(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetInt64(reader.GetOrdinal(name)); } [EditorBrowsable(EditorBrowsableState.Never)] - public static Type GetProviderSpecificFieldType(this DbDataReader reader, string name) + public static Type GetProviderSpecificFieldType(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetProviderSpecificFieldType(reader.GetOrdinal(name)); } [EditorBrowsable(EditorBrowsableState.Never)] - public static object GetProviderSpecificValue(this DbDataReader reader, string name) + public static object GetProviderSpecificValue(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetProviderSpecificValue(reader.GetOrdinal(name)); } - public static Stream GetStream(this DbDataReader reader, string name) + public static Stream GetStream(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetStream(reader.GetOrdinal(name)); } - public static string GetString(this DbDataReader reader, string name) + public static string GetString(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetString(reader.GetOrdinal(name)); } - public static TextReader GetTextReader(this DbDataReader reader, string name) + public static TextReader GetTextReader(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetTextReader(reader.GetOrdinal(name)); } - public static object GetValue(this DbDataReader reader, string name) + public static object GetValue(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.GetValue(reader.GetOrdinal(name)); } - public static bool IsDBNull(this DbDataReader reader, string name) + public static bool IsDBNull(this DbDataReader reader!!, string name) { - AssertNotNull(reader); return reader.IsDBNull(reader.GetOrdinal(name)); } - public static Task IsDBNullAsync(this DbDataReader reader, string name, CancellationToken cancellationToken = default(CancellationToken)) + public static Task IsDBNullAsync(this DbDataReader reader!!, string name, CancellationToken cancellationToken = default(CancellationToken)) { - AssertNotNull(reader); return reader.IsDBNullAsync(reader.GetOrdinal(name), cancellationToken); } - - private static void AssertNotNull([NotNull] DbDataReader? reader) - { - if (reader is null) - { - throw new ArgumentNullException(nameof(reader)); - } - } } } diff --git a/src/libraries/System.Data.Common/src/System/Data/DefaultValueTypeConverter.cs b/src/libraries/System.Data.Common/src/System/Data/DefaultValueTypeConverter.cs index 51985dc6bccee1..db60ac28bf6baa 100644 --- a/src/libraries/System.Data.Common/src/System/Data/DefaultValueTypeConverter.cs +++ b/src/libraries/System.Data.Common/src/System/Data/DefaultValueTypeConverter.cs @@ -19,13 +19,8 @@ public DefaultValueTypeConverter() { } - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - if (destinationType == typeof(string)) { if (value == null) diff --git a/src/libraries/System.Data.Common/src/System/Data/PrimaryKeyTypeConverter.cs b/src/libraries/System.Data.Common/src/System/Data/PrimaryKeyTypeConverter.cs index 67e643f7cfe521..eda5de868e9603 100644 --- a/src/libraries/System.Data.Common/src/System/Data/PrimaryKeyTypeConverter.cs +++ b/src/libraries/System.Data.Common/src/System/Data/PrimaryKeyTypeConverter.cs @@ -19,13 +19,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina destinationType == typeof(string) || base.CanConvertTo(context, destinationType); - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - return destinationType == typeof(string) ? Array.Empty().GetType().Name : base.ConvertTo(context, culture, value, destinationType); diff --git a/src/libraries/System.Data.Common/src/System/Data/RelationshipConverter.cs b/src/libraries/System.Data.Common/src/System/Data/RelationshipConverter.cs index c768b3c5e89451..2efdac92ecee1a 100644 --- a/src/libraries/System.Data.Common/src/System/Data/RelationshipConverter.cs +++ b/src/libraries/System.Data.Common/src/System/Data/RelationshipConverter.cs @@ -34,13 +34,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// type is string. If this cannot convert to the destination type, this will /// throw a NotSupportedException. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } - System.Reflection.ConstructorInfo? ctor; object[]? values; diff --git a/src/libraries/System.Data.Odbc/src/System.Data.Odbc.csproj b/src/libraries/System.Data.Odbc/src/System.Data.Odbc.csproj index 2005ee7715654e..d0818649229c5c 100644 --- a/src/libraries/System.Data.Odbc/src/System.Data.Odbc.csproj +++ b/src/libraries/System.Data.Odbc/src/System.Data.Odbc.csproj @@ -126,6 +126,12 @@ System.Data.Odbc.OdbcTransaction + + + + diff --git a/src/libraries/System.Data.Odbc/src/System/Data/Odbc/OdbcHandle.cs b/src/libraries/System.Data.Odbc/src/System/Data/Odbc/OdbcHandle.cs index a15469babaf3d2..25f8aef9faaef4 100644 --- a/src/libraries/System.Data.Odbc/src/System/Data/Odbc/OdbcHandle.cs +++ b/src/libraries/System.Data.Odbc/src/System/Data/Odbc/OdbcHandle.cs @@ -178,19 +178,19 @@ protected override bool ReleaseHandle() internal ODBC32.SQLRETURN GetDiagnosticField(out string sqlState) { // ODBC (MSDN) documents it expects a buffer large enough to hold 5(+L'\0') unicode characters - StringBuilder sb = new StringBuilder(6); + char[] buffer = new char[6]; ODBC32.SQLRETURN retcode = Interop.Odbc.SQLGetDiagFieldW( HandleType, this, (short)1, ODBC32.SQL_DIAG_SQLSTATE, - sb, - checked((short)(2 * sb.Capacity)), // expects number of bytes, see \\kbinternal\kb\articles\294\1\69.HTM + buffer, + checked((short)(2 * buffer.Length)), // expects number of bytes, see \\kbinternal\kb\articles\294\1\69.HTM out _); ODBC.TraceODBC(3, "SQLGetDiagFieldW", retcode); if ((retcode == ODBC32.SQLRETURN.SUCCESS) || (retcode == ODBC32.SQLRETURN.SUCCESS_WITH_INFO)) { - sqlState = sb.ToString(); + sqlState = new string(buffer.AsSpan().Slice(0, buffer.AsSpan().IndexOf('\0'))); } else { @@ -199,21 +199,23 @@ internal ODBC32.SQLRETURN GetDiagnosticField(out string sqlState) return retcode; } - internal ODBC32.SQLRETURN GetDiagnosticRecord(short record, out string sqlState, StringBuilder message, out int nativeError, out short cchActual) + internal ODBC32.SQLRETURN GetDiagnosticRecord(short record, out string sqlState, StringBuilder messageBuilder, out int nativeError, out short cchActual) { // ODBC (MSDN) documents it expects a buffer large enough to hold 4(+L'\0') unicode characters - StringBuilder sb = new StringBuilder(5); - ODBC32.SQLRETURN retcode = Interop.Odbc.SQLGetDiagRecW(HandleType, this, record, sb, out nativeError, message, checked((short)message.Capacity), out cchActual); + char[] buffer = new char[5]; + char[] message = new char[1024]; + ODBC32.SQLRETURN retcode = Interop.Odbc.SQLGetDiagRecW(HandleType, this, record, buffer, out nativeError, message, checked((short)message.Length), out cchActual); ODBC.TraceODBC(3, "SQLGetDiagRecW", retcode); if ((retcode == ODBC32.SQLRETURN.SUCCESS) || (retcode == ODBC32.SQLRETURN.SUCCESS_WITH_INFO)) { - sqlState = sb.ToString(); + sqlState = new string(buffer.AsSpan().Slice(0, buffer.AsSpan().IndexOf('\0'))); } else { sqlState = string.Empty; } + messageBuilder.Append(new string(message.AsSpan().Slice(0, message.AsSpan().IndexOf('\0')))); return retcode; } } diff --git a/src/libraries/System.Data.OleDb/src/OleDbException.cs b/src/libraries/System.Data.OleDb/src/OleDbException.cs index 6bcead282f7f36..564cc463ead286 100644 --- a/src/libraries/System.Data.OleDb/src/OleDbException.cs +++ b/src/libraries/System.Data.OleDb/src/OleDbException.cs @@ -35,12 +35,8 @@ private OleDbException(string? message, Exception? inner, string? source, OleDbH this.oledbErrors = errors; } - public override void GetObjectData(SerializationInfo si, StreamingContext context) + public override void GetObjectData(SerializationInfo si!!, StreamingContext context) { - if (null == si) - { - throw new ArgumentNullException(nameof(si)); - } si.AddValue("oledbErrors", oledbErrors, typeof(OleDbErrorCollection)); base.GetObjectData(si, context); } diff --git a/src/libraries/System.Data.OleDb/src/System.Data.OleDb.csproj b/src/libraries/System.Data.OleDb/src/System.Data.OleDb.csproj index 7e3cf5c3a8f8f6..ff915761659221 100644 --- a/src/libraries/System.Data.OleDb/src/System.Data.OleDb.csproj +++ b/src/libraries/System.Data.OleDb/src/System.Data.OleDb.csproj @@ -133,6 +133,9 @@ System.Data.OleDb.OleDbTransaction + + + /// The ActivityContext object created from the parsing operation. /// - public static ActivityContext Parse(string traceParent, string? traceState) + public static ActivityContext Parse(string traceParent!!, string? traceState) { - if (traceParent is null) - { - throw new ArgumentNullException(nameof(traceParent)); - } - if (!Activity.TryConvertIdToContext(traceParent, traceState, isRemote: false, out ActivityContext context)) { throw new ArgumentException(SR.InvalidTraceParent); 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 9710af30087481..f2bd5299c550ed 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs @@ -18,13 +18,8 @@ public sealed class ActivitySource : IDisposable /// /// The name of the ActivitySource object /// The version of the component publishing the tracing info. - public ActivitySource(string name, string? version = "") + public ActivitySource(string name!!, string? version = "") { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - Name = name; Version = version; @@ -301,13 +296,8 @@ public void Dispose() /// Add a listener to the starting and stopping events. /// /// The object to use for listening to the events. - public static void AddActivityListener(ActivityListener listener) + public static void AddActivityListener(ActivityListener listener!!) { - if (listener == null) - { - throw new ArgumentNullException(nameof(listener)); - } - if (s_allListeners.AddIfNotExist(listener)) { s_activeSources.EnumWithAction((source, obj) => { diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityStatusCode.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityStatusCode.cs index eafb1dbb7aa152..a2e2baa53b3d7c 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityStatusCode.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityStatusCode.cs @@ -23,4 +23,4 @@ public enum ActivityStatusCode /// Error = 2 } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityTagsCollection.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityTagsCollection.cs index 55accdb5ed463b..cd45fcb0a2bc0d 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityTagsCollection.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivityTagsCollection.cs @@ -34,13 +34,8 @@ public ActivityTagsCollection() /// Create a new instance of the collection and store the input list items in the collection. /// /// Initial list to store in the collection. - public ActivityTagsCollection(IEnumerable> list) + public ActivityTagsCollection(IEnumerable> list!!) { - if (list == null) - { - throw new ArgumentNullException(nameof(list)); - } - foreach (KeyValuePair kvp in list) { if (kvp.Key != null) @@ -142,13 +137,8 @@ public ICollection Values /// /// The tag key. /// The tag value. - public void Add(string key, object? value) + public void Add(string key!!, object? value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - int index = FindIndex(key); if (index >= 0) { @@ -219,13 +209,8 @@ public void Add(KeyValuePair item) /// /// The tag key /// True if the item existed and removed. False otherwise. - public bool Remove(string key) + public bool Remove(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - int index = FindIndex(key); if (index >= 0) { diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagLinkedList.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagLinkedList.cs index 8399e64b16e1ab..3c75f0e5e42d81 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagLinkedList.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagLinkedList.cs @@ -189,4 +189,4 @@ public void Dispose() } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Counter.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Counter.cs index d107bd754cd49e..4a8cff4392d652 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Counter.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Counter.cs @@ -74,4 +74,4 @@ internal Counter(Meter meter, string name, string? unit, string? description) : /// A of tags associated with the measurement. public void Add(T delta, in TagList tagList) => RecordMeasurement(delta, in tagList); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Histogram.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Histogram.cs index 1000815bf8f7c2..f14cd8586e95e0 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Histogram.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Histogram.cs @@ -74,4 +74,4 @@ internal Histogram(Meter meter, string name, string? unit, string? description) /// A of tags associated with the measurement. public void Record(T value, in TagList tagList) => RecordMeasurement(value, in tagList); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.common.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.common.cs index 6271199c09ffd1..7f81ab13a7c92a 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.common.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.common.cs @@ -47,4 +47,4 @@ protected void RecordMeasurement(T measurement, ReadOnlySpanThe instrument name. cannot be null. /// Optional instrument unit of measurements. /// Optional instrument description. - protected Instrument(Meter meter, string name, string? unit, string? description) + protected Instrument(Meter meter!!, string name!!, string? unit, string? description) { - if (meter == null) - { - throw new ArgumentNullException(nameof(meter)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - Meter = meter; Name = name; Description = description; diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.netcore.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.netcore.cs index ffac3c0ba2528a..e60b079d0197aa 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.netcore.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Instrument.netcore.cs @@ -111,4 +111,4 @@ protected void RecordMeasurement(T measurement, in TagList tagList) RecordMeasurement(measurement, MemoryMarshal.CreateReadOnlySpan(ref Unsafe.AsRef(in tagList.Tag1), tagList.Count)); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Meter.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Meter.cs index b16bbf08835afa..b26f5a200c24cc 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Meter.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/Meter.cs @@ -30,13 +30,8 @@ public Meter(string name) : this (name, null) {} /// /// The Meter name. /// The optional Meter version. - public Meter(string name, string? version) + public Meter(string name!!, string? version) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - Name = name; Version = version; diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableCounter.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableCounter.cs index 0a77bddd238b1d..7815496f00a7bc 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableCounter.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableCounter.cs @@ -20,35 +20,20 @@ public sealed class ObservableCounter : ObservableInstrument where T : str { private object _callback; - internal ObservableCounter(Meter meter, string name, Func observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableCounter(Meter meter, string name, Func observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableCounter(Meter meter, string name, Func> observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableCounter(Meter meter, string name, Func> observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableCounter(Meter meter, string name, Func>> observeValues, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableCounter(Meter meter, string name, Func>> observeValues!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValues is null) - { - throw new ArgumentNullException(nameof(observeValues)); - } - _callback = observeValues; Publish(); } @@ -58,4 +43,4 @@ internal ObservableCounter(Meter meter, string name, Func protected override IEnumerable> Observe() => Observe(_callback); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableGauge.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableGauge.cs index a6e519d564d717..258351c494b869 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableGauge.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableGauge.cs @@ -20,35 +20,20 @@ public sealed class ObservableGauge : ObservableInstrument where T : struc { private object _callback; - internal ObservableGauge(Meter meter, string name, Func observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableGauge(Meter meter, string name, Func observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableGauge(Meter meter, string name, Func> observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableGauge(Meter meter, string name, Func> observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableGauge(Meter meter, string name, Func>> observeValues, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableGauge(Meter meter, string name, Func>> observeValues!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValues is null) - { - throw new ArgumentNullException(nameof(observeValues)); - } - _callback = observeValues; Publish(); } @@ -58,4 +43,4 @@ internal ObservableGauge(Meter meter, string name, Func protected override IEnumerable> Observe() => Observe(_callback); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableUpDownCounter.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableUpDownCounter.cs index 7751067ac55a32..82d75dabb4dcd7 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableUpDownCounter.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/ObservableUpDownCounter.cs @@ -20,35 +20,20 @@ public sealed class ObservableUpDownCounter : ObservableInstrument where T { private object _callback; - internal ObservableUpDownCounter(Meter meter, string name, Func observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableUpDownCounter(Meter meter, string name, Func observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableUpDownCounter(Meter meter, string name, Func> observeValue, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableUpDownCounter(Meter meter, string name, Func> observeValue!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValue is null) - { - throw new ArgumentNullException(nameof(observeValue)); - } - _callback = observeValue; Publish(); } - internal ObservableUpDownCounter(Meter meter, string name, Func>> observeValues, string? unit, string? description) : base(meter, name, unit, description) + internal ObservableUpDownCounter(Meter meter, string name, Func>> observeValues!!, string? unit, string? description) : base(meter, name, unit, description) { - if (observeValues is null) - { - throw new ArgumentNullException(nameof(observeValues)); - } - _callback = observeValues; Publish(); } @@ -58,4 +43,4 @@ internal ObservableUpDownCounter(Meter meter, string name, Func protected override IEnumerable> Observe() => Observe(_callback); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/TagList.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/TagList.cs index ab7f4165b94511..0b8b00e316cedb 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/TagList.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/TagList.cs @@ -261,13 +261,8 @@ public readonly void CopyTo(Span> tags) /// The zero-based index in at which copying begins. /// is null. /// is less than 0 or greater that or equal the length. - public readonly void CopyTo(KeyValuePair[] array, int arrayIndex) + public readonly void CopyTo(KeyValuePair[] array!!, int arrayIndex) { - if (array is null) - { - throw new ArgumentNullException(nameof(array)); - } - if ((uint)arrayIndex >= array.Length) { throw new ArgumentOutOfRangeException(nameof(arrayIndex)); @@ -553,4 +548,4 @@ public bool MoveNext() public void Reset() => _index = -1; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/UpDownCounter.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/UpDownCounter.cs index cad80c52c57ee5..88a11cd12851dc 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/UpDownCounter.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Metrics/UpDownCounter.cs @@ -73,4 +73,4 @@ internal UpDownCounter(Meter meter, string name, string? unit, string? descripti /// A of tags associated with the measurement. public void Add(T delta, in TagList tagList) => RecordMeasurement(delta, in tagList); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Diagnostics.EventLog/src/System.Diagnostics.EventLog.csproj b/src/libraries/System.Diagnostics.EventLog/src/System.Diagnostics.EventLog.csproj index 29a936cb89cc87..fd558833ee2dfc 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System.Diagnostics.EventLog.csproj +++ b/src/libraries/System.Diagnostics.EventLog/src/System.Diagnostics.EventLog.csproj @@ -110,7 +110,10 @@ System.Diagnostics.EventLog - + + + diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLog.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLog.cs index 6eab2a131f7e4c..3cf5c9e1b1dcfd 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLog.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLog.cs @@ -243,11 +243,8 @@ public static void CreateEventSource(string source, string logName, string machi CreateEventSource(new EventSourceCreationData(source, logName, machineName)); } - public static void CreateEventSource(EventSourceCreationData sourceData) + public static void CreateEventSource(EventSourceCreationData sourceData!!) { - if (sourceData == null) - throw new ArgumentNullException(nameof(sourceData)); - string logName = sourceData.LogName; string source = sourceData.Source; string machineName = sourceData.MachineName; diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLogInternal.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLogInternal.cs index cc4c6198e178cb..3a67a6ead1810c 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLogInternal.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/EventLogInternal.cs @@ -109,11 +109,8 @@ public EventLogInternal(string logName, string machineName, string source) : thi { } - public EventLogInternal(string logName, string machineName, string source, EventLog parent) + public EventLogInternal(string logName!!, string machineName, string source, EventLog parent) { - //look out for invalid log names - if (logName == null) - throw new ArgumentNullException(nameof(logName)); if (!ValidLogName(logName, true)) throw new ArgumentException(SR.BadLogName); @@ -1314,10 +1311,8 @@ public void WriteEntry(string message, EventLogEntryType type, int eventID, shor InternalWriteEvent((uint)eventID, (ushort)category, type, new string[] { message }, rawData, currentMachineName); } - public void WriteEvent(EventInstance instance, byte[] data, params object[] values) + public void WriteEvent(EventInstance instance!!, byte[] data, params object[] values) { - if (instance == null) - throw new ArgumentNullException(nameof(instance)); if (Source.Length == 0) throw new ArgumentException(SR.NeedSourceToWrite); diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventBookmark.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventBookmark.cs index 10c499bf082e3d..55e01f5f1149ff 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventBookmark.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventBookmark.cs @@ -17,9 +17,9 @@ namespace System.Diagnostics.Eventing.Reader /// public class EventBookmark { - internal EventBookmark(string bookmarkText) + internal EventBookmark(string bookmarkText!!) { - BookmarkText = bookmarkText ?? throw new ArgumentNullException(nameof(bookmarkText)); + BookmarkText = bookmarkText; } internal string BookmarkText { get; } diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogPropertySelector.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogPropertySelector.cs index 02b1f9db81e4f7..ea815291cbf67b 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogPropertySelector.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogPropertySelector.cs @@ -13,11 +13,8 @@ namespace System.Diagnostics.Eventing.Reader /// public class EventLogPropertySelector : IDisposable { - public EventLogPropertySelector(IEnumerable propertyQueries) + public EventLogPropertySelector(IEnumerable propertyQueries!!) { - if (propertyQueries == null) - throw new ArgumentNullException(nameof(propertyQueries)); - string[] paths; ICollection coll = propertyQueries as ICollection; diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogReader.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogReader.cs index d42d20e7a0109c..b56215642aa9fb 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogReader.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogReader.cs @@ -62,11 +62,8 @@ public EventLogReader(EventLogQuery eventQuery) { } - public EventLogReader(EventLogQuery eventQuery, EventBookmark bookmark) + public EventLogReader(EventLogQuery eventQuery!!, EventBookmark bookmark) { - if (eventQuery == null) - throw new ArgumentNullException(nameof(eventQuery)); - string logfile = null; if (eventQuery.ThePathType == PathType.FilePath) logfile = eventQuery.Path; @@ -231,11 +228,8 @@ public void Seek(EventBookmark bookmark) Seek(bookmark, 0); } - public void Seek(EventBookmark bookmark, long offset) + public void Seek(EventBookmark bookmark!!, long offset) { - if (bookmark == null) - throw new ArgumentNullException(nameof(bookmark)); - SeekReset(); using (EventLogHandle bookmarkHandle = EventLogRecord.GetBookmarkHandleFromBookmark(bookmark)) { diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogRecord.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogRecord.cs index bb54bd0ae3faae..136daa04cb9d71 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogRecord.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogRecord.cs @@ -389,10 +389,8 @@ public override IList Properties } } - public IList GetPropertyValues(EventLogPropertySelector propertySelector) + public IList GetPropertyValues(EventLogPropertySelector propertySelector!!) { - if (propertySelector == null) - throw new ArgumentNullException(nameof(propertySelector)); return NativeWrapper.EvtRenderBufferWithContextUserOrValues(propertySelector.Handle, Handle); } diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogSession.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogSession.cs index 285359ddd591f7..be9edaa67d88a6 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogSession.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogSession.cs @@ -203,11 +203,8 @@ public IEnumerable GetLogNames() } } - public EventLogInformation GetLogInformation(string logName, PathType pathType) + public EventLogInformation GetLogInformation(string logName!!, PathType pathType) { - if (logName == null) - throw new ArgumentNullException(nameof(logName)); - return new EventLogInformation(this, logName, pathType); } @@ -216,13 +213,8 @@ public void ExportLog(string path, PathType pathType, string query, string targe this.ExportLog(path, pathType, query, targetFilePath, false); } - public void ExportLog(string path, PathType pathType, string query, string targetFilePath, bool tolerateQueryErrors) + public void ExportLog(string path!!, PathType pathType, string query, string targetFilePath!!, bool tolerateQueryErrors) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - - if (targetFilePath == null) - throw new ArgumentNullException(nameof(targetFilePath)); UnsafeNativeMethods.EvtExportLogFlags flag = pathType switch { PathType.LogName => UnsafeNativeMethods.EvtExportLogFlags.EvtExportLogChannelPath, @@ -252,11 +244,8 @@ public void ClearLog(string logName) this.ClearLog(logName, null); } - public void ClearLog(string logName, string backupPath) + public void ClearLog(string logName!!, string backupPath) { - if (logName == null) - throw new ArgumentNullException(nameof(logName)); - NativeWrapper.EvtClearLog(this.Handle, logName, backupPath, 0); } } diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogWatcher.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogWatcher.cs index 1c5a027504fc58..1d2994f0b4ff6e 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogWatcher.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/EventLogWatcher.cs @@ -49,14 +49,8 @@ public EventLogWatcher(EventLogQuery eventQuery, EventBookmark bookmark) { } - public EventLogWatcher(EventLogQuery eventQuery, EventBookmark bookmark, bool readExistingEvents) + public EventLogWatcher(EventLogQuery eventQuery!!, EventBookmark bookmark, bool readExistingEvents) { - - if (eventQuery == null) - { - throw new ArgumentNullException(nameof(eventQuery)); - } - if (bookmark != null) { readExistingEvents = false; diff --git a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/UnsafeNativeMethods.cs b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/UnsafeNativeMethods.cs index 1011901493d917..f571f0246ae021 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/UnsafeNativeMethods.cs +++ b/src/libraries/System.Diagnostics.EventLog/src/System/Diagnostics/Reader/UnsafeNativeMethods.cs @@ -338,7 +338,10 @@ internal enum EvtLoginClass EvtRpcLogin = 1 } - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Marshaller))] +#endif + [StructLayout(LayoutKind.Sequential)] internal struct EvtRpcLogin { [MarshalAs(UnmanagedType.LPWStr)] @@ -349,6 +352,72 @@ internal struct EvtRpcLogin public string Domain; public CoTaskMemUnicodeSafeHandle Password; public int Flags; +#if NET7_0_OR_GREATER + public struct Marshaller + { + public struct Native + { + public IntPtr Server; + public IntPtr User; + public IntPtr Domain; + public IntPtr Password; + public int Flags; + } + + private CoTaskMemUnicodeSafeHandle _passwordHandle; + private Native _value; + private bool _passwordHandleAddRefd; + + public Marshaller(EvtRpcLogin managed) + { + _passwordHandleAddRefd = false; + _value.Server = Marshal.StringToCoTaskMemUni(managed.Server); + _value.User = Marshal.StringToCoTaskMemUni(managed.User); + _value.Domain = Marshal.StringToCoTaskMemUni(managed.Domain); + _passwordHandle = managed.Password; + _passwordHandle.DangerousAddRef(ref _passwordHandleAddRefd); + _value.Password = _passwordHandle.DangerousGetHandle(); + _value.Flags = managed.Flags; + } + + public Native Value + { + get => _value; + set + { + // SafeHandle fields cannot change the underlying handle value during marshalling. + if (_value.Password != value.Password) + { + throw new InvalidOperationException(); + } + _value = value; + } + } + + public EvtRpcLogin ToManaged() + { + return new EvtRpcLogin + { + Server = Marshal.PtrToStringUni(_value.Server), + User = Marshal.PtrToStringUni(_value.User), + Domain = Marshal.PtrToStringUni(_value.Domain), + Password = _passwordHandle, + Flags = _value.Flags + }; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(_value.Server); + Marshal.FreeCoTaskMem(_value.User); + Marshal.FreeCoTaskMem(_value.Domain); + if (_passwordHandleAddRefd) + { + _passwordHandle.DangerousRelease(); + } + } + } +#endif } // SEEK @@ -597,7 +666,10 @@ internal static partial bool EvtRender( out int buffUsed, out int propCount); - [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Auto)] +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#endif + [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)] internal struct EvtStringVariant { [MarshalAs(UnmanagedType.LPWStr), FieldOffset(0)] @@ -606,12 +678,45 @@ internal struct EvtStringVariant public uint Count; [FieldOffset(12)] public uint Type; + +#if NET7_0_OR_GREATER + [StructLayout(LayoutKind.Explicit)] + public struct Native + { + [FieldOffset(0)] + private IntPtr StringVal; + [FieldOffset(8)] + private uint Count; + [FieldOffset(12)] + private uint Type; + + public Native(EvtStringVariant managed) + { + StringVal = Marshal.StringToCoTaskMemUni(managed.StringVal); + Count = managed.Count; + Type = managed.Type; + } + + public EvtStringVariant ToManaged() + { + return new EvtStringVariant + { + StringVal = Marshal.PtrToStringUni(StringVal), + Count = Count, + Type = Type + }; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(StringVal); + } + } +#endif }; -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable types. - [DllImport(Interop.Libraries.Wevtapi, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] - internal static extern bool EvtFormatMessage( + [GeneratedDllImport(Interop.Libraries.Wevtapi, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)] + internal static partial bool EvtFormatMessage( EventLogHandle publisherMetadataHandle, EventLogHandle eventHandle, uint messageId, @@ -621,7 +726,6 @@ internal static extern bool EvtFormatMessage( int bufferSize, [Out] char[]? buffer, out int bufferUsed); -#pragma warning restore DLLIMPORTGENANALYZER015 [GeneratedDllImport(Interop.Libraries.Wevtapi, EntryPoint = "EvtFormatMessage", SetLastError = true)] internal static partial bool EvtFormatMessageBuffer( @@ -636,15 +740,12 @@ internal static partial bool EvtFormatMessageBuffer( out int bufferUsed); // SESSION -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable types. - [DllImport(Interop.Libraries.Wevtapi, SetLastError = true)] - internal static extern EventLogHandle EvtOpenSession( + [GeneratedDllImport(Interop.Libraries.Wevtapi, SetLastError = true)] + internal static partial EventLogHandle EvtOpenSession( EvtLoginClass loginClass, ref EvtRpcLogin login, int timeout, int flags); -#pragma warning restore DLLIMPORTGENANALYZER015 // BOOKMARK [GeneratedDllImport(Interop.Libraries.Wevtapi, EntryPoint = "EvtCreateBookmark", SetLastError = true)] diff --git a/src/libraries/System.Diagnostics.EventLog/tests/System.Diagnostics.EventLog.Tests.csproj b/src/libraries/System.Diagnostics.EventLog/tests/System.Diagnostics.EventLog.Tests.csproj index a03f4dea580489..9898d2491cafc5 100644 --- a/src/libraries/System.Diagnostics.EventLog/tests/System.Diagnostics.EventLog.Tests.csproj +++ b/src/libraries/System.Diagnostics.EventLog/tests/System.Diagnostics.EventLog.Tests.csproj @@ -26,6 +26,8 @@ + - \ No newline at end of file + diff --git a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj index 918384304526b6..fae2dee2392256 100644 --- a/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj +++ b/src/libraries/System.Diagnostics.FileVersionInfo/src/System.Diagnostics.FileVersionInfo.csproj @@ -6,10 +6,12 @@ - SR.DiagnosticsFileVersionInfo_PlatformNotSupported + SR.DiagnosticsFileVersionInfo_PlatformNotSupported + diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj b/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj index 5ebf58e40c57e6..f90314643f412b 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj @@ -128,6 +128,10 @@ System.Diagnostics.PerformanceCounter + + + diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/CounterCreationDataCollection.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/CounterCreationDataCollection.cs index fe7d96acc34cee..98f40d1df1cba4 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/CounterCreationDataCollection.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/CounterCreationDataCollection.cs @@ -39,24 +39,16 @@ public int Add(CounterCreationData value) return List.Add(value); } - public void AddRange(CounterCreationData[] value) + public void AddRange(CounterCreationData[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(CounterCreationDataCollection value) + public void AddRange(CounterCreationDataCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } int currentCount = value.Count; for (int i = 0; i < currentCount; i++) { @@ -89,11 +81,8 @@ public virtual void Remove(CounterCreationData value) List.Remove(value); } - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!(value is CounterCreationData)) throw new ArgumentException(SR.MustAddCounterCreationData); } diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollection.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollection.cs index a37cb291d4ff2f..1e9d53b49216f2 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollection.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollection.cs @@ -15,10 +15,8 @@ namespace System.Diagnostics public class InstanceDataCollection : DictionaryBase { [Obsolete("This constructor has been deprecated. Use System.Diagnostics.InstanceDataCollectionCollection.get_Item to get an instance of this collection instead.")] - public InstanceDataCollection(string counterName) + public InstanceDataCollection(string counterName!!) { - if (counterName == null) - throw new ArgumentNullException(nameof(counterName)); CounterName = counterName; } @@ -58,11 +56,8 @@ internal void Add(string instanceName, InstanceData value) Dictionary.Add(objectName, value); } - public bool Contains(string instanceName) + public bool Contains(string instanceName!!) { - if (instanceName == null) - throw new ArgumentNullException(nameof(instanceName)); - string objectName = instanceName.ToLowerInvariant(); return Dictionary.Contains(objectName); } diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollectionCollection.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollectionCollection.cs index 1628c8e9aebe2b..ad556f300c76e4 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollectionCollection.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/InstanceDataCollectionCollection.cs @@ -49,11 +49,8 @@ internal void Add(string counterName, InstanceDataCollection value) Dictionary.Add(objectName, value); } - public bool Contains(string counterName) + public bool Contains(string counterName!!) { - if (counterName == null) - throw new ArgumentNullException(nameof(counterName)); - object objectName = counterName.ToLowerInvariant(); return Dictionary.Contains(objectName); } diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceCounterCategory.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceCounterCategory.cs index 8fd6b54519b7d8..727dce4931188c 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceCounterCategory.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceCounterCategory.cs @@ -41,11 +41,8 @@ public PerformanceCounterCategory(string categoryName) /// Creates a PerformanceCounterCategory object for given category. /// Uses the given machine name. /// - public PerformanceCounterCategory(string categoryName, string machineName) + public PerformanceCounterCategory(string categoryName!!, string machineName) { - if (categoryName == null) - throw new ArgumentNullException(nameof(categoryName)); - if (categoryName.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidParameter, nameof(categoryName), categoryName), nameof(categoryName)); @@ -150,11 +147,8 @@ public string MachineName /// /// Returns true if the counter is registered for this category /// - public bool CounterExists(string counterName) + public bool CounterExists(string counterName!!) { - if (counterName == null) - throw new ArgumentNullException(nameof(counterName)); - if (_categoryName == null) throw new InvalidOperationException(SR.CategoryNameNotSet); @@ -172,14 +166,8 @@ public static bool CounterExists(string counterName, string categoryName) /// /// Returns true if the counter is registered for this category on a particular machine. /// - public static bool CounterExists(string counterName, string categoryName, string machineName) + public static bool CounterExists(string counterName!!, string categoryName!!, string machineName) { - if (counterName == null) - throw new ArgumentNullException(nameof(counterName)); - - if (categoryName == null) - throw new ArgumentNullException(nameof(categoryName)); - if (categoryName.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidParameter, nameof(categoryName), categoryName), nameof(categoryName)); @@ -254,11 +242,8 @@ public static PerformanceCounterCategory Create(string categoryName, string cate } // there is an idential copy of CheckValidCategory in PerformnaceCounterInstaller - internal static void CheckValidCategory(string categoryName) + internal static void CheckValidCategory(string categoryName!!) { - if (categoryName == null) - throw new ArgumentNullException(nameof(categoryName)); - if (!CheckValidId(categoryName, MaxCategoryNameLength)) throw new ArgumentException(SR.Format(SR.PerfInvalidCategoryName, 1, MaxCategoryNameLength)); @@ -268,11 +253,8 @@ internal static void CheckValidCategory(string categoryName) throw new ArgumentException(SR.CategoryNameTooLong); } - internal static void CheckValidCounter(string counterName) + internal static void CheckValidCounter(string counterName!!) { - if (counterName == null) - throw new ArgumentNullException(nameof(counterName)); - if (!CheckValidId(counterName, MaxCounterNameLength)) throw new ArgumentException(SR.Format(SR.PerfInvalidCounterName, 1, MaxCounterNameLength)); } @@ -300,10 +282,8 @@ internal static bool CheckValidId(string id, int maxLength) return true; } - internal static void CheckValidHelp(string help) + internal static void CheckValidHelp(string help!!) { - if (help == null) - throw new ArgumentNullException(nameof(help)); if (help.Length > MaxHelpLength) throw new ArgumentException(SR.Format(SR.PerfInvalidHelp, 0, MaxHelpLength)); } @@ -421,11 +401,8 @@ public static bool Exists(string categoryName) /// /// Returns true if the category is registered in the machine. /// - public static bool Exists(string categoryName, string machineName) + public static bool Exists(string categoryName!!, string machineName) { - if (categoryName == null) - throw new ArgumentNullException(nameof(categoryName)); - if (categoryName.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidParameter, nameof(categoryName), categoryName), nameof(categoryName)); @@ -471,11 +448,8 @@ public PerformanceCounter[] GetCounters() /// /// Returns an array of counters in this category for the given instance. /// - public PerformanceCounter[] GetCounters(string instanceName) + public PerformanceCounter[] GetCounters(string instanceName!!) { - if (instanceName == null) - throw new ArgumentNullException(nameof(instanceName)); - if (_categoryName == null) throw new InvalidOperationException(SR.CategoryNameNotSet); @@ -529,11 +503,8 @@ public string[] GetInstanceNames() /// /// Returns true if the instance already exists for this category. /// - public bool InstanceExists(string instanceName) + public bool InstanceExists(string instanceName!!) { - if (instanceName == null) - throw new ArgumentNullException(nameof(instanceName)); - if (_categoryName == null) throw new InvalidOperationException(SR.CategoryNameNotSet); @@ -554,14 +525,8 @@ public static bool InstanceExists(string instanceName, string categoryName) /// /// Returns true if the instance already exists for this category and machine specified. /// - public static bool InstanceExists(string instanceName, string categoryName, string machineName) + public static bool InstanceExists(string instanceName!!, string categoryName!!, string machineName) { - if (instanceName == null) - throw new ArgumentNullException(nameof(instanceName)); - - if (categoryName == null) - throw new ArgumentNullException(nameof(categoryName)); - if (categoryName.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidParameter, nameof(categoryName), categoryName), nameof(categoryName)); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSet.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSet.cs index 64ac5f49e0244c..e2e2021d52ed42 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSet.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSet.cs @@ -124,12 +124,8 @@ public void AddCounter(int counterId, CounterType counterType) /// CounterId uniquely identifies the counter within CounterSet /// One of defined CounterType values /// This is friendly name to help provider developers as indexer. and it might not match what is displayed in counter consumption applications lie perfmon. - public void AddCounter(int counterId, CounterType counterType, string counterName) + public void AddCounter(int counterId, CounterType counterType, string counterName!!) { - if (counterName == null) - { - throw new ArgumentNullException(nameof(counterName)); - } if (counterName.Length == 0) { throw new ArgumentException(SR.Perflib_Argument_EmptyCounterName, nameof(counterName)); @@ -172,12 +168,8 @@ public void AddCounter(int counterId, CounterType counterType, string counterNam /// /// Friendly name identifies the instance. InstanceName would be shown in counter consumption applications like perfmon. /// CounterSetInstance object - public CounterSetInstance CreateCounterSetInstance(string instanceName) + public CounterSetInstance CreateCounterSetInstance(string instanceName!!) { - if (instanceName == null) - { - throw new ArgumentNullException(nameof(instanceName)); - } if (instanceName.Length == 0) { throw new ArgumentException(SR.Perflib_Argument_EmptyInstanceName, nameof(instanceName)); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstance.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstance.cs index cce28bba1a1756..4b5782bd322a65 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstance.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstance.cs @@ -17,16 +17,8 @@ public sealed class CounterSetInstance : IDisposable private int _active; internal unsafe Interop.PerfCounter.PerfCounterSetInstanceStruct* _nativeInst; - internal unsafe CounterSetInstance(CounterSet counterSetDefined, string instanceName) + internal unsafe CounterSetInstance(CounterSet counterSetDefined!!, string instanceName!!) { - if (counterSetDefined == null) - { - throw new ArgumentNullException(nameof(counterSetDefined)); - } - if (instanceName == null) - { - throw new ArgumentNullException(nameof(instanceName)); - } if (instanceName.Length == 0) { throw new ArgumentException(SR.Perflib_Argument_EmptyInstanceName, nameof(instanceName)); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstanceCounterDataSet.cs b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstanceCounterDataSet.cs index aba0040a1eb84e..7fee3aa86ac151 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstanceCounterDataSet.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/PerformanceData/CounterSetInstanceCounterDataSet.cs @@ -221,14 +221,10 @@ public CounterData this[int counterId] /// /// CounterName that matches one CounterSet::AddCounter() call /// CounterData object with matched counterName - public CounterData this[string counterName] + public CounterData this[string counterName!!] { get { - if (counterName == null) - { - throw new ArgumentNullException(nameof(counterName)); - } if (counterName.Length == 0) { throw new ArgumentNullException(nameof(counterName)); diff --git a/src/libraries/System.Diagnostics.Process/src/Resources/Strings.resx b/src/libraries/System.Diagnostics.Process/src/Resources/Strings.resx index ddbeed29f973ac..84f7006f981b14 100644 --- a/src/libraries/System.Diagnostics.Process/src/Resources/Strings.resx +++ b/src/libraries/System.Diagnostics.Process/src/Resources/Strings.resx @@ -269,9 +269,6 @@ ProcessStartInfo.Password and ProcessStartInfo.PasswordInClearText cannot both be set. Use only one of them. - - Array cannot be null. - Index and count must refer to a location within the buffer. diff --git a/src/libraries/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj b/src/libraries/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj index 2521808c43c2da..8a41187ffa5cb9 100644 --- a/src/libraries/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj +++ b/src/libraries/System.Diagnostics.Process/src/System.Diagnostics.Process.csproj @@ -33,6 +33,8 @@ + arguments) + public static Process Start(string fileName!!, IEnumerable arguments!!) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - if (arguments == null) - throw new ArgumentNullException(nameof(arguments)); - var startInfo = new ProcessStartInfo(fileName); foreach (string argument in arguments) { @@ -1322,12 +1314,9 @@ public static Process Start(string fileName, IEnumerable arguments) [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] [SupportedOSPlatform("maccatalyst")] - public static Process? Start(ProcessStartInfo startInfo) + public static Process? Start(ProcessStartInfo startInfo!!) { Process process = new Process(); - if (startInfo == null) - throw new ArgumentNullException(nameof(startInfo)); - process.StartInfo = startInfo; return process.Start() ? process : diff --git a/src/libraries/System.Diagnostics.TextWriterTraceListener/src/System/Diagnostics/TextWriterTraceListener.cs b/src/libraries/System.Diagnostics.TextWriterTraceListener/src/System/Diagnostics/TextWriterTraceListener.cs index 28325cc356a9bf..a866d717e02cfc 100644 --- a/src/libraries/System.Diagnostics.TextWriterTraceListener/src/System/Diagnostics/TextWriterTraceListener.cs +++ b/src/libraries/System.Diagnostics.TextWriterTraceListener/src/System/Diagnostics/TextWriterTraceListener.cs @@ -38,10 +38,9 @@ public TextWriterTraceListener(Stream stream) /// Initializes a new instance of the class with the /// specified name and using the stream as the recipient of the debugging and tracing output. /// - public TextWriterTraceListener(Stream stream, string? name) + public TextWriterTraceListener(Stream stream!!, string? name) : base(name) { - if (stream == null) throw new ArgumentNullException(nameof(stream)); _writer = new StreamWriter(stream); } @@ -60,10 +59,9 @@ public TextWriterTraceListener(TextWriter writer) /// debugging /// output. /// - public TextWriterTraceListener(TextWriter writer, string? name) + public TextWriterTraceListener(TextWriter writer!!, string? name) : base(name) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); _writer = writer; } diff --git a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/CorrelationManager.cs b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/CorrelationManager.cs index c5f67fc2139b96..518eb61be51014 100644 --- a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/CorrelationManager.cs +++ b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/CorrelationManager.cs @@ -27,13 +27,8 @@ internal CorrelationManager() public Guid ActivityId { get { return _activityId.Value; } set { _activityId.Value = value; } } - public void StartLogicalOperation(object operationId) + public void StartLogicalOperation(object operationId!!) { - if (operationId == null) - { - throw new ArgumentNullException(nameof(operationId)); - } - _stackWrapper.Push(operationId); } diff --git a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/SourceFilter.cs b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/SourceFilter.cs index e792cd846b762a..f5275623743fa1 100644 --- a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/SourceFilter.cs +++ b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/SourceFilter.cs @@ -16,12 +16,9 @@ public SourceFilter(string source) Source = source; } - public override bool ShouldTrace(TraceEventCache? cache, string source, TraceEventType eventType, int id, string? formatOrMessage, + public override bool ShouldTrace(TraceEventCache? cache, string source!!, TraceEventType eventType, int id, string? formatOrMessage, object?[]? args, object? data1, object?[]? data) { - if (source == null) - throw new ArgumentNullException(nameof(source)); - return string.Equals(_src, source); } diff --git a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceListeners.cs b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceListeners.cs index 09d2ce791e48a8..a1045d0ab7e7bc 100644 --- a/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceListeners.cs +++ b/src/libraries/System.Diagnostics.TraceSource/src/System/Diagnostics/TraceListeners.cs @@ -83,12 +83,8 @@ public int Add(TraceListener listener) /// /// [To be supplied.] /// - public void AddRange(TraceListener[] value) + public void AddRange(TraceListener[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } for (int i = 0; ((i) < (value.Length)); i = ((i) + (1))) { this.Add(value[i]); @@ -98,12 +94,8 @@ public void AddRange(TraceListener[] value) /// /// [To be supplied.] /// - public void AddRange(TraceListenerCollection value) + public void AddRange(TraceListenerCollection value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } int currentCount = value.Count; for (int i = 0; i < currentCount; i = ((i) + (1))) { @@ -150,11 +142,8 @@ public IEnumerator GetEnumerator() return _list.GetEnumerator(); } - internal void InitializeListener(TraceListener listener) + internal void InitializeListener(TraceListener listener!!) { - if (listener == null) - throw new ArgumentNullException(nameof(listener)); - listener.IndentSize = TraceInternal.IndentSize; listener.IndentLevel = TraceInternal.IndentLevel; } diff --git a/src/libraries/System.DirectoryServices.AccountManagement/src/System.DirectoryServices.AccountManagement.csproj b/src/libraries/System.DirectoryServices.AccountManagement/src/System.DirectoryServices.AccountManagement.csproj index c747c1d187c19b..b518e6ecd1f3dc 100644 --- a/src/libraries/System.DirectoryServices.AccountManagement/src/System.DirectoryServices.AccountManagement.csproj +++ b/src/libraries/System.DirectoryServices.AccountManagement/src/System.DirectoryServices.AccountManagement.csproj @@ -188,6 +188,10 @@ + + + diff --git a/src/libraries/System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/interopt.cs b/src/libraries/System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/interopt.cs index 23ef181e99bfd2..64fcab520bf431 100644 --- a/src/libraries/System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/interopt.cs +++ b/src/libraries/System.DirectoryServices.AccountManagement/src/System/DirectoryServices/AccountManagement/interopt.cs @@ -25,7 +25,9 @@ public static int ADsOpenObject(string path, string userName, string password, i { try { - return Interop.Activeds.ADsOpenObject(path, userName, password, flags, ref iid, out ppObject); + int hr = Interop.Activeds.ADsOpenObject(path, userName, password, flags, ref iid, out IntPtr ppObjPtr); + ppObject = Marshal.GetObjectForIUnknown(ppObjPtr); + return hr; } catch (EntryPointNotFoundException) { diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System.DirectoryServices.Protocols.csproj b/src/libraries/System.DirectoryServices.Protocols/src/System.DirectoryServices.Protocols.csproj index 0a92754626c1fc..366ab1b31854d2 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System.DirectoryServices.Protocols.csproj +++ b/src/libraries/System.DirectoryServices.Protocols/src/System.DirectoryServices.Protocols.csproj @@ -41,9 +41,16 @@ + + Common\DisableRuntimeMarshalling.cs + Common\Interop\Interop.Ldap.cs + + Common\Interop\Windows\Interop.BOOL.cs + @@ -102,6 +109,7 @@ + diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/BerPal.Windows.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/BerPal.Windows.cs index 586bcd7d39a2cf..8d0d6bf93a822f 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/BerPal.Windows.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/BerPal.Windows.cs @@ -15,25 +15,25 @@ internal static class BerPal internal static int FlattenBerElement(SafeBerHandle berElement, ref IntPtr flattenptr) => Interop.Ldap.ber_flatten(berElement, ref flattenptr); - internal static int PrintBerArray(SafeBerHandle berElement, string format, IntPtr value, nuint _) => Interop.Ldap.ber_printf(berElement, format, __arglist(value)); + internal static int PrintBerArray(SafeBerHandle berElement, string format, IntPtr value, nuint _) => Interop.Ldap.ber_printf(berElement, format, value); - internal static int PrintByteArray(SafeBerHandle berElement, string format, HGlobalMemHandle value, uint length, nuint _) => Interop.Ldap.ber_printf(berElement, format, __arglist(value, length)); + internal static int PrintByteArray(SafeBerHandle berElement, string format, HGlobalMemHandle value, uint length, nuint _) => Interop.Ldap.ber_printf(berElement, format, value, length); - internal static int PrintEmptyArgument(SafeBerHandle berElement, string format, nuint _) => Interop.Ldap.ber_printf(berElement, format, __arglist()); + internal static int PrintEmptyArgument(SafeBerHandle berElement, string format, nuint _) => Interop.Ldap.ber_printf(berElement, format); - internal static int PrintInt(SafeBerHandle berElement, string format, int value, nuint _) => Interop.Ldap.ber_printf(berElement, format, __arglist(value)); + internal static int PrintInt(SafeBerHandle berElement, string format, int value, nuint _) => Interop.Ldap.ber_printf(berElement, format, value); - internal static int PrintTag(SafeBerHandle berElement, string format, nuint tag) => Interop.Ldap.ber_printf(berElement, format, __arglist((uint)tag)); + internal static int PrintTag(SafeBerHandle berElement, string format, nuint tag) => Interop.Ldap.ber_printf(berElement, format, (uint)tag); - internal static int ScanNext(SafeBerHandle berElement, string format) => Interop.Ldap.ber_scanf(berElement, format, __arglist()); + internal static int ScanNext(SafeBerHandle berElement, string format) => Interop.Ldap.ber_scanf(berElement, format); - internal static int ScanNextBitString(SafeBerHandle berElement, string format, ref IntPtr ptrResult, ref uint bitLength) => Interop.Ldap.ber_scanf(berElement, format, __arglist(ref ptrResult, ref bitLength)); + internal static int ScanNextBitString(SafeBerHandle berElement, string format, ref IntPtr ptrResult, ref uint bitLength) => Interop.Ldap.ber_scanf(berElement, format, ref ptrResult, ref bitLength); - internal static int ScanNextInt(SafeBerHandle berElement, string format, ref int result) => Interop.Ldap.ber_scanf(berElement, format, __arglist(ref result)); + internal static int ScanNextInt(SafeBerHandle berElement, string format, ref int result) => Interop.Ldap.ber_scanf(berElement, format, ref result); - internal static int ScanNextPtr(SafeBerHandle berElement, string format, ref IntPtr value) => Interop.Ldap.ber_scanf(berElement, format, __arglist(ref value)); + internal static int ScanNextPtr(SafeBerHandle berElement, string format, ref IntPtr value) => Interop.Ldap.ber_scanf(berElement, format, ref value); - internal static int ScanNextMultiByteArray(SafeBerHandle berElement, string format, ref IntPtr value) => Interop.Ldap.ber_scanf(berElement, format, __arglist(ref value)); + internal static int ScanNextMultiByteArray(SafeBerHandle berElement, string format, ref IntPtr value) => Interop.Ldap.ber_scanf(berElement, format, ref value); internal static bool IsBerDecodeError(int errorCode) => errorCode != 0; } diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Linux.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Linux.cs index 329237f10b3065..cb4423b53d603b 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Linux.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Linux.cs @@ -50,7 +50,13 @@ internal static int GetLastErrorFromConnection(ConnectionHandle ldapHandle) internal static int GetSecurityHandleOption(ConnectionHandle ldapHandle, LdapOption option, ref SecurityHandle outValue) => Interop.Ldap.ldap_get_option_sechandle(ldapHandle, option, ref outValue); // This option is not supported on Linux, so it would most likely throw. - internal static int GetSecInfoOption(ConnectionHandle ldapHandle, LdapOption option, SecurityPackageContextConnectionInformation outValue) => Interop.Ldap.ldap_get_option_secInfo(ldapHandle, option, outValue); + internal static unsafe int GetSecInfoOption(ConnectionHandle ldapHandle, LdapOption option, SecurityPackageContextConnectionInformation outValue) + { + fixed (void* outValuePtr = outValue) + { + return Interop.Ldap.ldap_get_option_secInfo(ldapHandle, option, outValuePtr); + } + } internal static IntPtr GetValuesFromAttribute(ConnectionHandle ldapHandle, IntPtr result, string name) => Interop.Ldap.ldap_get_values_len(ldapHandle, result, name); diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Windows.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Windows.cs index ddceb9b39f9783..f914f707883b67 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Windows.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/Interop/LdapPal.Windows.cs @@ -42,7 +42,13 @@ internal static int ExtendedDirectoryOperation(ConnectionHandle ldapHandle, stri internal static int GetSecurityHandleOption(ConnectionHandle ldapHandle, LdapOption option, ref SecurityHandle outValue) => Interop.Ldap.ldap_get_option_sechandle(ldapHandle, option, ref outValue); - internal static int GetSecInfoOption(ConnectionHandle ldapHandle, LdapOption option, SecurityPackageContextConnectionInformation outValue) => Interop.Ldap.ldap_get_option_secInfo(ldapHandle, option, outValue); + internal static unsafe int GetSecInfoOption(ConnectionHandle ldapHandle, LdapOption option, SecurityPackageContextConnectionInformation outValue) + { + fixed (void* outValuePtr = outValue) + { + return Interop.Ldap.ldap_get_option_secInfo(ldapHandle, option, outValuePtr); + } + } internal static IntPtr GetValuesFromAttribute(ConnectionHandle ldapHandle, IntPtr result, string name) => Interop.Ldap.ldap_get_values_len(ldapHandle, result, name); diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/BerConverter.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/BerConverter.cs index 1b91fd7c4de769..a717a45e7bd03a 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/BerConverter.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/BerConverter.cs @@ -10,11 +10,8 @@ namespace System.DirectoryServices.Protocols { public static partial class BerConverter { - public static byte[] Encode(string format, params object[] value) + public static byte[] Encode(string format!!, params object[] value) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - // no need to turn on invalid encoding detection as we just do string->byte[] conversion. UTF8Encoding utf8Encoder = new UTF8Encoding(); byte[] encodingResult = null; @@ -301,11 +298,8 @@ public static object[] Decode(string format, byte[] value) throw new BerConversionException(); } - internal static object[] TryDecode(string format, byte[] value, out bool decodeSucceeded) + internal static object[] TryDecode(string format!!, byte[] value, out bool decodeSucceeded) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - Debug.WriteLine("Begin decoding"); UTF8Encoding utf8Encoder = new UTF8Encoding(false, true); diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryAttribute.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryAttribute.cs index 078f298a60fa4e..ea46a1b47ea971 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryAttribute.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryAttribute.cs @@ -33,26 +33,14 @@ public DirectoryAttribute(string name, Uri value) : this(name, (object)value) { } - internal DirectoryAttribute(string name, object value) : this() + internal DirectoryAttribute(string name!!, object value!!) : this() { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (value == null) - throw new ArgumentNullException(nameof(value)); - Name = name; Add(value); } - public DirectoryAttribute(string name, params object[] values) : this() + public DirectoryAttribute(string name!!, params object[] values!!) : this() { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (values == null) - throw new ArgumentNullException(nameof(values)); - Name = name; for (int i = 0; i < values.Length; i++) @@ -166,12 +154,8 @@ public object this[int index] public int Add(Uri value) => Add((object)value); - internal int Add(object value) + internal int Add(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (!(value is string) && !(value is byte[]) && !(value is Uri)) { throw new ArgumentException(SR.ValidValueType, nameof(value)); @@ -180,12 +164,8 @@ internal int Add(object value) return List.Add(value); } - public void AddRange(object[] values) + public void AddRange(object[] values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } if (!(values is string[]) && !(values is byte[][]) && !(values is Uri[])) { throw new ArgumentException(SR.ValidValuesType, nameof(values)); @@ -214,24 +194,15 @@ public void AddRange(object[] values) public void Insert(int index, Uri value) => Insert(index, (object)value); - private void Insert(int index, object value) + private void Insert(int index, object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - List.Insert(index, value); } public void Remove(object value) => List.Remove(value); - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (!(value is string) && !(value is byte[]) && !(value is Uri)) { throw new ArgumentException(SR.ValidValueType, nameof(value)); @@ -289,13 +260,8 @@ internal void Add(string name, DirectoryAttribute value) Dictionary.Add(name.ToLowerInvariant(), value); } - public bool Contains(string attributeName) + public bool Contains(string attributeName!!) { - if (attributeName == null) - { - throw new ArgumentNullException(nameof(attributeName)); - } - object objectName = attributeName.ToLowerInvariant(); return Dictionary.Contains(objectName); } @@ -325,13 +291,8 @@ public int Add(DirectoryAttribute attribute) return List.Add(attribute); } - public void AddRange(DirectoryAttribute[] attributes) + public void AddRange(DirectoryAttribute[] attributes!!) { - if (attributes == null) - { - throw new ArgumentNullException(nameof(attributes)); - } - foreach (DirectoryAttribute attribute in attributes) { if (attribute == null) @@ -343,13 +304,8 @@ public void AddRange(DirectoryAttribute[] attributes) InnerList.AddRange(attributes); } - public void AddRange(DirectoryAttributeCollection attributeCollection) + public void AddRange(DirectoryAttributeCollection attributeCollection!!) { - if (attributeCollection == null) - { - throw new ArgumentNullException(nameof(attributeCollection)); - } - int currentCount = attributeCollection.Count; for (int i = 0; i < currentCount; i = ((i) + (1))) { @@ -410,13 +366,8 @@ public int Add(DirectoryAttributeModification attribute) return List.Add(attribute); } - public void AddRange(DirectoryAttributeModification[] attributes) + public void AddRange(DirectoryAttributeModification[] attributes!!) { - if (attributes == null) - { - throw new ArgumentNullException(nameof(attributes)); - } - foreach (DirectoryAttributeModification attribute in attributes) { if (attribute == null) @@ -428,13 +379,8 @@ public void AddRange(DirectoryAttributeModification[] attributes) InnerList.AddRange(attributes); } - public void AddRange(DirectoryAttributeModificationCollection attributeCollection) + public void AddRange(DirectoryAttributeModificationCollection attributeCollection!!) { - if (attributeCollection == null) - { - throw new ArgumentNullException(nameof(attributeCollection)); - } - int currentCount = attributeCollection.Count; for (int i = 0; i < currentCount; i = ((i) + (1))) { diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryControl.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryControl.cs index c34f9a4e7cc5a6..bdef26646fedb6 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryControl.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryControl.cs @@ -91,9 +91,9 @@ public class DirectoryControl { internal byte[] _directoryControlValue; - public DirectoryControl(string type, byte[] value, bool isCritical, bool serverSide) + public DirectoryControl(string type!!, byte[] value, bool isCritical, bool serverSide) { - Type = type ?? throw new ArgumentNullException(nameof(type)); + Type = type; if (value != null) { @@ -408,9 +408,9 @@ public class VerifyNameControl : DirectoryControl public VerifyNameControl() : base("1.2.840.113556.1.4.1338", null, true, true) { } - public VerifyNameControl(string serverName) : this() + public VerifyNameControl(string serverName!!) : this() { - _serverName = serverName ?? throw new ArgumentNullException(nameof(serverName)); + _serverName = serverName; } public VerifyNameControl(string serverName, int flag) : this(serverName) @@ -635,13 +635,8 @@ public byte[] Cookie public class SortRequestControl : DirectoryControl { private SortKey[] _keys = Array.Empty(); - public SortRequestControl(params SortKey[] sortKeys) : base("1.2.840.113556.1.4.473", null, true, true) + public SortRequestControl(params SortKey[] sortKeys!!) : base("1.2.840.113556.1.4.473", null, true, true) { - if (sortKeys == null) - { - throw new ArgumentNullException(nameof(sortKeys)); - } - for (int i = 0; i < sortKeys.Length; i++) { if (sortKeys[i] == null) @@ -1052,23 +1047,13 @@ public DirectoryControl this[int index] set => List[index] = value ?? throw new ArgumentNullException(nameof(value)); } - public int Add(DirectoryControl control) + public int Add(DirectoryControl control!!) { - if (control == null) - { - throw new ArgumentNullException(nameof(control)); - } - return List.Add(control); } - public void AddRange(DirectoryControl[] controls) + public void AddRange(DirectoryControl[] controls!!) { - if (controls == null) - { - throw new ArgumentNullException(nameof(controls)); - } - foreach (DirectoryControl control in controls) { if (control == null) @@ -1080,13 +1065,8 @@ public void AddRange(DirectoryControl[] controls) InnerList.AddRange(controls); } - public void AddRange(DirectoryControlCollection controlCollection) + public void AddRange(DirectoryControlCollection controlCollection!!) { - if (controlCollection == null) - { - throw new ArgumentNullException(nameof(controlCollection)); - } - int currentCount = controlCollection.Count; for (int i = 0; i < currentCount; i = ((i) + (1))) { @@ -1100,24 +1080,15 @@ public void AddRange(DirectoryControlCollection controlCollection) public int IndexOf(DirectoryControl value) => List.IndexOf(value); - public void Insert(int index, DirectoryControl value) + public void Insert(int index, DirectoryControl value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - List.Insert(index, value); } public void Remove(DirectoryControl value) => List.Remove(value); - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (!(value is DirectoryControl)) { throw new ArgumentException(SR.Format(SR.InvalidValueType, nameof(DirectoryControl)), nameof(value)); diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryRequest.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryRequest.cs index 347fc652187de6..09891e43a74423 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryRequest.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/common/DirectoryRequest.cs @@ -50,13 +50,8 @@ public AddRequest(string distinguishedName, params DirectoryAttribute[] attribut } } - public AddRequest(string distinguishedName, string objectClass) : this() + public AddRequest(string distinguishedName, string objectClass!!) : this() { - if (objectClass == null) - { - throw new ArgumentNullException(nameof(objectClass)); - } - DistinguishedName = distinguishedName; var objClassAttr = new DirectoryAttribute() @@ -82,13 +77,8 @@ public ModifyRequest(string distinguishedName, params DirectoryAttributeModifica Modifications.AddRange(modifications); } - public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, params object[] values) : this() + public ModifyRequest(string distinguishedName, DirectoryAttributeOperation operation, string attributeName!!, params object[] values) : this() { - if (attributeName == null) - { - throw new ArgumentNullException(nameof(attributeName)); - } - DistinguishedName = distinguishedName; var mod = new DirectoryAttributeModification() { @@ -130,12 +120,8 @@ public CompareRequest(string distinguishedName, string attributeName, Uri value) CompareRequestHelper(distinguishedName, attributeName, value); } - public CompareRequest(string distinguishedName, DirectoryAttribute assertion) + public CompareRequest(string distinguishedName, DirectoryAttribute assertion!!) { - if (assertion == null) - { - throw new ArgumentNullException(nameof(assertion)); - } if (assertion.Count != 1) { throw new ArgumentException(SR.WrongNumValuesCompare); @@ -144,17 +130,8 @@ public CompareRequest(string distinguishedName, DirectoryAttribute assertion) CompareRequestHelper(distinguishedName, assertion.Name, assertion[0]); } - private void CompareRequestHelper(string distinguishedName, string attributeName, object value) + private void CompareRequestHelper(string distinguishedName, string attributeName!!, object value!!) { - if (attributeName == null) - { - throw new ArgumentNullException(nameof(attributeName)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - DistinguishedName = distinguishedName; Assertion.Name = attributeName; Assertion.Add(value); diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapConnection.Windows.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapConnection.Windows.cs index f47dc518a13d4d..829a3abdc25338 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapConnection.Windows.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapConnection.Windows.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.Net; +using System.Runtime.CompilerServices; namespace System.DirectoryServices.Protocols { @@ -37,6 +38,6 @@ private int InternalConnectToServer() } private int InternalBind(NetworkCredential tempCredential, SEC_WINNT_AUTH_IDENTITY_EX cred, BindMethod method) - => tempCredential == null && AuthType == AuthType.External ? Interop.Ldap.ldap_bind_s(_ldapHandle, null, null, method) : Interop.Ldap.ldap_bind_s(_ldapHandle, null, cred, method); + => tempCredential == null && AuthType == AuthType.External ? Interop.Ldap.ldap_bind_s(_ldapHandle, null, Unsafe.NullRef(), method) : Interop.Ldap.ldap_bind_s(_ldapHandle, null, cred, method); } } diff --git a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapSessionOptions.cs b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapSessionOptions.cs index fb2a71e51ed1bc..c0e9780ad478f3 100644 --- a/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapSessionOptions.cs +++ b/src/libraries/System.DirectoryServices.Protocols/src/System/DirectoryServices/Protocols/ldap/LdapSessionOptions.cs @@ -21,16 +21,16 @@ namespace System.DirectoryServices.Protocols public delegate bool VerifyServerCertificateCallback(LdapConnection connection, X509Certificate certificate); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate int QUERYFORCONNECTIONInternal(IntPtr Connection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, string HostName, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX SecAuthIdentity, Luid CurrentUserToken, ref IntPtr ConnectionToUse); + internal unsafe delegate int QUERYFORCONNECTIONInternal(IntPtr Connection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, IntPtr HostName, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX.Native* SecAuthIdentity, Luid* CurrentUserToken, IntPtr* ConnectionToUse); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool NOTIFYOFNEWCONNECTIONInternal(IntPtr Connection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, string HostName, IntPtr NewConnection, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX SecAuthIdentity, Luid CurrentUser, int ErrorCodeFromBind); + internal unsafe delegate Interop.BOOL NOTIFYOFNEWCONNECTIONInternal(IntPtr Connection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, IntPtr HostName, IntPtr NewConnection, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX.Native* SecAuthIdentity, Luid* CurrentUser, int ErrorCodeFromBind); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] internal delegate int DEREFERENCECONNECTIONInternal(IntPtr Connection, IntPtr ConnectionToDereference); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - internal delegate bool VERIFYSERVERCERT(IntPtr Connection, IntPtr pServerCert); + internal delegate Interop.BOOL VERIFYSERVERCERT(IntPtr Connection, IntPtr pServerCert); [Flags] public enum LocatorFlags : long @@ -69,7 +69,8 @@ public enum SecurityProtocol [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public class SecurityPackageContextConnectionInformation { - private readonly SecurityProtocol _securityProtocol; + // Not marked as readonly to enable passing to Unsafe.As in GetPinnableReference. + private SecurityProtocol _securityProtocol; private readonly CipherAlgorithmType _identifier; private readonly int _strength; private readonly HashAlgorithmType _hashAlgorithm; @@ -94,6 +95,8 @@ internal SecurityPackageContextConnectionInformation() public int KeyExchangeAlgorithm => _keyExchangeAlgorithm; public int ExchangeStrength => _exchangeStrength; + + internal ref readonly byte GetPinnableReference() => ref Unsafe.As(ref _securityProtocol); } public sealed class ReferralCallback @@ -127,7 +130,7 @@ public partial class LdapSessionOptions private readonly DEREFERENCECONNECTIONInternal _dereferenceDelegate; private readonly VERIFYSERVERCERT _serverCertificateRoutine; - internal LdapSessionOptions(LdapConnection connection) + internal unsafe LdapSessionOptions(LdapConnection connection) { _connection = connection; _queryDelegate = new QUERYFORCONNECTIONInternal(ProcessQueryConnection); @@ -858,9 +861,9 @@ private void ProcessCallBackRoutine(ReferralCallback tempCallback) ErrorChecking.CheckAndSetLdapError(error); } - private int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, string HostName, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX SecAuthIdentity, Luid CurrentUserToken, ref IntPtr ConnectionToUse) + private unsafe int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFromConnection, IntPtr NewDNPtr, IntPtr HostNamePtr, int PortNumber, SEC_WINNT_AUTH_IDENTITY_EX.Native* SecAuthIdentity, Luid* CurrentUserToken, IntPtr* ConnectionToUse) { - ConnectionToUse = IntPtr.Zero; + *ConnectionToUse = IntPtr.Zero; string NewDN = null; // The user must have registered callback function. @@ -875,7 +878,7 @@ private int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFrom } var target = new StringBuilder(); - target.Append(HostName); + target.Append(Marshal.PtrToStringUni(HostNamePtr)); target.Append(':'); target.Append(PortNumber); var identifier = new LdapDirectoryIdentifier(target.ToString()); @@ -912,7 +915,7 @@ private int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFrom } } - long tokenValue = (uint)CurrentUserToken.LowPart + (((long)CurrentUserToken.HighPart) << 32); + long tokenValue = (uint)CurrentUserToken->LowPart + (((long)CurrentUserToken->HighPart) << 32); LdapConnection con = _callbackRoutine.QueryForConnection(_connection, tempReferralConnection, NewDN, identifier, cred, tokenValue); if (con != null && con._ldapHandle != null && !con._ldapHandle.IsInvalid) @@ -920,7 +923,7 @@ private int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFrom bool success = AddLdapHandleRef(con); if (success) { - ConnectionToUse = con._ldapHandle.DangerousGetHandle(); + *ConnectionToUse = con._ldapHandle.DangerousGetHandle(); } } @@ -931,7 +934,7 @@ private int ProcessQueryConnection(IntPtr PrimaryConnection, IntPtr ReferralFrom return 1; } - private bool ProcessNotifyConnection(IntPtr primaryConnection, IntPtr referralFromConnection, IntPtr newDNPtr, string hostName, IntPtr newConnection, int portNumber, SEC_WINNT_AUTH_IDENTITY_EX SecAuthIdentity, Luid currentUser, int errorCodeFromBind) + private unsafe Interop.BOOL ProcessNotifyConnection(IntPtr primaryConnection, IntPtr referralFromConnection, IntPtr newDNPtr, IntPtr hostNamePtr, IntPtr newConnection, int portNumber, SEC_WINNT_AUTH_IDENTITY_EX.Native* SecAuthIdentity, Luid* currentUser, int errorCodeFromBind) { if (newConnection != IntPtr.Zero && _callbackRoutine.NotifyNewConnection != null) { @@ -942,7 +945,7 @@ private bool ProcessNotifyConnection(IntPtr primaryConnection, IntPtr referralFr } var target = new StringBuilder(); - target.Append(hostName); + target.Append(Marshal.PtrToStringUni(hostNamePtr)); target.Append(':'); target.Append(portNumber); var identifier = new LdapDirectoryIdentifier(target.ToString()); @@ -1005,7 +1008,7 @@ private bool ProcessNotifyConnection(IntPtr primaryConnection, IntPtr referralFr } } - long tokenValue = (uint)currentUser.LowPart + (((long)currentUser.HighPart) << 32); + long tokenValue = (uint)currentUser->LowPart + (((long)currentUser->HighPart) << 32); bool value = _callbackRoutine.NotifyNewConnection(_connection, tempReferralConnection, newDN, identifier, tempNewConnection, cred, tokenValue, errorCodeFromBind); if (value) @@ -1017,10 +1020,10 @@ private bool ProcessNotifyConnection(IntPtr primaryConnection, IntPtr referralFr } } - return value; + return value ? Interop.BOOL.TRUE : Interop.BOOL.FALSE; } - return false; + return Interop.BOOL.FALSE; } private int ProcessDereferenceConnection(IntPtr PrimaryConnection, IntPtr ConnectionToDereference) @@ -1056,21 +1059,21 @@ private int ProcessDereferenceConnection(IntPtr PrimaryConnection, IntPtr Connec return 1; } - private NetworkCredential ProcessSecAuthIdentity(SEC_WINNT_AUTH_IDENTITY_EX SecAuthIdentit) + private unsafe NetworkCredential ProcessSecAuthIdentity(SEC_WINNT_AUTH_IDENTITY_EX.Native* SecAuthIdentit) { if (SecAuthIdentit == null) { return new NetworkCredential(); } - string user = SecAuthIdentit.user; - string domain = SecAuthIdentit.domain; - string password = SecAuthIdentit.password; + string user = Marshal.PtrToStringUni(SecAuthIdentit->user); + string domain = Marshal.PtrToStringUni(SecAuthIdentit->domain); + string password = Marshal.PtrToStringUni(SecAuthIdentit->password); return new NetworkCredential(user, password, domain); } - private bool ProcessServerCertificate(IntPtr connection, IntPtr serverCert) + private Interop.BOOL ProcessServerCertificate(IntPtr connection, IntPtr serverCert) { // If callback is not specified by user, it means the server certificate is accepted. bool value = true; @@ -1092,7 +1095,7 @@ private bool ProcessServerCertificate(IntPtr connection, IntPtr serverCert) value = _serverCertificateDelegate(_connection, certificate); } - return value; + return value ? Interop.BOOL.TRUE : Interop.BOOL.FALSE; } private static bool AddLdapHandleRef(LdapConnection ldapConnection) diff --git a/src/libraries/System.DirectoryServices/src/Interop/SafeNativeMethods.cs b/src/libraries/System.DirectoryServices/src/Interop/SafeNativeMethods.cs index 800f61ec68d493..b9f850d13db467 100644 --- a/src/libraries/System.DirectoryServices/src/Interop/SafeNativeMethods.cs +++ b/src/libraries/System.DirectoryServices/src/Interop/SafeNativeMethods.cs @@ -34,9 +34,9 @@ public class EnumVariant private object _currentValue = s_noMoreValues; private readonly IEnumVariant _enumerator; - public EnumVariant(IEnumVariant en) + public EnumVariant(IEnumVariant en!!) { - _enumerator = en ?? throw new ArgumentNullException(nameof(en)); + _enumerator = en; } /// diff --git a/src/libraries/System.DirectoryServices/src/Interop/UnsafeNativeMethods.cs b/src/libraries/System.DirectoryServices/src/Interop/UnsafeNativeMethods.cs index 7b4922c71fece9..53cf23eb0d8ec2 100644 --- a/src/libraries/System.DirectoryServices/src/Interop/UnsafeNativeMethods.cs +++ b/src/libraries/System.DirectoryServices/src/Interop/UnsafeNativeMethods.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics; using System.Runtime.InteropServices; using System.Security; @@ -30,9 +31,22 @@ internal static class UnsafeNativeMethods { public static int ADsOpenObject(string path, string? userName, string? password, int flags, [In, Out] ref Guid iid, [Out, MarshalAs(UnmanagedType.Interface)] out object ppObject) { + IntPtr ppObjectNative = IntPtr.Zero; try { - return global::Interop.Activeds.ADsOpenObject(path, userName, password, flags, ref iid, out ppObject); + int hr = global::Interop.Activeds.ADsOpenObject(path, userName, password, flags, ref iid, out ppObjectNative); + try + { + ppObject = ppObjectNative != IntPtr.Zero ? Marshal.GetObjectForIUnknown(ppObjectNative) : null!; + return hr; + } + finally + { + if (ppObjectNative != IntPtr.Zero) + { + Marshal.Release(ppObjectNative); + } + } } catch (EntryPointNotFoundException) { diff --git a/src/libraries/System.DirectoryServices/src/System.DirectoryServices.csproj b/src/libraries/System.DirectoryServices/src/System.DirectoryServices.csproj index 71c695235a69e3..9f4bbc7733bedf 100644 --- a/src/libraries/System.DirectoryServices/src/System.DirectoryServices.csproj +++ b/src/libraries/System.DirectoryServices/src/System.DirectoryServices.csproj @@ -153,6 +153,9 @@ System.DirectoryServices.ActiveDirectory.DomainController + DayOfWeek.Saturday) diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchema.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchema.cs index 73a386b9732b95..fcea89f347cc17 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchema.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchema.cs @@ -84,13 +84,8 @@ protected override void Dispose(bool disposing) #endregion IDisposable #region public methods - public static ActiveDirectorySchema GetSchema(DirectoryContext context) + public static ActiveDirectorySchema GetSchema(DirectoryContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - // contexttype should be Forest, DirectoryServer or ConfigurationSet if ((context.ContextType != DirectoryContextType.Forest) && (context.ContextType != DirectoryContextType.ConfigurationSet) && diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClass.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClass.cs index ab0cf6c41c59a5..7e068ce0718d92 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClass.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClass.cs @@ -46,13 +46,8 @@ public class ActiveDirectorySchemaClass : IDisposable private bool _defaultSDSddlFormInitialized; #region constructors - public ActiveDirectorySchemaClass(DirectoryContext context, string ldapDisplayName) + public ActiveDirectorySchemaClass(DirectoryContext context!!, string ldapDisplayName) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if ((context.Name == null) && (!context.isRootDomain())) { throw new ArgumentException(SR.ContextNotAssociatedWithDomain, nameof(context)); @@ -224,15 +219,9 @@ protected virtual void Dispose(bool disposing) #endregion IDisposable #region public methods - public static ActiveDirectorySchemaClass FindByName(DirectoryContext context, string ldapDisplayName) + public static ActiveDirectorySchemaClass FindByName(DirectoryContext context!!, string ldapDisplayName) { ActiveDirectorySchemaClass? schemaClass = null; - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if ((context.Name == null) && (!context.isRootDomain())) { throw new ArgumentException(SR.ContextNotAssociatedWithDomain, nameof(context)); diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClassCollection.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClassCollection.cs index bef900f6071c2f..fd49fb2a08e1d2 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClassCollection.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaClassCollection.cs @@ -77,13 +77,8 @@ public ActiveDirectorySchemaClass this[int index] } } - public int Add(ActiveDirectorySchemaClass schemaClass) + public int Add(ActiveDirectorySchemaClass schemaClass!!) { - if (schemaClass == null) - { - throw new ArgumentNullException(nameof(schemaClass)); - } - if (!schemaClass.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaClass.Name)); @@ -99,13 +94,8 @@ public int Add(ActiveDirectorySchemaClass schemaClass) } } - public void AddRange(ActiveDirectorySchemaClass[] schemaClasses) + public void AddRange(ActiveDirectorySchemaClass[] schemaClasses!!) { - if (schemaClasses == null) - { - throw new ArgumentNullException(nameof(schemaClasses)); - } - foreach (ActiveDirectorySchemaClass schemaClass in schemaClasses) { if (schemaClass == null) @@ -120,13 +110,8 @@ public void AddRange(ActiveDirectorySchemaClass[] schemaClasses) } } - public void AddRange(ActiveDirectorySchemaClassCollection schemaClasses) + public void AddRange(ActiveDirectorySchemaClassCollection schemaClasses!!) { - if (schemaClasses == null) - { - throw new ArgumentNullException(nameof(schemaClasses)); - } - foreach (ActiveDirectorySchemaClass schemaClass in schemaClasses) { if (schemaClass == null) @@ -142,13 +127,8 @@ public void AddRange(ActiveDirectorySchemaClassCollection schemaClasses) } } - public void AddRange(ReadOnlyActiveDirectorySchemaClassCollection schemaClasses) + public void AddRange(ReadOnlyActiveDirectorySchemaClassCollection schemaClasses!!) { - if (schemaClasses == null) - { - throw new ArgumentNullException(nameof(schemaClasses)); - } - foreach (ActiveDirectorySchemaClass schemaClass in schemaClasses) { if (schemaClass == null) @@ -164,13 +144,8 @@ public void AddRange(ReadOnlyActiveDirectorySchemaClassCollection schemaClasses) } } - public void Remove(ActiveDirectorySchemaClass schemaClass) + public void Remove(ActiveDirectorySchemaClass schemaClass!!) { - if (schemaClass == null) - { - throw new ArgumentNullException(nameof(schemaClass)); - } - if (!schemaClass.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaClass.Name)); @@ -188,13 +163,8 @@ public void Remove(ActiveDirectorySchemaClass schemaClass) throw new ArgumentException(SR.Format(SR.NotFoundInCollection, schemaClass), nameof(schemaClass)); } - public void Insert(int index, ActiveDirectorySchemaClass schemaClass) + public void Insert(int index, ActiveDirectorySchemaClass schemaClass!!) { - if (schemaClass == null) - { - throw new ArgumentNullException(nameof(schemaClass)); - } - if (!schemaClass.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaClass.Name)); @@ -210,13 +180,8 @@ public void Insert(int index, ActiveDirectorySchemaClass schemaClass) } } - public bool Contains(ActiveDirectorySchemaClass schemaClass) + public bool Contains(ActiveDirectorySchemaClass schemaClass!!) { - if (schemaClass == null) - { - throw new ArgumentNullException(nameof(schemaClass)); - } - if (!schemaClass.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaClass.Name)); @@ -239,13 +204,8 @@ public void CopyTo(ActiveDirectorySchemaClass[] schemaClasses, int index) List.CopyTo(schemaClasses, index); } - public int IndexOf(ActiveDirectorySchemaClass schemaClass) + public int IndexOf(ActiveDirectorySchemaClass schemaClass!!) { - if (schemaClass == null) - { - throw new ArgumentNullException(nameof(schemaClass)); - } - if (!schemaClass.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaClass.Name)); @@ -356,13 +316,8 @@ protected override void OnSetComplete(int index, object oldValue, object newValu } } - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (!(value is ActiveDirectorySchemaClass)) { throw new ArgumentException(null, nameof(value)); diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaProperty.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaProperty.cs index 181a6161757c9b..8733223967c17b 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaProperty.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaProperty.cs @@ -100,13 +100,8 @@ public class ActiveDirectorySchemaProperty : IDisposable /* ReplicaLink */ new Syntax("2.5.5.10", 127, s_replicaLinkOMObjectClass)}; #region constructors - public ActiveDirectorySchemaProperty(DirectoryContext context, string ldapDisplayName) + public ActiveDirectorySchemaProperty(DirectoryContext context!!, string ldapDisplayName) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if ((context.Name == null) && (!context.isRootDomain())) { throw new ArgumentException(SR.ContextNotAssociatedWithDomain, nameof(context)); @@ -278,15 +273,9 @@ protected virtual void Dispose(bool disposing) #endregion IDisposable #region public methods - public static ActiveDirectorySchemaProperty FindByName(DirectoryContext context, string ldapDisplayName) + public static ActiveDirectorySchemaProperty FindByName(DirectoryContext context!!, string ldapDisplayName) { ActiveDirectorySchemaProperty? schemaProperty = null; - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - if ((context.Name == null) && (!context.isRootDomain())) { throw new ArgumentException(SR.ContextNotAssociatedWithDomain, nameof(context)); diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs index a07d77d39a72a7..ae86871b689622 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs @@ -75,13 +75,8 @@ public ActiveDirectorySchemaProperty this[int index] } } - public int Add(ActiveDirectorySchemaProperty schemaProperty) + public int Add(ActiveDirectorySchemaProperty schemaProperty!!) { - if (schemaProperty == null) - { - throw new ArgumentNullException(nameof(schemaProperty)); - } - if (!schemaProperty.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaProperty.Name)); @@ -97,13 +92,8 @@ public int Add(ActiveDirectorySchemaProperty schemaProperty) } } - public void AddRange(ActiveDirectorySchemaProperty[] properties) + public void AddRange(ActiveDirectorySchemaProperty[] properties!!) { - if (properties == null) - { - throw new ArgumentNullException(nameof(properties)); - } - foreach (ActiveDirectorySchemaProperty property in properties) { if (property == null) @@ -118,13 +108,8 @@ public void AddRange(ActiveDirectorySchemaProperty[] properties) } } - public void AddRange(ActiveDirectorySchemaPropertyCollection properties) + public void AddRange(ActiveDirectorySchemaPropertyCollection properties!!) { - if (properties == null) - { - throw new ArgumentNullException(nameof(properties)); - } - foreach (ActiveDirectorySchemaProperty property in properties) { if (property == null) @@ -141,13 +126,8 @@ public void AddRange(ActiveDirectorySchemaPropertyCollection properties) } } - public void AddRange(ReadOnlyActiveDirectorySchemaPropertyCollection properties) + public void AddRange(ReadOnlyActiveDirectorySchemaPropertyCollection properties!!) { - if (properties == null) - { - throw new ArgumentNullException(nameof(properties)); - } - foreach (ActiveDirectorySchemaProperty property in properties) { if (property == null) @@ -164,13 +144,8 @@ public void AddRange(ReadOnlyActiveDirectorySchemaPropertyCollection properties) } } - public void Remove(ActiveDirectorySchemaProperty schemaProperty) + public void Remove(ActiveDirectorySchemaProperty schemaProperty!!) { - if (schemaProperty == null) - { - throw new ArgumentNullException(nameof(schemaProperty)); - } - if (!schemaProperty.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaProperty.Name)); @@ -188,13 +163,8 @@ public void Remove(ActiveDirectorySchemaProperty schemaProperty) throw new ArgumentException(SR.Format(SR.NotFoundInCollection, schemaProperty), nameof(schemaProperty)); } - public void Insert(int index, ActiveDirectorySchemaProperty schemaProperty) + public void Insert(int index, ActiveDirectorySchemaProperty schemaProperty!!) { - if (schemaProperty == null) - { - throw new ArgumentNullException(nameof(schemaProperty)); - } - if (!schemaProperty.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaProperty.Name)); @@ -210,13 +180,8 @@ public void Insert(int index, ActiveDirectorySchemaProperty schemaProperty) } } - public bool Contains(ActiveDirectorySchemaProperty schemaProperty) + public bool Contains(ActiveDirectorySchemaProperty schemaProperty!!) { - if (schemaProperty == null) - { - throw new ArgumentNullException(nameof(schemaProperty)); - } - if (!schemaProperty.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaProperty.Name)); @@ -253,13 +218,8 @@ public void CopyTo(ActiveDirectorySchemaProperty[] properties, int index) List.CopyTo(properties, index); } - public int IndexOf(ActiveDirectorySchemaProperty schemaProperty) + public int IndexOf(ActiveDirectorySchemaProperty schemaProperty!!) { - if (schemaProperty == null) - { - throw new ArgumentNullException(nameof(schemaProperty)); - } - if (!schemaProperty.isBound) { throw new InvalidOperationException(SR.Format(SR.SchemaObjectNotCommitted, schemaProperty.Name)); @@ -370,10 +330,8 @@ protected override void OnSetComplete(int index, object oldValue, object newValu } } - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (!(value is ActiveDirectorySchemaProperty)) throw new ArgumentException(null, nameof(value)); diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySite.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySite.cs index 1307a7ea7b8736..21cf53e4db79e6 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySite.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySite.cs @@ -1102,12 +1102,8 @@ protected virtual void Dispose(bool disposing) _disposed = true; } - private static void ValidateArgument(DirectoryContext context, string siteName) + private static void ValidateArgument(DirectoryContext context!!, string siteName) { - // basic validation first - if (context == null) - throw new ArgumentNullException(nameof(context)); - // if target is not specified, then we determin the target from the logon credential, so if it is a local user context, it should fail if ((context.Name == null) && (!context.isRootDomain())) { diff --git a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySiteCollection.cs b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySiteCollection.cs index 9c428eaae46ba9..5ea1d759b66944 100644 --- a/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySiteCollection.cs +++ b/src/libraries/System.DirectoryServices/src/System/DirectoryServices/ActiveDirectory/ActiveDirectorySiteCollection.cs @@ -40,11 +40,8 @@ public ActiveDirectorySite this[int index] } } - public int Add(ActiveDirectorySite site) + public int Add(ActiveDirectorySite site!!) { - if (site == null) - throw new ArgumentNullException(nameof(site)); - if (!site.existing) throw new InvalidOperationException(SR.Format(SR.SiteNotCommitted, site.Name)); @@ -54,30 +51,21 @@ public int Add(ActiveDirectorySite site) throw new ArgumentException(SR.Format(SR.AlreadyExistingInCollection, site), nameof(site)); } - public void AddRange(ActiveDirectorySite[] sites) + public void AddRange(ActiveDirectorySite[] sites!!) { - if (sites == null) - throw new ArgumentNullException(nameof(sites)); - for (int i = 0; ((i) < (sites.Length)); i = ((i) + (1))) this.Add(sites[i]); } - public void AddRange(ActiveDirectorySiteCollection sites) + public void AddRange(ActiveDirectorySiteCollection sites!!) { - if (sites == null) - throw new ArgumentNullException(nameof(sites)); - int count = sites.Count; for (int i = 0; i < count; i++) this.Add(sites[i]); } - public bool Contains(ActiveDirectorySite site) + public bool Contains(ActiveDirectorySite site!!) { - if (site == null) - throw new ArgumentNullException(nameof(site)); - if (!site.existing) throw new InvalidOperationException(SR.Format(SR.SiteNotCommitted, site.Name)); @@ -101,11 +89,8 @@ public void CopyTo(ActiveDirectorySite[] array, int index) List.CopyTo(array, index); } - public int IndexOf(ActiveDirectorySite site) + public int IndexOf(ActiveDirectorySite site!!) { - if (site == null) - throw new ArgumentNullException(nameof(site)); - if (!site.existing) throw new InvalidOperationException(SR.Format(SR.SiteNotCommitted, site.Name)); @@ -124,11 +109,8 @@ public int IndexOf(ActiveDirectorySite site) return -1; } - public void Insert(int index, ActiveDirectorySite site) + public void Insert(int index, ActiveDirectorySite site!!) { - if (site == null) - throw new ArgumentNullException(nameof(site)); - if (!site.existing) throw new InvalidOperationException(SR.Format(SR.SiteNotCommitted, site.Name)); @@ -138,11 +120,8 @@ public void Insert(int index, ActiveDirectorySite site) throw new ArgumentException(SR.Format(SR.AlreadyExistingInCollection, site), nameof(site)); } - public void Remove(ActiveDirectorySite site) + public void Remove(ActiveDirectorySite site!!) { - if (site == null) - throw new ArgumentNullException(nameof(site)); - if (!site.existing) throw new InvalidOperationException(SR.Format(SR.SiteNotCommitted, site.Name)); @@ -232,10 +211,8 @@ protected override void OnSetComplete(int index, object oldValue, object newValu } } - protected override void OnValidate(object value) + protected override void OnValidate(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (!(value is ActiveDirectorySite)) throw new ArgumentException(null, nameof(value)); diff --git a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Gdi32.cs b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Gdi32.cs index 7ea26b42835385..c438ef92640af4 100644 --- a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Gdi32.cs +++ b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Gdi32.cs @@ -3,6 +3,9 @@ using System; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif internal static partial class Interop { @@ -12,35 +15,83 @@ internal static partial class Gdi32 internal const int CHECKJPEGFORMAT = 4119; internal const int CHECKPNGFORMAT = 4120; - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true)] - internal static extern IntPtr CreateCompatibleBitmap(HandleRef hDC, int width, int height); + [GeneratedDllImport(Libraries.Gdi32, ExactSpelling = true, SetLastError = true)] + internal static partial IntPtr CreateCompatibleBitmap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, int width, int height); - [DllImport(Libraries.Gdi32)] - internal static extern int GetDIBits(HandleRef hdc, HandleRef hbm, int arg1, int arg2, IntPtr arg3, ref BITMAPINFO_FLAT bmi, int arg5); + [GeneratedDllImport(Libraries.Gdi32)] + internal static partial int GetDIBits( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hdc, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hbm, int arg1, int arg2, IntPtr arg3, ref BITMAPINFO_FLAT bmi, int arg5); - [DllImport(Libraries.Gdi32)] - internal static extern uint GetPaletteEntries(HandleRef hpal, int iStartIndex, int nEntries, byte[] lppe); + [GeneratedDllImport(Libraries.Gdi32)] + internal static partial uint GetPaletteEntries( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hpal, int iStartIndex, int nEntries, byte[] lppe); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true)] - internal static extern IntPtr CreateDIBSection(HandleRef hdc, ref BITMAPINFO_FLAT bmi, int iUsage, ref IntPtr ppvBits, IntPtr hSection, int dwOffset); + [GeneratedDllImport(Libraries.Gdi32, ExactSpelling = true, SetLastError = true)] + internal static partial IntPtr CreateDIBSection( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hdc, ref BITMAPINFO_FLAT bmi, int iUsage, ref IntPtr ppvBits, IntPtr hSection, int dwOffset); - [DllImport(Libraries.Gdi32, SetLastError = true, CharSet = CharSet.Auto)] - internal static extern int StartDoc(HandleRef hDC, DOCINFO lpDocInfo); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, SetLastError = true)] + internal static partial int StartDoc( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, DOCINFO lpDocInfo); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int StartPage(HandleRef hDC); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int StartPage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int EndPage(HandleRef hDC); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int EndPage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int AbortDoc(HandleRef hDC); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int AbortDoc( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int EndDoc(HandleRef hDC); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int EndDoc( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC); - [DllImport(Libraries.Gdi32, SetLastError = true, CharSet = CharSet.Auto)] - internal static extern IntPtr /*HDC*/ ResetDC(HandleRef hDC, HandleRef /*DEVMODE*/ lpDevMode); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, SetLastError = true)] + internal static partial IntPtr /*HDC*/ ResetDC( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef /*DEVMODE*/ lpDevMode); [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, SetLastError = true)] internal static partial int AddFontResourceEx(string lpszFilename, int fl, IntPtr pdv); @@ -50,22 +101,46 @@ internal static int AddFontFile(string fileName) return AddFontResourceEx(fileName, /*FR_PRIVATE*/ 0x10, IntPtr.Zero); } - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int ExtEscape(HandleRef hDC, int nEscape, int cbInput, ref int inData, int cbOutput, [Out] out int outData); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int ExtEscape( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, int nEscape, int cbInput, ref int inData, int cbOutput, out int outData); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int ExtEscape(HandleRef hDC, int nEscape, int cbInput, byte[] inData, int cbOutput, [Out] out int outData); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int ExtEscape( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, int nEscape, int cbInput, byte[] inData, int cbOutput, out int outData); - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern int IntersectClipRect(HandleRef hDC, int x1, int y1, int x2, int y2); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial int IntersectClipRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, int x1, int y1, int x2, int y2); - [DllImport(Libraries.Gdi32, SetLastError = true)] - internal static extern int GetObject(HandleRef hObject, int nSize, ref BITMAP bm); + [GeneratedDllImport(Libraries.Gdi32, SetLastError = true)] + internal static partial int GetObject( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hObject, int nSize, ref BITMAP bm); - [DllImport(Libraries.Gdi32, SetLastError = true, CharSet = CharSet.Unicode)] - internal static extern int GetObject(HandleRef hObject, int nSize, ref Interop.User32.LOGFONT lf); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial int GetObject( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hObject, int nSize, ref Interop.User32.LOGFONT lf); - internal static unsafe int GetObject(HandleRef hObject, ref Interop.User32.LOGFONT lp) + internal static unsafe int GetObject( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hObject, ref Interop.User32.LOGFONT lp) => GetObject(hObject, sizeof(Interop.User32.LOGFONT), ref lp); [StructLayout(LayoutKind.Sequential)] @@ -100,6 +175,9 @@ internal unsafe struct BITMAPINFO_FLAT public fixed byte bmiColors[BITMAPINFO_MAX_COLORSIZE * 4]; // RGBQUAD structs... Blue-Green-Red-Reserved, repeat... } +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(Native))] +#endif [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] internal sealed class DOCINFO { @@ -108,6 +186,33 @@ internal sealed class DOCINFO internal string? lpszOutput; internal string? lpszDatatype; internal int fwType; + +#if NET7_0_OR_GREATER + internal struct Native + { + internal int cbSize; + internal IntPtr lpszDocName; + internal IntPtr lpszOutput; + internal IntPtr lpszDatatype; + internal int fwType; + + public Native(DOCINFO docInfo) + { + cbSize = docInfo.cbSize; + lpszDocName = Marshal.StringToCoTaskMemAuto(docInfo.lpszDocName); + lpszOutput = Marshal.StringToCoTaskMemAuto(docInfo.lpszOutput); + lpszDatatype = Marshal.StringToCoTaskMemAuto(docInfo.lpszDatatype); + fwType = docInfo.fwType; + } + + public void FreeNative() + { + Marshal.FreeCoTaskMem(lpszDocName); + Marshal.FreeCoTaskMem(lpszOutput); + Marshal.FreeCoTaskMem(lpszDatatype); + } + } +#endif } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] @@ -192,4 +297,4 @@ public override string ToString() } } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Kernel32.cs b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Kernel32.cs index 57d2b9171783ba..5332459af64b2e 100644 --- a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Kernel32.cs +++ b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Kernel32.cs @@ -3,6 +3,9 @@ using System; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif internal static partial class Interop { @@ -19,7 +22,15 @@ internal static IntPtr GlobalAlloc(int uFlags, uint dwBytes) return IntGlobalAlloc(uFlags, new UIntPtr(dwBytes)); } - [DllImport(Libraries.Gdi32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern IntPtr SelectObject(HandleRef hdc, HandleRef obj); + [GeneratedDllImport(Libraries.Gdi32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial IntPtr SelectObject( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hdc, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef obj); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Shell32.cs b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Shell32.cs index 8122f6234cc8ae..a15f358ccc26a6 100644 --- a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Shell32.cs +++ b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Shell32.cs @@ -3,12 +3,19 @@ using System; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif internal static partial class Interop { internal static partial class Shell32 { - [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode)] - internal static extern unsafe IntPtr ExtractAssociatedIcon(HandleRef hInst, char* iconPath, ref int index); + [GeneratedDllImport(Libraries.Shell32, CharSet = CharSet.Unicode)] + internal static unsafe partial IntPtr ExtractAssociatedIcon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hInst, char* iconPath, ref int index); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.User32.cs b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.User32.cs index dc485e0bab512f..95a82c34ddad47 100644 --- a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.User32.cs +++ b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.User32.cs @@ -3,28 +3,59 @@ using System; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif internal static partial class Interop { internal static partial class User32 { - [DllImport(Libraries.User32, SetLastError = true, CharSet = CharSet.Unicode)] - internal static extern IntPtr LoadIcon(HandleRef hInst, IntPtr iconId); + [GeneratedDllImport(Libraries.User32, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial IntPtr LoadIcon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hInst, IntPtr iconId); - [DllImport(Libraries.User32, SetLastError = true, ExactSpelling = true)] - internal static extern bool DestroyIcon(HandleRef hIcon); + [GeneratedDllImport(Libraries.User32, ExactSpelling = true, SetLastError = true)] + internal static partial bool DestroyIcon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hIcon); - [DllImport(Libraries.User32, SetLastError = true, ExactSpelling = true)] - internal static extern IntPtr CopyImage(HandleRef hImage, int uType, int cxDesired, int cyDesired, int fuFlags); + [GeneratedDllImport(Libraries.User32, ExactSpelling = true, SetLastError = true)] + internal static partial IntPtr CopyImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hImage, int uType, int cxDesired, int cyDesired, int fuFlags); - [DllImport(Libraries.User32, SetLastError = true, ExactSpelling = true)] - internal static extern bool GetIconInfo(HandleRef hIcon, ref ICONINFO info); + [GeneratedDllImport(Libraries.User32, ExactSpelling = true, SetLastError = true)] + internal static partial bool GetIconInfo( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hIcon, ref ICONINFO info); [GeneratedDllImport(Libraries.User32, SetLastError = true)] public static partial int GetSystemMetrics(int nIndex); - [DllImport(Libraries.User32, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)] - internal static extern bool DrawIconEx(HandleRef hDC, int x, int y, HandleRef hIcon, int width, int height, int iStepIfAniCursor, HandleRef hBrushFlickerFree, int diFlags); + [GeneratedDllImport(Libraries.User32, CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)] + internal static partial bool DrawIconEx( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hDC, int x, int y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hIcon, int width, int height, int iStepIfAniCursor, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hBrushFlickerFree, int diFlags); [GeneratedDllImport(Libraries.User32, SetLastError = true)] internal static unsafe partial IntPtr CreateIconFromResourceEx(byte* pbIconBits, uint cbIconBits, bool fIcon, int dwVersion, int csDesired, int cyDesired, int flags); @@ -39,4 +70,4 @@ internal struct ICONINFO internal IntPtr hbmColor; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Winspool.cs b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Winspool.cs index 1b11a3fa45a8b9..cc8ced8e126347 100644 --- a/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Winspool.cs +++ b/src/libraries/System.Drawing.Common/src/Interop/Windows/Interop.Winspool.cs @@ -3,6 +3,9 @@ using System; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif internal static partial class Interop { @@ -11,13 +14,33 @@ internal static partial class Winspool [GeneratedDllImport(Libraries.Winspool, CharSet = CharSet.Auto, SetLastError = true)] internal static partial int DeviceCapabilities(string pDevice, string pPort, short fwCapabilities, IntPtr pOutput, IntPtr /*DEVMODE*/ pDevMode); - [DllImport(Libraries.Winspool, SetLastError = true, CharSet = CharSet.Auto, BestFitMapping = false)] - internal static extern int DocumentProperties(HandleRef hwnd, HandleRef hPrinter, string pDeviceName, IntPtr /*DEVMODE*/ pDevModeOutput, HandleRef /*DEVMODE*/ pDevModeInput, int fMode); + [GeneratedDllImport(Libraries.Winspool, CharSet = CharSet.Auto, SetLastError = true)] + internal static partial int DocumentProperties( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hwnd, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hPrinter, string pDeviceName, IntPtr /*DEVMODE*/ pDevModeOutput, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef /*DEVMODE*/ pDevModeInput, int fMode); - [DllImport(Libraries.Winspool, SetLastError = true, CharSet = CharSet.Auto, BestFitMapping = false)] - internal static extern int DocumentProperties(HandleRef hwnd, HandleRef hPrinter, string pDeviceName, IntPtr /*DEVMODE*/ pDevModeOutput, IntPtr /*DEVMODE*/ pDevModeInput, int fMode); + [GeneratedDllImport(Libraries.Winspool, CharSet = CharSet.Auto, SetLastError = true)] + internal static partial int DocumentProperties( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hwnd, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hPrinter, string pDeviceName, IntPtr /*DEVMODE*/ pDevModeOutput, IntPtr /*DEVMODE*/ pDevModeInput, int fMode); [GeneratedDllImport(Libraries.Winspool, CharSet = CharSet.Auto, SetLastError = true)] internal static partial int EnumPrinters(int flags, string? name, int level, IntPtr pPrinterEnum/*buffer*/, int cbBuf, out int pcbNeeded, out int pcReturned); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/System.Drawing.Common.csproj b/src/libraries/System.Drawing.Common/src/System.Drawing.Common.csproj index 2870372f9730df..5a34aa4d3ada00 100644 --- a/src/libraries/System.Drawing.Common/src/System.Drawing.Common.csproj +++ b/src/libraries/System.Drawing.Common/src/System.Drawing.Common.csproj @@ -180,6 +180,8 @@ Unix support is disabled by default. See https://aka.ms/systemdrawingnonwindows + placeholder.ico + + + + diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.Windows.cs index 84f959f94c2812..7670ac88d0227b 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.Windows.cs @@ -9,13 +9,8 @@ namespace System.Drawing { public sealed partial class Bitmap { - public unsafe Bitmap(Stream stream, bool useIcm) + public unsafe Bitmap(Stream stream!!, bool useIcm) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - using DrawingCom.IStreamWrapper streamWrapper = DrawingCom.GetComWrapper(new GPStream(stream)); IntPtr bitmap = IntPtr.Zero; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs index 581219b060261b..60a18794093eca 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs @@ -57,17 +57,8 @@ public Bitmap(Type type, string resource) : this(GetResourceStream(type, resourc { } - private static Stream GetResourceStream(Type type, string resource) + private static Stream GetResourceStream(Type type!!, string resource!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (resource == null) - { - throw new ArgumentNullException(nameof(resource)); - } - Stream? stream = type.Module.Assembly.GetManifestResourceStream(type, resource); if (stream == null) { @@ -81,13 +72,8 @@ public Bitmap(int width, int height) : this(width, height, PixelFormat.Format32b { } - public Bitmap(int width, int height, Graphics g) + public Bitmap(int width, int height, Graphics g!!) { - if (g == null) - { - throw new ArgumentNullException(nameof(g)); - } - IntPtr bitmap; int status = Gdip.GdipCreateBitmapFromGraphics(width, height, new HandleRef(g, g.NativeGraphics), out bitmap); Gdip.CheckStatus(status); @@ -121,11 +107,8 @@ public Bitmap(Image original, Size newSize) : this(original, newSize.Width, newS { } - public Bitmap(Image original, int width, int height) : this(width, height, PixelFormat.Format32bppArgb) + public Bitmap(Image original!!, int width, int height) : this(width, height, PixelFormat.Format32bppArgb) { - if (original == null) - throw new ArgumentNullException(nameof(original)); - using (Graphics g = Graphics.FromImage(this)) { g.Clear(Color.Transparent); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Unix.cs index 42f91976b70b5b..f644b3d2a9a4a7 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Unix.cs @@ -74,10 +74,8 @@ public GraphicsPath(PointF[] pts, byte[] types) { } - public GraphicsPath(Point[] pts, byte[] types, FillMode fillMode) + public GraphicsPath(Point[] pts!!, byte[] types, FillMode fillMode) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); if (pts.Length != types.Length) throw new ArgumentException(SR.NumberOfPointsAndTypesMustBeSame); @@ -85,10 +83,8 @@ public GraphicsPath(Point[] pts, byte[] types, FillMode fillMode) Gdip.CheckStatus(status); } - public GraphicsPath(PointF[] pts, byte[] types, FillMode fillMode) + public GraphicsPath(PointF[] pts!!, byte[] types, FillMode fillMode) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); if (pts.Length != types.Length) throw new ArgumentException(SR.NumberOfPointsAndTypesMustBeSame); @@ -299,18 +295,14 @@ public void AddBezier(float x1, float y1, float x2, float y2, float x3, float y3 // // AddBeziers // - public void AddBeziers(params Point[] points) + public void AddBeziers(params Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); int status = Gdip.GdipAddPathBeziersI(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddBeziers(PointF[] points) + public void AddBeziers(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); int status = Gdip.GdipAddPathBeziers(_nativePath, points, points.Length); Gdip.CheckStatus(status); } @@ -377,10 +369,8 @@ public void AddLine(float x1, float y1, float x2, float y2) // // AddLines // - public void AddLines(Point[] points) + public void AddLines(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) throw new ArgumentException(null, nameof(points)); @@ -388,10 +378,8 @@ public void AddLines(Point[] points) Gdip.CheckStatus(status); } - public void AddLines(PointF[] points) + public void AddLines(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) throw new ArgumentException(null, nameof(points)); @@ -424,20 +412,14 @@ public void AddPie(float x, float y, float width, float height, float startAngle // // AddPolygon // - public void AddPolygon(Point[] points) + public void AddPolygon(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathPolygonI(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddPolygon(PointF[] points) + public void AddPolygon(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathPolygon(_nativePath, points, points.Length); Gdip.CheckStatus(status); } @@ -460,10 +442,8 @@ public void AddRectangle(RectangleF rect) // // AddRectangles // - public void AddRectangles(Rectangle[] rects) + public void AddRectangles(Rectangle[] rects!!) { - if (rects == null) - throw new ArgumentNullException(nameof(rects)); if (rects.Length == 0) throw new ArgumentException(null, nameof(rects)); @@ -471,10 +451,8 @@ public void AddRectangles(Rectangle[] rects) Gdip.CheckStatus(status); } - public void AddRectangles(RectangleF[] rects) + public void AddRectangles(RectangleF[] rects!!) { - if (rects == null) - throw new ArgumentNullException(nameof(rects)); if (rects.Length == 0) throw new ArgumentException(null, nameof(rects)); @@ -485,11 +463,8 @@ public void AddRectangles(RectangleF[] rects) // // AddPath // - public void AddPath(GraphicsPath addingPath, bool connect) + public void AddPath(GraphicsPath addingPath!!, bool connect) { - if (addingPath == null) - throw new ArgumentNullException(nameof(addingPath)); - int status = Gdip.GdipAddPathPath(_nativePath, addingPath._nativePath, connect); Gdip.CheckStatus(status); } @@ -506,38 +481,26 @@ public PointF GetLastPoint() // // AddClosedCurve // - public void AddClosedCurve(Point[] points) + public void AddClosedCurve(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathClosedCurveI(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddClosedCurve(PointF[] points) + public void AddClosedCurve(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathClosedCurve(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddClosedCurve(Point[] points, float tension) + public void AddClosedCurve(Point[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathClosedCurve2I(_nativePath, points, points.Length, tension); Gdip.CheckStatus(status); } - public void AddClosedCurve(PointF[] points, float tension) + public void AddClosedCurve(PointF[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathClosedCurve2(_nativePath, points, points.Length, tension); Gdip.CheckStatus(status); } @@ -545,58 +508,40 @@ public void AddClosedCurve(PointF[] points, float tension) // // AddCurve // - public void AddCurve(Point[] points) + public void AddCurve(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurveI(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddCurve(PointF[] points) + public void AddCurve(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurve(_nativePath, points, points.Length); Gdip.CheckStatus(status); } - public void AddCurve(Point[] points, float tension) + public void AddCurve(Point[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurve2I(_nativePath, points, points.Length, tension); Gdip.CheckStatus(status); } - public void AddCurve(PointF[] points, float tension) + public void AddCurve(PointF[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurve2(_nativePath, points, points.Length, tension); Gdip.CheckStatus(status); } - public void AddCurve(Point[] points, int offset, int numberOfSegments, float tension) + public void AddCurve(Point[] points!!, int offset, int numberOfSegments, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurve3I(_nativePath, points, points.Length, offset, numberOfSegments, tension); Gdip.CheckStatus(status); } - public void AddCurve(PointF[] points, int offset, int numberOfSegments, float tension) + public void AddCurve(PointF[] points!!, int offset, int numberOfSegments, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - int status = Gdip.GdipAddPathCurve3(_nativePath, points, points.Length, offset, numberOfSegments, tension); @@ -615,11 +560,8 @@ public void Reverse() Gdip.CheckStatus(status); } - public void Transform(Matrix matrix) + public void Transform(Matrix matrix!!) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); - int status = Gdip.GdipTransformPath(_nativePath, matrix.NativeMatrix); Gdip.CheckStatus(status); } @@ -640,22 +582,16 @@ public void AddString(string s, FontFamily family, int style, float emSize, Poin AddString(s, family, style, emSize, layout, format); } - public void AddString(string s, FontFamily family, int style, float emSize, Rectangle layoutRect, StringFormat? format) + public void AddString(string s, FontFamily family!!, int style, float emSize, Rectangle layoutRect, StringFormat? format) { - if (family == null) - throw new ArgumentNullException(nameof(family)); - IntPtr sformat = (format == null) ? IntPtr.Zero : format.nativeFormat; // note: the NullReferenceException on s.Length is the expected (MS) exception int status = Gdip.GdipAddPathStringI(_nativePath, s, s.Length, family.NativeFamily, style, emSize, ref layoutRect, sformat); Gdip.CheckStatus(status); } - public void AddString(string s, FontFamily family, int style, float emSize, RectangleF layoutRect, StringFormat? format) + public void AddString(string s, FontFamily family!!, int style, float emSize, RectangleF layoutRect, StringFormat? format) { - if (family == null) - throw new ArgumentNullException(nameof(family)); - IntPtr sformat = (format == null) ? IntPtr.Zero : format.nativeFormat; // note: the NullReferenceException on s.Length is the expected (MS) exception int status = Gdip.GdipAddPathString(_nativePath, s, s.Length, family.NativeFamily, style, emSize, ref layoutRect, sformat); @@ -754,11 +690,8 @@ public bool IsOutlineVisible(PointF pt, Pen pen, Graphics? graphics) return IsOutlineVisible(pt.X, pt.Y, pen, graphics); } - public bool IsOutlineVisible(int x, int y, Pen pen, Graphics? graphics) + public bool IsOutlineVisible(int x, int y, Pen pen!!, Graphics? graphics) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - bool result; IntPtr g = (graphics == null) ? IntPtr.Zero : graphics.NativeGraphics; @@ -768,11 +701,8 @@ public bool IsOutlineVisible(int x, int y, Pen pen, Graphics? graphics) return result; } - public bool IsOutlineVisible(float x, float y, Pen pen, Graphics? graphics) + public bool IsOutlineVisible(float x, float y, Pen pen!!, Graphics? graphics) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - bool result; IntPtr g = (graphics == null) ? IntPtr.Zero : graphics.NativeGraphics; @@ -867,11 +797,8 @@ public void Warp(PointF[] destPoints, RectangleF srcRect, Matrix? matrix, WarpMo Warp(destPoints, srcRect, matrix, warpMode, FlatnessDefault); } - public void Warp(PointF[] destPoints, RectangleF srcRect, Matrix? matrix, WarpMode warpMode, float flatness) + public void Warp(PointF[] destPoints!!, RectangleF srcRect, Matrix? matrix, WarpMode warpMode, float flatness) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - IntPtr m = (matrix == null) ? IntPtr.Zero : matrix.NativeMatrix; int s = Gdip.GdipWarpPath(_nativePath, m, destPoints, destPoints.Length, @@ -890,10 +817,8 @@ public void Widen(Pen pen, Matrix? matrix) Widen(pen, matrix, FlatnessDefault); } - public void Widen(Pen pen, Matrix? matrix, float flatness) + public void Widen(Pen pen!!, Matrix? matrix, float flatness) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); if (PointCount == 0) return; IntPtr m = (matrix == null) ? IntPtr.Zero : matrix.NativeMatrix; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Windows.cs index f0a1bd9aec3b45..aeafa81d13e6bf 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/GraphicsPath.Windows.cs @@ -26,10 +26,8 @@ public GraphicsPath(FillMode fillMode) public GraphicsPath(PointF[] pts, byte[] types) : this(pts, types, FillMode.Alternate) { } - public unsafe GraphicsPath(PointF[] pts, byte[] types, FillMode fillMode) + public unsafe GraphicsPath(PointF[] pts!!, byte[] types, FillMode fillMode) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); if (pts.Length != types.Length) throw Gdip.StatusException(Gdip.InvalidParameter); @@ -45,10 +43,8 @@ public unsafe GraphicsPath(PointF[] pts, byte[] types, FillMode fillMode) public GraphicsPath(Point[] pts, byte[] types) : this(pts, types, FillMode.Alternate) { } - public unsafe GraphicsPath(Point[] pts, byte[] types, FillMode fillMode) + public unsafe GraphicsPath(Point[] pts!!, byte[] types, FillMode fillMode) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); if (pts.Length != types.Length) throw Gdip.StatusException(Gdip.InvalidParameter); @@ -246,11 +242,8 @@ public bool IsOutlineVisible(float x, float y, Pen pen, Graphics? graphics) return IsOutlineVisible(new PointF(x, y), pen, graphics); } - public bool IsOutlineVisible(PointF pt, Pen pen, Graphics? graphics) + public bool IsOutlineVisible(PointF pt, Pen pen!!, Graphics? graphics) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - Gdip.CheckStatus(Gdip.GdipIsOutlineVisiblePathPoint( new HandleRef(this, _nativePath), pt.X, pt.Y, @@ -267,11 +260,8 @@ public bool IsOutlineVisible(PointF pt, Pen pen, Graphics? graphics) public bool IsOutlineVisible(int x, int y, Pen pen, Graphics? graphics) => IsOutlineVisible(new Point(x, y), pen, graphics); - public bool IsOutlineVisible(Point pt, Pen pen, Graphics? graphics) + public bool IsOutlineVisible(Point pt, Pen pen!!, Graphics? graphics) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - Gdip.CheckStatus(Gdip.GdipIsOutlineVisiblePathPointI( new HandleRef(this, _nativePath), pt.X, pt.Y, @@ -289,10 +279,8 @@ public void AddLine(float x1, float y1, float x2, float y2) Gdip.CheckStatus(Gdip.GdipAddPathLine(new HandleRef(this, _nativePath), x1, y1, x2, y2)); } - public unsafe void AddLines(PointF[] points) + public unsafe void AddLines(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) throw new ArgumentException(null, nameof(points)); @@ -309,10 +297,8 @@ public void AddLine(int x1, int y1, int x2, int y2) Gdip.CheckStatus(Gdip.GdipAddPathLineI(new HandleRef(this, _nativePath), x1, y1, x2, y2)); } - public unsafe void AddLines(Point[] points) + public unsafe void AddLines(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) throw new ArgumentException(null, nameof(points)); @@ -362,11 +348,8 @@ public void AddBezier(float x1, float y1, float x2, float y2, float x3, float y3 x1, y1, x2, y2, x3, y3, x4, y4)); } - public unsafe void AddBeziers(PointF[] points) + public unsafe void AddBeziers(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathBeziers(new HandleRef(this, _nativePath), p, points.Length)); @@ -385,10 +368,8 @@ public void AddBezier(int x1, int y1, int x2, int y2, int x3, int y3, int x4, in x1, y1, x2, y2, x3, y3, x4, y4)); } - public unsafe void AddBeziers(params Point[] points) + public unsafe void AddBeziers(params Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) return; @@ -401,22 +382,16 @@ public unsafe void AddBeziers(params Point[] points) /// /// Add cardinal splines to the path object /// - public unsafe void AddCurve(PointF[] points) + public unsafe void AddCurve(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathCurve(new HandleRef(this, _nativePath), p, points.Length)); } } - public unsafe void AddCurve(PointF[] points, float tension) + public unsafe void AddCurve(PointF[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (points.Length == 0) return; @@ -426,11 +401,8 @@ public unsafe void AddCurve(PointF[] points, float tension) } } - public unsafe void AddCurve(PointF[] points, int offset, int numberOfSegments, float tension) + public unsafe void AddCurve(PointF[] points!!, int offset, int numberOfSegments, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathCurve3( @@ -438,22 +410,16 @@ public unsafe void AddCurve(PointF[] points, int offset, int numberOfSegments, f } } - public unsafe void AddCurve(Point[] points) + public unsafe void AddCurve(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathCurveI(new HandleRef(this, _nativePath), p, points.Length)); } } - public unsafe void AddCurve(Point[] points, float tension) + public unsafe void AddCurve(Point[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathCurve2I( @@ -461,11 +427,8 @@ public unsafe void AddCurve(Point[] points, float tension) } } - public unsafe void AddCurve(Point[] points, int offset, int numberOfSegments, float tension) + public unsafe void AddCurve(Point[] points!!, int offset, int numberOfSegments, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathCurve3I( @@ -473,11 +436,8 @@ public unsafe void AddCurve(Point[] points, int offset, int numberOfSegments, fl } } - public unsafe void AddClosedCurve(PointF[] points) + public unsafe void AddClosedCurve(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathClosedCurve( @@ -485,33 +445,24 @@ public unsafe void AddClosedCurve(PointF[] points) } } - public unsafe void AddClosedCurve(PointF[] points, float tension) + public unsafe void AddClosedCurve(PointF[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathClosedCurve2(new HandleRef(this, _nativePath), p, points.Length, tension)); } } - public unsafe void AddClosedCurve(Point[] points) + public unsafe void AddClosedCurve(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathClosedCurveI(new HandleRef(this, _nativePath), p, points.Length)); } } - public unsafe void AddClosedCurve(Point[] points, float tension) + public unsafe void AddClosedCurve(Point[] points!!, float tension) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathClosedCurve2I(new HandleRef(this, _nativePath), p, points.Length, tension)); @@ -525,10 +476,8 @@ public void AddRectangle(RectangleF rect) rect.X, rect.Y, rect.Width, rect.Height)); } - public unsafe void AddRectangles(RectangleF[] rects) + public unsafe void AddRectangles(RectangleF[] rects!!) { - if (rects == null) - throw new ArgumentNullException(nameof(rects)); if (rects.Length == 0) throw new ArgumentException(null, nameof(rects)); @@ -546,10 +495,8 @@ public void AddRectangle(Rectangle rect) rect.X, rect.Y, rect.Width, rect.Height)); } - public unsafe void AddRectangles(Rectangle[] rects) + public unsafe void AddRectangles(Rectangle[] rects!!) { - if (rects == null) - throw new ArgumentNullException(nameof(rects)); if (rects.Length == 0) throw new ArgumentException(null, nameof(rects)); @@ -600,11 +547,8 @@ public void AddPie(int x, int y, int width, int height, float startAngle, float sweepAngle)); } - public unsafe void AddPolygon(PointF[] points) + public unsafe void AddPolygon(PointF[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathPolygon(new HandleRef(this, _nativePath), p, points.Length)); @@ -614,22 +558,16 @@ public unsafe void AddPolygon(PointF[] points) /// /// Adds a polygon to the current figure. /// - public unsafe void AddPolygon(Point[] points) + public unsafe void AddPolygon(Point[] points!!) { - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { Gdip.CheckStatus(Gdip.GdipAddPathPolygonI(new HandleRef(this, _nativePath), p, points.Length)); } } - public void AddPath(GraphicsPath addingPath, bool connect) + public void AddPath(GraphicsPath addingPath!!, bool connect) { - if (addingPath == null) - throw new ArgumentNullException(nameof(addingPath)); - Gdip.CheckStatus(Gdip.GdipAddPathPath( new HandleRef(this, _nativePath), new HandleRef(addingPath, addingPath._nativePath), connect)); } @@ -644,11 +582,8 @@ public void AddString(string s, FontFamily family, int style, float emSize, Poin AddString(s, family, style, emSize, new Rectangle(origin.X, origin.Y, 0, 0), format); } - public void AddString(string s, FontFamily family, int style, float emSize, RectangleF layoutRect, StringFormat? format) + public void AddString(string s, FontFamily family!!, int style, float emSize, RectangleF layoutRect, StringFormat? format) { - if (family == null) - throw new ArgumentNullException(nameof(family)); - Gdip.CheckStatus(Gdip.GdipAddPathString( new HandleRef(this, _nativePath), s, @@ -660,11 +595,8 @@ public void AddString(string s, FontFamily family, int style, float emSize, Rect new HandleRef(format, format?.nativeFormat ?? IntPtr.Zero))); } - public void AddString(string s, FontFamily family, int style, float emSize, Rectangle layoutRect, StringFormat? format) + public void AddString(string s, FontFamily family!!, int style, float emSize, Rectangle layoutRect, StringFormat? format) { - if (family == null) - throw new ArgumentNullException(nameof(family)); - Gdip.CheckStatus(Gdip.GdipAddPathStringI( new HandleRef(this, _nativePath), s, @@ -676,10 +608,8 @@ public void AddString(string s, FontFamily family, int style, float emSize, Rect new HandleRef(format, format?.nativeFormat ?? IntPtr.Zero))); } - public void Transform(Matrix matrix) + public void Transform(Matrix matrix!!) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); if (matrix.NativeMatrix == IntPtr.Zero) return; @@ -719,11 +649,8 @@ public void Flatten(Matrix? matrix, float flatness) public void Widen(Pen pen, Matrix? matrix) => Widen(pen, matrix, Flatness); - public void Widen(Pen pen, Matrix? matrix, float flatness) + public void Widen(Pen pen!!, Matrix? matrix, float flatness) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - // GDI+ wrongly returns an out of memory status when there is nothing in the path, so we have to check // before calling the widen method and do nothing if we dont have anything in the path. if (PointCount == 0) @@ -745,11 +672,8 @@ public void Warp(PointF[] destPoints, RectangleF srcRect, Matrix? matrix, WarpMo Warp(destPoints, srcRect, matrix, warpMode, 0.25f); } - public unsafe void Warp(PointF[] destPoints, RectangleF srcRect, Matrix? matrix, WarpMode warpMode, float flatness) + public unsafe void Warp(PointF[] destPoints!!, RectangleF srcRect, Matrix? matrix, WarpMode warpMode, float flatness) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - fixed (PointF* p = destPoints) { Gdip.CheckStatus(Gdip.GdipWarpPath( diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/LinearGradientBrush.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/LinearGradientBrush.cs index a01a61e01843e5..56afa27cee56dc 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/LinearGradientBrush.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/LinearGradientBrush.cs @@ -476,11 +476,8 @@ public void ResetTransform() public void MultiplyTransform(Matrix matrix) => MultiplyTransform(matrix, MatrixOrder.Prepend); - public void MultiplyTransform(Matrix matrix, MatrixOrder order) + public void MultiplyTransform(Matrix matrix!!, MatrixOrder order) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); - // Multiplying the transform by a disposed matrix is a nop in GDI+, but throws // with the libgdiplus backend. Simulate a nop for compatability with GDI+. if (matrix.NativeMatrix == IntPtr.Zero) diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/Matrix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/Matrix.cs index a0ed155d9767a0..d418b7a7d30554 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/Matrix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/Matrix.cs @@ -52,10 +52,8 @@ internal static IntPtr CreateNativeHandle(Matrix3x2 matrix) return nativeMatrix; } - public unsafe Matrix(RectangleF rect, PointF[] plgpts) + public unsafe Matrix(RectangleF rect, PointF[] plgpts!!) { - if (plgpts == null) - throw new ArgumentNullException(nameof(plgpts)); if (plgpts.Length != 3) throw Gdip.StatusException(Gdip.InvalidParameter); @@ -66,10 +64,8 @@ public unsafe Matrix(RectangleF rect, PointF[] plgpts) } } - public unsafe Matrix(Rectangle rect, Point[] plgpts) + public unsafe Matrix(Rectangle rect, Point[] plgpts!!) { - if (plgpts == null) - throw new ArgumentNullException(nameof(plgpts)); if (plgpts.Length != 3) throw Gdip.StatusException(Gdip.InvalidParameter); @@ -174,10 +170,8 @@ public void Reset() public void Multiply(Matrix matrix) => Multiply(matrix, MatrixOrder.Prepend); - public void Multiply(Matrix matrix, MatrixOrder order) + public void Multiply(Matrix matrix!!, MatrixOrder order) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); if (matrix.NativeMatrix == NativeMatrix) throw new InvalidOperationException(SR.GdiplusObjectBusy); @@ -246,11 +240,8 @@ public void Invert() Gdip.CheckStatus(Gdip.GdipInvertMatrix(new HandleRef(this, NativeMatrix))); } - public unsafe void TransformPoints(PointF[] pts) + public unsafe void TransformPoints(PointF[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (PointF* p = pts) { Gdip.CheckStatus(Gdip.GdipTransformMatrixPoints( @@ -260,11 +251,8 @@ public unsafe void TransformPoints(PointF[] pts) } } - public unsafe void TransformPoints(Point[] pts) + public unsafe void TransformPoints(Point[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (Point* p = pts) { Gdip.CheckStatus(Gdip.GdipTransformMatrixPointsI( @@ -274,11 +262,8 @@ public unsafe void TransformPoints(Point[] pts) } } - public unsafe void TransformVectors(PointF[] pts) + public unsafe void TransformVectors(PointF[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (PointF* p = pts) { Gdip.CheckStatus(Gdip.GdipVectorTransformMatrixPoints( @@ -290,11 +275,8 @@ public unsafe void TransformVectors(PointF[] pts) public void VectorTransformPoints(Point[] pts) => TransformVectors(pts); - public unsafe void TransformVectors(Point[] pts) + public unsafe void TransformVectors(Point[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (Point* p = pts) { Gdip.CheckStatus(Gdip.GdipVectorTransformMatrixPointsI( diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/PathGradientBrush.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/PathGradientBrush.cs index cfbef11ee09a13..d05f2585e08f72 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/PathGradientBrush.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Drawing2D/PathGradientBrush.cs @@ -13,10 +13,8 @@ public sealed class PathGradientBrush : Brush { public PathGradientBrush(PointF[] points) : this(points, WrapMode.Clamp) { } - public unsafe PathGradientBrush(PointF[] points, WrapMode wrapMode) + public unsafe PathGradientBrush(PointF[] points!!, WrapMode wrapMode) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (wrapMode < WrapMode.Tile || wrapMode > WrapMode.Clamp) throw new InvalidEnumArgumentException(nameof(wrapMode), unchecked((int)wrapMode), typeof(WrapMode)); @@ -37,10 +35,8 @@ public unsafe PathGradientBrush(PointF[] points, WrapMode wrapMode) public PathGradientBrush(Point[] points) : this(points, WrapMode.Clamp) { } - public unsafe PathGradientBrush(Point[] points, WrapMode wrapMode) + public unsafe PathGradientBrush(Point[] points!!, WrapMode wrapMode) { - if (points == null) - throw new ArgumentNullException(nameof(points)); if (wrapMode < WrapMode.Tile || wrapMode > WrapMode.Clamp) throw new InvalidEnumArgumentException(nameof(wrapMode), unchecked((int)wrapMode), typeof(WrapMode)); @@ -59,11 +55,8 @@ public unsafe PathGradientBrush(Point[] points, WrapMode wrapMode) } } - public PathGradientBrush(GraphicsPath path) + public PathGradientBrush(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCreatePathGradientFromPath(new HandleRef(path, path._nativePath), out IntPtr nativeBrush)); SetNativeBrushInternal(nativeBrush); } @@ -338,10 +331,8 @@ public void ResetTransform() public void MultiplyTransform(Matrix matrix) => MultiplyTransform(matrix, MatrixOrder.Prepend); - public void MultiplyTransform(Matrix matrix, MatrixOrder order) + public void MultiplyTransform(Matrix matrix!!, MatrixOrder order) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); // Multiplying the transform by a disposed matrix is a nop in GDI+, but throws // with the libgdiplus backend. Simulate a nop for compatability with GDI+. diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Unix.cs index 9721c7ff5681f7..c30f21eeb4bcb7 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Unix.cs @@ -262,12 +262,9 @@ public Font(FontFamily family, float emSize, FontStyle style, GraphicsUnit unit, { } - public Font(FontFamily family, float emSize, FontStyle style, + public Font(FontFamily family!!, float emSize, FontStyle style, GraphicsUnit unit, byte gdiCharSet, bool gdiVerticalFont) { - if (family == null) - throw new ArgumentNullException(nameof(family)); - int status; Initialize(family, emSize, style, unit, gdiCharSet, gdiVerticalFont); status = Gdip.GdipCreateFont(new HandleRef(this, family.NativeFamily), emSize, style, unit, out _nativeFont); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Windows.cs index 46bca48be4c06c..a932a9c17543f4 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.Windows.cs @@ -185,13 +185,8 @@ private void Initialize(string familyName, float emSize, FontStyle style, Graphi /// /// Initializes this object's fields. /// - private void Initialize(FontFamily family, float emSize, FontStyle style, GraphicsUnit unit, byte gdiCharSet, bool gdiVerticalFont) + private void Initialize(FontFamily family!!, float emSize, FontStyle style, GraphicsUnit unit, byte gdiCharSet, bool gdiVerticalFont) { - if (family == null) - { - throw new ArgumentNullException(nameof(family)); - } - if (float.IsNaN(emSize) || float.IsInfinity(emSize) || emSize <= 0) { throw new ArgumentException(SR.Format(SR.InvalidBoundArgument, nameof(emSize), emSize, 0, "System.Single.MaxValue"), nameof(emSize)); @@ -286,13 +281,8 @@ internal static Font FromLogFontInternal(ref Interop.User32.LOGFONT logFont, Int /// A boxed LOGFONT. /// Handle to a device context (HDC). /// The newly created . - public static unsafe Font FromLogFont(object lf, IntPtr hdc) + public static unsafe Font FromLogFont(object lf!!, IntPtr hdc) { - if (lf == null) - { - throw new ArgumentNullException(nameof(lf)); - } - if (lf is Interop.User32.LOGFONT logFont) { // A boxed LOGFONT, just use it to create the font diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.cs index 0a738e0e3e8649..3968ee5f63a6fe 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Font.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Font.cs @@ -199,13 +199,8 @@ private void Dispose(bool disposing) /// /// Returns the height of this Font in the specified graphics context. /// - public float GetHeight(Graphics graphics) + public float GetHeight(Graphics graphics!!) { - if (graphics == null) - { - throw new ArgumentNullException(nameof(graphics)); - } - float height; int status = Gdip.GdipGetFontHeight(new HandleRef(this, NativeFont), new HandleRef(graphics, graphics.NativeGraphics), out height); Gdip.CheckStatus(status); @@ -266,13 +261,8 @@ public override string ToString() => // This is used by SystemFonts when constructing a system Font objects. internal void SetSystemFontName(string systemFontName) => _systemFontName = systemFontName; - public unsafe void ToLogFont(object logFont, Graphics graphics) + public unsafe void ToLogFont(object logFont!!, Graphics graphics) { - if (logFont == null) - { - throw new ArgumentNullException(nameof(logFont)); - } - Type type = logFont.GetType(); int nativeSize = sizeof(Interop.User32.LOGFONT); if (Marshal.SizeOf(type) != nativeSize) @@ -297,13 +287,8 @@ public unsafe void ToLogFont(object logFont, Graphics graphics) } } - private unsafe Interop.User32.LOGFONT ToLogFontInternal(Graphics graphics) + private unsafe Interop.User32.LOGFONT ToLogFontInternal(Graphics graphics!!) { - if (graphics == null) - { - throw new ArgumentNullException(nameof(graphics)); - } - Interop.User32.LOGFONT logFont = default; Gdip.CheckStatus(Gdip.GdipGetLogFontW( new HandleRef(this, NativeFont), new HandleRef(graphics, graphics.NativeGraphics), ref logFont)); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/FontConverter.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/FontConverter.cs index 41a39db24d23d6..07673d93d8bcdb 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/FontConverter.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/FontConverter.cs @@ -270,13 +270,8 @@ private GraphicsUnit ParseGraphicsUnits(string units) => _ => throw new ArgumentException(SR.Format(SR.InvalidArgumentValueFontConverter, units), nameof(units)), }; - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? value; byte charSet = 1; float size = 8; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/FontFamily.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/FontFamily.cs index bfd28aeeb6e277..666f19a60461c8 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/FontFamily.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/FontFamily.cs @@ -226,13 +226,8 @@ private static IntPtr GetGdipGenericSansSerif() /// graphics context. /// [Obsolete("FontFamily.GetFamilies has been deprecated. Use Families instead.")] - public static FontFamily[] GetFamilies(Graphics graphics) + public static FontFamily[] GetFamilies(Graphics graphics!!) { - if (graphics == null) - { - throw new ArgumentNullException(nameof(graphics)); - } - return new InstalledFontCollection().Families; } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs index 512dd06f3bfb02..743a41ad51790c 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs @@ -26,11 +26,9 @@ static Gdip() PlatformInitialize(); - StartupInput input = StartupInput.GetDefault(); - // GDI+ ref counts multiple calls to Startup in the same process, so calls from multiple // domains are ok, just make sure to pair each w/GdiplusShutdown - int status = GdiplusStartup(out s_initToken, ref input, out _); + int status = GdiplusStartup(out s_initToken, StartupInputEx.GetDefault(), out _); CheckStatus(status); } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs index cb74840b78e7b0..3cd50a6818683b 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs @@ -9,6 +9,9 @@ using System.IO; using System.Reflection; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif namespace System.Drawing { @@ -66,13 +69,8 @@ private static void PlatformInitialize() } // Imported functions - -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs - [DllImport(LibraryName)] - internal static extern int GdiplusStartup(out IntPtr token, ref StartupInput input, out StartupOutput output); -#pragma warning restore DLLIMPORTGENANALYZER015 + [GeneratedDllImport(LibraryName)] + internal static partial int GdiplusStartup(out IntPtr token, in StartupInputEx input, out StartupOutput output); [GeneratedDllImport(LibraryName)] internal static partial void GdiplusShutdown(ref ulong token); @@ -83,20 +81,36 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial void GdipFree(IntPtr ptr); - [DllImport(LibraryName)] - internal static extern int GdipDeleteBrush(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteBrush( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetBrushType(IntPtr brush, out BrushType type); - [DllImport(LibraryName)] - internal static extern int GdipDeleteGraphics(HandleRef graphics); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteGraphics( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics); [GeneratedDllImport(LibraryName)] internal static partial int GdipRestoreGraphics(IntPtr graphics, uint graphicsState); - [DllImport(LibraryName)] - internal static extern int GdipReleaseDC(HandleRef graphics, HandleRef hdc); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipReleaseDC( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef hdc); [GeneratedDllImport(LibraryName)] internal static partial int GdipFillPath(IntPtr graphics, IntPtr brush, IntPtr path); @@ -104,14 +118,11 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipGetNearestColor(IntPtr graphics, out int argb); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipAddPathString(IntPtr path, string s, int lenght, IntPtr family, int style, float emSize, ref RectangleF layoutRect, IntPtr format); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipAddPathString(IntPtr path, string s, int lenght, IntPtr family, int style, float emSize, ref RectangleF layoutRect, IntPtr format); - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipAddPathStringI(IntPtr path, string s, int lenght, IntPtr family, int style, float emSize, ref Rectangle layoutRect, IntPtr format); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipAddPathStringI(IntPtr path, string s, int lenght, IntPtr family, int style, float emSize, ref Rectangle layoutRect, IntPtr format); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFromHWND(IntPtr hwnd, out IntPtr graphics); @@ -128,20 +139,14 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipSetImagePalette(IntPtr image, IntPtr palette); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipGetImageBounds(IntPtr image, out RectangleF source, ref GraphicsUnit unit); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageBounds(IntPtr image, out RectangleF source, ref GraphicsUnit unit); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetImageThumbnail(IntPtr image, uint width, uint height, out IntPtr thumbImage, IntPtr callback, IntPtr callBackData); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in CoreLib (like Guid). - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipSaveImageToFile(IntPtr image, string filename, ref Guid encoderClsID, IntPtr encoderParameters); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipSaveImageToFile(IntPtr image, string filename, ref Guid encoderClsID, IntPtr encoderParameters); [GeneratedDllImport(LibraryName)] internal static partial int GdipSaveAdd(IntPtr image, IntPtr encoderParameters); @@ -155,20 +160,21 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePath(FillMode brushMode, out IntPtr path); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipCreatePath2(PointF[] points, byte[] types, int count, FillMode brushMode, out IntPtr path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreatePath2(PointF[] points, byte[] types, int count, FillMode brushMode, out IntPtr path); - [DllImport(LibraryName)] - internal static extern int GdipCreatePath2I(Point[] points, byte[] types, int count, FillMode brushMode, out IntPtr path); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreatePath2I(Point[] points, byte[] types, int count, FillMode brushMode, out IntPtr path); [GeneratedDllImport(LibraryName)] internal static partial int GdipClonePath(IntPtr path, out IntPtr clonePath); - [DllImport(LibraryName)] - internal static extern int GdipDeletePath(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeletePath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); [GeneratedDllImport(LibraryName)] internal static partial int GdipResetPath(IntPtr path); @@ -179,14 +185,11 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipGetPathTypes(IntPtr path, byte[] types, int count); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipGetPathPoints(IntPtr path, [Out] PointF[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathPoints(IntPtr path, PointF[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathPointsI(IntPtr path, [Out] Point[] points, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathPointsI(IntPtr path, Point[] points, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetPathFillMode(IntPtr path, out FillMode fillMode); @@ -212,23 +215,17 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipReversePath(IntPtr path); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipGetPathLastPoint(IntPtr path, out PointF lastPoint); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathLastPoint(IntPtr path, out PointF lastPoint); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathLine(IntPtr path, float x1, float y1, float x2, float y2); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathLine2(IntPtr path, PointF[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLine2(IntPtr path, PointF[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathLine2I(IntPtr path, Point[] points, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLine2I(IntPtr path, Point[] points, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathArc(IntPtr path, float x, float y, float width, float height, float startAngle, float sweepAngle); @@ -236,50 +233,44 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathBezier(IntPtr path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathBeziers(IntPtr path, PointF[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBeziers(IntPtr path, PointF[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve(IntPtr path, PointF[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve(IntPtr path, PointF[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurveI(IntPtr path, Point[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurveI(IntPtr path, Point[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve2(IntPtr path, PointF[] points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve2(IntPtr path, PointF[] points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve2I(IntPtr path, Point[] points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve2I(IntPtr path, Point[] points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve3(IntPtr path, PointF[] points, int count, int offset, int numberOfSegments, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve3(IntPtr path, PointF[] points, int count, int offset, int numberOfSegments, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve3I(IntPtr path, Point[] points, int count, int offset, int numberOfSegments, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve3I(IntPtr path, Point[] points, int count, int offset, int numberOfSegments, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve(IntPtr path, PointF[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve(IntPtr path, PointF[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurveI(IntPtr path, Point[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurveI(IntPtr path, Point[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve2(IntPtr path, PointF[] points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve2(IntPtr path, PointF[] points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve2I(IntPtr path, Point[] points, int count, float tension); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve2I(IntPtr path, Point[] points, int count, float tension); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathRectangle(IntPtr path, float x, float y, float width, float height); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectangles(IntPtr path, RectangleF[] rects, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectangles(IntPtr path, RectangleF[] rects, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathEllipse(IntPtr path, float x, float y, float width, float height); @@ -293,11 +284,8 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathPieI(IntPtr path, int x, int y, int width, int height, float startAngle, float sweepAngle); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathPolygon(IntPtr path, PointF[] points, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPolygon(IntPtr path, PointF[] points, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathPath(IntPtr path, IntPtr addingPath, bool connect); @@ -311,23 +299,17 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathBezierI(IntPtr path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathBeziersI(IntPtr path, Point[] points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBeziersI(IntPtr path, Point[] points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPolygonI(IntPtr path, Point[] points, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPolygonI(IntPtr path, Point[] points, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipAddPathRectangleI(IntPtr path, int x, int y, int width, int height); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectanglesI(IntPtr path, Rectangle[] rects, int count); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectanglesI(IntPtr path, Rectangle[] rects, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipFlattenPath(IntPtr path, IntPtr matrix, float floatness); @@ -335,23 +317,17 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipTransformPath(IntPtr path, IntPtr matrix); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipWarpPath(IntPtr path, IntPtr matrix, PointF[] points, int count, float srcx, float srcy, float srcwidth, float srcheight, WarpMode mode, float flatness); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipWarpPath(IntPtr path, IntPtr matrix, PointF[] points, int count, float srcx, float srcy, float srcwidth, float srcheight, WarpMode mode, float flatness); [GeneratedDllImport(LibraryName)] internal static partial int GdipWidenPath(IntPtr path, IntPtr pen, IntPtr matrix, float flatness); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipGetPathWorldBounds(IntPtr path, out RectangleF bounds, IntPtr matrix, IntPtr pen); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathWorldBounds(IntPtr path, out RectangleF bounds, IntPtr matrix, IntPtr pen); - [DllImport(LibraryName)] - internal static extern int GdipGetPathWorldBoundsI(IntPtr path, out Rectangle bounds, IntPtr matrix, IntPtr pen); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathWorldBoundsI(IntPtr path, out Rectangle bounds, IntPtr matrix, IntPtr pen); [GeneratedDllImport(LibraryName)] internal static partial int GdipIsVisiblePathPoint(IntPtr path, float x, float y, IntPtr graphics, out bool result); @@ -395,11 +371,8 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFromContext_macosx(IntPtr cgref, int width, int height, out IntPtr graphics); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipSetVisibleClip_linux(IntPtr graphics, ref Rectangle rect); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetVisibleClip_linux(IntPtr graphics, ref Rectangle rect); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFromXDrawable_linux(IntPtr drawable, IntPtr display, out IntPtr graphics); @@ -410,13 +383,10 @@ internal static partial int GdipLoadImageFromDelegate_linux(StreamGetHeaderDeleg StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, out IntPtr image); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in CoreLib (like Guid). - [DllImport(LibraryName)] - internal static extern int GdipSaveImageToDelegate_linux(IntPtr image, StreamGetBytesDelegate getBytes, + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSaveImageToDelegate_linux(IntPtr image, StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, ref Guid encoderClsID, IntPtr encoderParameters); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateMetafileFromDelegate_linux(StreamGetHeaderDelegate getHeader, @@ -428,20 +398,17 @@ internal static partial int GdipGetMetafileHeaderFromDelegate_linux(StreamGetHea StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, IntPtr header); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafileFromDelegate_linux(StreamGetHeaderDelegate getHeader, + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafileFromDelegate_linux(StreamGetHeaderDelegate getHeader, StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, IntPtr hdc, EmfType type, ref RectangleF frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafileFromDelegateI_linux(StreamGetHeaderDelegate getHeader, + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafileFromDelegateI_linux(StreamGetHeaderDelegate getHeader, StreamGetBytesDelegate getBytes, StreamPutBytesDelegate putBytes, StreamSeekDelegate doSeek, StreamCloseDelegate close, StreamSizeDelegate size, IntPtr hdc, EmfType type, ref Rectangle frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time [GeneratedDllImport(LibraryName)] internal static partial int GdipGetPostScriptGraphicsContext( diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Windows.cs index 129416828600aa..2e246f79ec7d07 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Windows.cs @@ -5,6 +5,9 @@ using System.Drawing.Imaging; using System.Drawing.Internal; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif namespace System.Drawing { @@ -19,12 +22,8 @@ private static void PlatformInitialize() } // Imported functions - -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(LibraryName)] - private static extern int GdiplusStartup(out IntPtr token, ref StartupInput input, out StartupOutput output); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + private static partial int GdiplusStartup(out IntPtr token, in StartupInputEx input, out StartupOutput output); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePath(int brushMode, out IntPtr path); @@ -35,182 +34,490 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePath2I(Point* points, byte* types, int count, int brushMode, out IntPtr path); - [DllImport(LibraryName)] - internal static extern int GdipClonePath(HandleRef path, out IntPtr clonepath); - - [DllImport(LibraryName)] - internal static extern int GdipDeletePath(HandleRef path); - - [DllImport(LibraryName)] - internal static extern int GdipResetPath(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipClonePath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out IntPtr clonepath); - [DllImport(LibraryName)] - internal static extern int GdipGetPointCount(HandleRef path, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeletePath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipGetPathTypes(HandleRef path, byte[] types, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipGetPathPoints(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPointCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathFillMode(HandleRef path, out FillMode fillmode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathTypes( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, byte[] types, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPathFillMode(HandleRef path, FillMode fillmode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathData(HandleRef path, GpPathData* pathData); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathFillMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out FillMode fillmode); - [DllImport(LibraryName)] - internal static extern int GdipStartPathFigure(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathFillMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, FillMode fillmode); - [DllImport(LibraryName)] - internal static extern int GdipClosePathFigure(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathData( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, GpPathData* pathData); - [DllImport(LibraryName)] - internal static extern int GdipClosePathFigures(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipStartPathFigure( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipSetPathMarker(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipClosePathFigure( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipClearPathMarkers(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipClosePathFigures( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipReversePath(HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathMarker( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipGetPathLastPoint(HandleRef path, out PointF lastPoint); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipClearPathMarkers( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipAddPathLine(HandleRef path, float x1, float y1, float x2, float y2); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipReversePath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipAddPathLine2(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathLastPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out PointF lastPoint); - [DllImport(LibraryName)] - internal static extern int GdipAddPathArc(HandleRef path, float x, float y, float width, float height, float startAngle, float sweepAngle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLine( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x1, float y1, float x2, float y2); - [DllImport(LibraryName)] - internal static extern int GdipAddPathBezier(HandleRef path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLine2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathBeziers(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathArc( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, float width, float height, float startAngle, float sweepAngle); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBezier( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve2(HandleRef path, PointF* points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBeziers( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve3(HandleRef path, PointF* points, int count, int offset, int numberOfSegments, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve2(HandleRef path, PointF* points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve3( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count, int offset, int numberOfSegments, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectangle(HandleRef path, float x, float y, float width, float height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectangles(HandleRef path, RectangleF* rects, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathEllipse(HandleRef path, float x, float y, float width, float height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectangle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, float width, float height); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPie(HandleRef path, float x, float y, float width, float height, float startAngle, float sweepAngle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectangles( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, RectangleF* rects, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPolygon(HandleRef path, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathEllipse( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, float width, float height); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPath(HandleRef path, HandleRef addingPath, bool connect); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPie( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, float width, float height, float startAngle, float sweepAngle); - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipAddPathString(HandleRef path, string s, int length, HandleRef fontFamily, int style, float emSize, ref RectangleF layoutRect, HandleRef format); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPolygon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, PointF* points, int count); - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipAddPathStringI(HandleRef path, string s, int length, HandleRef fontFamily, int style, float emSize, ref Rectangle layoutRect, HandleRef format); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef addingPath, bool connect); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipAddPathString( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, string s, int length, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontFamily, int style, float emSize, ref RectangleF layoutRect, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipAddPathStringI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, string s, int length, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontFamily, int style, float emSize, ref Rectangle layoutRect, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format); - [DllImport(LibraryName)] - internal static extern int GdipAddPathLineI(HandleRef path, int x1, int y1, int x2, int y2); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLineI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x1, int y1, int x2, int y2); - [DllImport(LibraryName)] - internal static extern int GdipAddPathLine2I(HandleRef path, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathLine2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathArcI(HandleRef path, int x, int y, int width, int height, float startAngle, float sweepAngle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathArcI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, int width, int height, float startAngle, float sweepAngle); - [DllImport(LibraryName)] - internal static extern int GdipAddPathBezierI(HandleRef path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBezierI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); - [DllImport(LibraryName)] - internal static extern int GdipAddPathBeziersI(HandleRef path, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathBeziersI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurveI(HandleRef path, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurveI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve2I(HandleRef path, Point* points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathCurve3I(HandleRef path, Point* points, int count, int offset, int numberOfSegments, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathCurve3I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count, int offset, int numberOfSegments, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurveI(HandleRef path, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurveI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathClosedCurve2I(HandleRef path, Point* points, int count, float tension); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathClosedCurve2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count, float tension); - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectangleI(HandleRef path, int x, int y, int width, int height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectangleI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, int width, int height); - [DllImport(LibraryName)] - internal static extern int GdipAddPathRectanglesI(HandleRef path, Rectangle* rects, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathRectanglesI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Rectangle* rects, int count); - [DllImport(LibraryName)] - internal static extern int GdipAddPathEllipseI(HandleRef path, int x, int y, int width, int height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathEllipseI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, int width, int height); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPieI(HandleRef path, int x, int y, int width, int height, float startAngle, float sweepAngle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPieI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, int width, int height, float startAngle, float sweepAngle); - [DllImport(LibraryName)] - internal static extern int GdipAddPathPolygonI(HandleRef path, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipAddPathPolygonI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, Point* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipFlattenPath(HandleRef path, HandleRef matrixfloat, float flatness); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipFlattenPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrixfloat, float flatness); - [DllImport(LibraryName)] - internal static extern int GdipWidenPath(HandleRef path, HandleRef pen, HandleRef matrix, float flatness); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipWidenPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float flatness); - [DllImport(LibraryName)] - internal static extern int GdipWarpPath(HandleRef path, HandleRef matrix, PointF* points, int count, float srcX, float srcY, float srcWidth, float srcHeight, WarpMode warpMode, float flatness); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipWarpPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, PointF* points, int count, float srcX, float srcY, float srcWidth, float srcHeight, WarpMode warpMode, float flatness); - [DllImport(LibraryName)] - internal static extern int GdipTransformPath(HandleRef path, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetPathWorldBounds(HandleRef path, out RectangleF gprectf, HandleRef matrix, HandleRef pen); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathWorldBounds( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out RectangleF gprectf, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen); - [DllImport(LibraryName)] - internal static extern int GdipIsVisiblePathPoint(HandleRef path, float x, float y, HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisiblePathPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsVisiblePathPointI(HandleRef path, int x, int y, HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisiblePathPointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsOutlineVisiblePathPoint(HandleRef path, float x, float y, HandleRef pen, HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsOutlineVisiblePathPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, float x, float y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsOutlineVisiblePathPointI(HandleRef path, int x, int y, HandleRef pen, HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsOutlineVisiblePathPointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, int x, int y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipDeleteBrush(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteBrush( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); [GeneratedDllImport(LibraryName)] internal static partial int GdipLoadImageFromStream(IntPtr stream, IntPtr* image); @@ -218,38 +525,102 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipLoadImageFromStreamICM(IntPtr stream, IntPtr* image); - [DllImport(LibraryName)] - internal static extern int GdipCloneImage(HandleRef image, out IntPtr cloneimage); - - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipSaveImageToFile(HandleRef image, string filename, ref Guid classId, HandleRef encoderParams); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out IntPtr cloneimage); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipSaveImageToFile( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, string filename, ref Guid classId, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef encoderParams); - [DllImport(LibraryName)] - internal static extern int GdipSaveImageToStream(HandleRef image, IntPtr stream, Guid* classId, HandleRef encoderParams); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSaveImageToStream( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, IntPtr stream, Guid* classId, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef encoderParams); - [DllImport(LibraryName)] - internal static extern int GdipSaveAdd(HandleRef image, HandleRef encoderParams); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSaveAdd( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef encoderParams); - [DllImport(LibraryName)] - internal static extern int GdipSaveAddImage(HandleRef image, HandleRef newImage, HandleRef encoderParams); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSaveAddImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef newImage, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef encoderParams); - [DllImport(LibraryName)] - internal static extern int GdipGetImageGraphicsContext(HandleRef image, out IntPtr graphics); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageGraphicsContext( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out IntPtr graphics); - [DllImport(LibraryName)] - internal static extern int GdipGetImageBounds(HandleRef image, out RectangleF gprectf, out GraphicsUnit unit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageBounds( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out RectangleF gprectf, out GraphicsUnit unit); - [DllImport(LibraryName)] - internal static extern int GdipGetImageThumbnail(HandleRef image, int thumbWidth, int thumbHeight, out IntPtr thumbImage, Image.GetThumbnailImageAbort? callback, IntPtr callbackdata); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageThumbnail( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int thumbWidth, int thumbHeight, out IntPtr thumbImage, Image.GetThumbnailImageAbort? callback, IntPtr callbackdata); - [DllImport(LibraryName)] - internal static extern int GdipGetImagePalette(HandleRef image, IntPtr palette, int size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImagePalette( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, IntPtr palette, int size); - [DllImport(LibraryName)] - internal static extern int GdipSetImagePalette(HandleRef image, IntPtr palette); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImagePalette( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, IntPtr palette); - [DllImport(LibraryName)] - internal static extern int GdipGetImagePaletteSize(HandleRef image, out int size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImagePaletteSize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int size); [GeneratedDllImport(LibraryName)] internal static partial int GdipImageForceValidation(IntPtr image); @@ -260,74 +631,284 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFromHWND(IntPtr hwnd, out IntPtr graphics); - [DllImport(LibraryName)] - internal static extern int GdipDeleteGraphics(HandleRef graphics); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteGraphics( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics); - [DllImport(LibraryName)] - internal static extern int GdipReleaseDC(HandleRef graphics, IntPtr hdc); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipReleaseDC( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, IntPtr hdc); - [DllImport(LibraryName)] - internal static extern int GdipGetNearestColor(HandleRef graphics, ref int color); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetNearestColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, ref int color); [GeneratedDllImport(LibraryName)] internal static partial IntPtr GdipCreateHalftonePalette(); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawBeziers(HandleRef graphics, HandleRef pen, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawBeziersI(HandleRef graphics, HandleRef pen, Point* points, int count); + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawBeziers( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawBeziersI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillPath(HandleRef graphics, HandleRef brush, HandleRef path); - - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestPoint(HandleRef graphics, HandleRef metafile, ref PointF destPoint, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); - - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestPointI(HandleRef graphics, HandleRef metafile, ref Point destPoint, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref PointF destPoint, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestRect(HandleRef graphics, HandleRef metafile, ref RectangleF destRect, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestPointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref Point destPoint, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestRectI(HandleRef graphics, HandleRef metafile, ref Rectangle destRect, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref RectangleF destRect, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestPoints(HandleRef graphics, HandleRef metafile, PointF* destPoints, int count, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref Rectangle destRect, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileDestPointsI(HandleRef graphics, HandleRef metafile, Point* destPoints, int count, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, PointF* destPoints, int count, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestPoint(HandleRef graphics, HandleRef metafile, ref PointF destPoint, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileDestPointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, Point* destPoints, int count, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestPointI(HandleRef graphics, HandleRef metafile, ref Point destPoint, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref PointF destPoint, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestRect(HandleRef graphics, HandleRef metafile, ref RectangleF destRect, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestPointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref Point destPoint, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestRectI(HandleRef graphics, HandleRef metafile, ref Rectangle destRect, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref RectangleF destRect, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestPoints(HandleRef graphics, HandleRef metafile, PointF* destPoints, int count, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, ref Rectangle destRect, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipEnumerateMetafileSrcRectDestPointsI(HandleRef graphics, HandleRef metafile, Point* destPoints, int count, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, HandleRef imageattributes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, PointF* destPoints, int count, ref RectangleF srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); - [DllImport(LibraryName)] - internal static extern int GdipRestoreGraphics(HandleRef graphics, int state); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEnumerateMetafileSrcRectDestPointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, Point* destPoints, int count, ref Rectangle srcRect, GraphicsUnit pageUnit, Graphics.EnumerateMetafileProc callback, IntPtr callbackdata, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattributes); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(LibraryName)] - internal static extern int GdipGetMetafileHeaderFromWmf(IntPtr hMetafile, WmfPlaceableFileHeader wmfplaceable, [In] [Out] MetafileHeaderWmf metafileHeaderWmf); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRestoreGraphics( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int state); + + [GeneratedDllImport(LibraryName, EntryPoint = "GdipGetMetafileHeaderFromWmf")] + private static partial int GdipGetMetafileHeaderFromWmf_Internal(IntPtr hMetafile, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(WmfPlaceableFileHeader.PinningMarshaller))] +#endif + WmfPlaceableFileHeader wmfplaceable, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(MetafileHeaderWmf.InPlaceMarshaller))] + ref MetafileHeaderWmf metafileHeaderWmf +#else + MetafileHeaderWmf metafileHeaderWmf +#endif + ); + + internal static int GdipGetMetafileHeaderFromWmf(IntPtr hMetafile, + WmfPlaceableFileHeader wmfplaceable, + MetafileHeaderWmf metafileHeaderWmf + ) + { + return GdipGetMetafileHeaderFromWmf_Internal(hMetafile, + wmfplaceable, +#if NET7_0_OR_GREATER + ref +#endif + metafileHeaderWmf + ); + } - [DllImport(LibraryName)] - internal static extern int GdipGetMetafileHeaderFromEmf(IntPtr hEnhMetafile, [In] [Out] MetafileHeaderEmf metafileHeaderEmf); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetMetafileHeaderFromEmf(IntPtr hEnhMetafile, MetafileHeaderEmf metafileHeaderEmf); [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipGetMetafileHeaderFromFile(string filename, IntPtr header); @@ -335,11 +916,19 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName)] internal static partial int GdipGetMetafileHeaderFromStream(IntPtr stream, IntPtr header); - [DllImport(LibraryName)] - internal static extern int GdipGetMetafileHeaderFromMetafile(HandleRef metafile, IntPtr header); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetMetafileHeaderFromMetafile( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, IntPtr header); - [DllImport(LibraryName)] - internal static extern int GdipGetHemfFromMetafile(HandleRef metafile, out IntPtr hEnhMetafile); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetHemfFromMetafile( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, out IntPtr hEnhMetafile); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateMetafileFromStream(IntPtr stream, IntPtr* metafile); @@ -353,8 +942,12 @@ private static void PlatformInitialize() [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipRecordMetafileStreamI(IntPtr stream, IntPtr referenceHdc, EmfType emfType, Rectangle* frameRect, MetafileFrameUnit frameUnit, string? description, IntPtr* metafile); - [DllImport(LibraryName)] - internal static extern int GdipComment(HandleRef graphics, int sizeData, byte[] data); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipComment( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int sizeData, byte[] data); [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipCreateFontFromLogfontW(IntPtr hdc, ref Interop.User32.LOGFONT lf, out IntPtr font); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.cs index 8fef9cbc472b25..8097957af5e9ce 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.cs @@ -5,6 +5,9 @@ using System.Drawing.Imaging; using System.Drawing.Text; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER +using System.Runtime.InteropServices.GeneratedMarshalling; +#endif namespace System.Drawing { @@ -15,230 +18,507 @@ internal static partial class SafeNativeMethods internal static unsafe partial class Gdip { // Shared function imports (all platforms) - [DllImport(LibraryName)] - internal static extern int GdipBeginContainer(HandleRef graphics, ref RectangleF dstRect, ref RectangleF srcRect, GraphicsUnit unit, out int state); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBeginContainer( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, ref RectangleF dstRect, ref RectangleF srcRect, GraphicsUnit unit, out int state); - [DllImport(LibraryName)] - internal static extern int GdipBeginContainer2(HandleRef graphics, out int state); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBeginContainer2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int state); - [DllImport(LibraryName)] - internal static extern int GdipBeginContainerI(HandleRef graphics, ref Rectangle dstRect, ref Rectangle srcRect, GraphicsUnit unit, out int state); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBeginContainerI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, ref Rectangle dstRect, ref Rectangle srcRect, GraphicsUnit unit, out int state); - [DllImport(LibraryName)] - internal static extern int GdipEndContainer(HandleRef graphics, int state); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipEndContainer( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int state); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateAdjustableArrowCap(float height, float width, bool isFilled, out IntPtr adjustableArrowCap); - [DllImport(LibraryName)] - internal static extern int GdipGetAdjustableArrowCapHeight(HandleRef adjustableArrowCap, out float height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetAdjustableArrowCapHeight( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, out float height); - [DllImport(LibraryName)] - internal static extern int GdipSetAdjustableArrowCapHeight(HandleRef adjustableArrowCap, float height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetAdjustableArrowCapHeight( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, float height); - [DllImport(LibraryName)] - internal static extern int GdipSetAdjustableArrowCapWidth(HandleRef adjustableArrowCap, float width); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetAdjustableArrowCapWidth( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, float width); - [DllImport(LibraryName)] - internal static extern int GdipGetAdjustableArrowCapWidth(HandleRef adjustableArrowCap, out float width); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetAdjustableArrowCapWidth( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, out float width); - [DllImport(LibraryName)] - internal static extern int GdipSetAdjustableArrowCapMiddleInset(HandleRef adjustableArrowCap, float middleInset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetAdjustableArrowCapMiddleInset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, float middleInset); - [DllImport(LibraryName)] - internal static extern int GdipGetAdjustableArrowCapMiddleInset(HandleRef adjustableArrowCap, out float middleInset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetAdjustableArrowCapMiddleInset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, out float middleInset); - [DllImport(LibraryName)] - internal static extern int GdipSetAdjustableArrowCapFillState(HandleRef adjustableArrowCap, bool fillState); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetAdjustableArrowCapFillState( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, bool fillState); - [DllImport(LibraryName)] - internal static extern int GdipGetAdjustableArrowCapFillState(HandleRef adjustableArrowCap, out bool fillState); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetAdjustableArrowCapFillState( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef adjustableArrowCap, out bool fillState); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetCustomLineCapType(IntPtr customCap, out CustomLineCapType capType); - [DllImport(LibraryName)] - internal static extern int GdipCreateCustomLineCap(HandleRef fillpath, HandleRef strokepath, LineCap baseCap, float baseInset, out IntPtr customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateCustomLineCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fillpath, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef strokepath, LineCap baseCap, float baseInset, out IntPtr customCap); [GeneratedDllImport(LibraryName)] internal static partial int GdipDeleteCustomLineCap(IntPtr customCap); - [DllImport(LibraryName)] - internal static extern int GdipDeleteCustomLineCap(HandleRef customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteCustomLineCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap); - [DllImport(LibraryName)] - internal static extern int GdipCloneCustomLineCap(HandleRef customCap, out IntPtr clonedCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneCustomLineCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out IntPtr clonedCap); - [DllImport(LibraryName)] - internal static extern int GdipSetCustomLineCapStrokeCaps(HandleRef customCap, LineCap startCap, LineCap endCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCustomLineCapStrokeCaps( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, LineCap startCap, LineCap endCap); - [DllImport(LibraryName)] - internal static extern int GdipGetCustomLineCapStrokeCaps(HandleRef customCap, out LineCap startCap, out LineCap endCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCustomLineCapStrokeCaps( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out LineCap startCap, out LineCap endCap); - [DllImport(LibraryName)] - internal static extern int GdipSetCustomLineCapStrokeJoin(HandleRef customCap, LineJoin lineJoin); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCustomLineCapStrokeJoin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, LineJoin lineJoin); - [DllImport(LibraryName)] - internal static extern int GdipGetCustomLineCapStrokeJoin(HandleRef customCap, out LineJoin lineJoin); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCustomLineCapStrokeJoin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out LineJoin lineJoin); - [DllImport(LibraryName)] - internal static extern int GdipSetCustomLineCapBaseCap(HandleRef customCap, LineCap baseCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCustomLineCapBaseCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, LineCap baseCap); - [DllImport(LibraryName)] - internal static extern int GdipGetCustomLineCapBaseCap(HandleRef customCap, out LineCap baseCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCustomLineCapBaseCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out LineCap baseCap); - [DllImport(LibraryName)] - internal static extern int GdipSetCustomLineCapBaseInset(HandleRef customCap, float inset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCustomLineCapBaseInset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, float inset); - [DllImport(LibraryName)] - internal static extern int GdipGetCustomLineCapBaseInset(HandleRef customCap, out float inset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCustomLineCapBaseInset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out float inset); - [DllImport(LibraryName)] - internal static extern int GdipSetCustomLineCapWidthScale(HandleRef customCap, float widthScale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCustomLineCapWidthScale( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, float widthScale); - [DllImport(LibraryName)] - internal static extern int GdipGetCustomLineCapWidthScale(HandleRef customCap, out float widthScale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCustomLineCapWidthScale( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap, out float widthScale); - [DllImport(LibraryName)] - internal static extern int GdipCreatePathIter(out IntPtr pathIter, HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreatePathIter(out IntPtr pathIter, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipDeletePathIter(HandleRef pathIter); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeletePathIter( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter); - [DllImport(LibraryName)] - internal static extern int GdipPathIterNextSubpath(HandleRef pathIter, out int resultCount, out int startIndex, out int endIndex, out bool isClosed); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterNextSubpath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, out int startIndex, out int endIndex, out bool isClosed); - [DllImport(LibraryName)] - internal static extern int GdipPathIterNextSubpathPath(HandleRef pathIter, out int resultCount, HandleRef path, out bool isClosed); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterNextSubpathPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out bool isClosed); - [DllImport(LibraryName)] - internal static extern int GdipPathIterNextPathType(HandleRef pathIter, out int resultCount, out byte pathType, out int startIndex, out int endIndex); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterNextPathType( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, out byte pathType, out int startIndex, out int endIndex); - [DllImport(LibraryName)] - internal static extern int GdipPathIterNextMarker(HandleRef pathIter, out int resultCount, out int startIndex, out int endIndex); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterNextMarker( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, out int startIndex, out int endIndex); - [DllImport(LibraryName)] - internal static extern int GdipPathIterNextMarkerPath(HandleRef pathIter, out int resultCount, HandleRef path); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterNextMarkerPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); - [DllImport(LibraryName)] - internal static extern int GdipPathIterGetCount(HandleRef pathIter, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterGetCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int count); - [DllImport(LibraryName)] - internal static extern int GdipPathIterGetSubpathCount(HandleRef pathIter, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterGetSubpathCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int count); - [DllImport(LibraryName)] - internal static extern int GdipPathIterHasCurve(HandleRef pathIter, out bool hasCurve); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterHasCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out bool hasCurve); - [DllImport(LibraryName)] - internal static extern int GdipPathIterRewind(HandleRef pathIter); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterRewind( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter); - [DllImport(LibraryName)] - internal static extern int GdipPathIterEnumerate(HandleRef pathIter, out int resultCount, PointF* points, byte* types, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterEnumerate( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, PointF* points, byte* types, int count); - [DllImport(LibraryName)] - internal static extern int GdipPathIterCopyData(HandleRef pathIter, out int resultCount, PointF* points, byte* types, int startIndex, int endIndex); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPathIterCopyData( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pathIter, out int resultCount, PointF* points, byte* types, int startIndex, int endIndex); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateHatchBrush(int hatchstyle, int forecol, int backcol, out IntPtr brush); - [DllImport(LibraryName)] - internal static extern int GdipGetHatchStyle(HandleRef brush, out int hatchstyle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetHatchStyle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int hatchstyle); - [DllImport(LibraryName)] - internal static extern int GdipGetHatchForegroundColor(HandleRef brush, out int forecol); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetHatchForegroundColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int forecol); - [DllImport(LibraryName)] - internal static extern int GdipGetHatchBackgroundColor(HandleRef brush, out int backcol); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetHatchBackgroundColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int backcol); - [DllImport(LibraryName)] - internal static extern int GdipCloneBrush(HandleRef brush, out IntPtr clonebrush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneBrush( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out IntPtr clonebrush); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrush(ref PointF point1, ref PointF point2, int color1, int color2, WrapMode wrapMode, out IntPtr lineGradient); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrush(ref PointF point1, ref PointF point2, int color1, int color2, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrushI(ref Point point1, ref Point point2, int color1, int color2, WrapMode wrapMode, out IntPtr lineGradient); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrushI(ref Point point1, ref Point point2, int color1, int color2, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrushFromRect(ref RectangleF rect, int color1, int color2, LinearGradientMode lineGradientMode, WrapMode wrapMode, out IntPtr lineGradient); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrushFromRect(ref RectangleF rect, int color1, int color2, LinearGradientMode lineGradientMode, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrushFromRectI(ref Rectangle rect, int color1, int color2, LinearGradientMode lineGradientMode, WrapMode wrapMode, out IntPtr lineGradient); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrushFromRectI(ref Rectangle rect, int color1, int color2, LinearGradientMode lineGradientMode, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrushFromRectWithAngle(ref RectangleF rect, int color1, int color2, float angle, bool isAngleScaleable, WrapMode wrapMode, out IntPtr lineGradient); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrushFromRectWithAngle(ref RectangleF rect, int color1, int color2, float angle, bool isAngleScaleable, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipCreateLineBrushFromRectWithAngleI(ref Rectangle rect, int color1, int color2, float angle, bool isAngleScaleable, WrapMode wrapMode, out IntPtr lineGradient); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateLineBrushFromRectWithAngleI(ref Rectangle rect, int color1, int color2, float angle, bool isAngleScaleable, WrapMode wrapMode, out IntPtr lineGradient); - [DllImport(LibraryName)] - internal static extern int GdipSetLineColors(HandleRef brush, int color1, int color2); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineColors( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int color1, int color2); - [DllImport(LibraryName)] - internal static extern int GdipGetLineColors(HandleRef brush, int[] colors); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineColors( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int[] colors); - [DllImport(LibraryName)] - internal static extern int GdipGetLineRect(HandleRef brush, out RectangleF gprectf); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out RectangleF gprectf); - [DllImport(LibraryName)] - internal static extern int GdipGetLineGammaCorrection(HandleRef brush, out bool useGammaCorrection); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineGammaCorrection( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out bool useGammaCorrection); - [DllImport(LibraryName)] - internal static extern int GdipSetLineGammaCorrection(HandleRef brush, bool useGammaCorrection); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineGammaCorrection( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, bool useGammaCorrection); - [DllImport(LibraryName)] - internal static extern int GdipSetLineSigmaBlend(HandleRef brush, float focus, float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineSigmaBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float focus, float scale); - [DllImport(LibraryName)] - internal static extern int GdipSetLineLinearBlend(HandleRef brush, float focus, float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineLinearBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float focus, float scale); - [DllImport(LibraryName)] - internal static extern int GdipGetLineBlendCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineBlendCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetLineBlend(HandleRef brush, IntPtr blend, IntPtr positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, IntPtr blend, IntPtr positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetLineBlend(HandleRef brush, IntPtr blend, IntPtr positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, IntPtr blend, IntPtr positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetLinePresetBlendCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLinePresetBlendCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetLinePresetBlend(HandleRef brush, IntPtr blend, IntPtr positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLinePresetBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, IntPtr blend, IntPtr positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetLinePresetBlend(HandleRef brush, IntPtr blend, IntPtr positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLinePresetBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, IntPtr blend, IntPtr positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetLineWrapMode(HandleRef brush, int wrapMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int wrapMode); - [DllImport(LibraryName)] - internal static extern int GdipGetLineWrapMode(HandleRef brush, out int wrapMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int wrapMode); - [DllImport(LibraryName)] - internal static extern int GdipResetLineTransform(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyLineTransform(HandleRef brush, HandleRef matrix, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipGetLineTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipSetLineTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipTranslateLineTransform(HandleRef brush, float dx, float dy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float dx, float dy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScaleLineTransform(HandleRef brush, float sx, float sy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScaleLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float sx, float sy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotateLineTransform(HandleRef brush, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotateLineTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float angle, MatrixOrder order); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePathGradient(PointF* points, int count, WrapMode wrapMode, out IntPtr brush); @@ -246,131 +526,315 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePathGradientI(Point* points, int count, WrapMode wrapMode, out IntPtr brush); - [DllImport(LibraryName)] - internal static extern int GdipCreatePathGradientFromPath(HandleRef path, out IntPtr brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreatePathGradientFromPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out IntPtr brush); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientCenterColor(HandleRef brush, out int color); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientCenterColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int color); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientCenterColor(HandleRef brush, int color); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientCenterColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int color); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientSurroundColorsWithCount(HandleRef brush, int[] color, ref int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientSurroundColorsWithCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int[] color, ref int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientSurroundColorsWithCount(HandleRef brush, int[] argb, ref int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientSurroundColorsWithCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int[] argb, ref int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientCenterPoint(HandleRef brush, out PointF point); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientCenterPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out PointF point); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientCenterPoint(HandleRef brush, ref PointF point); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientCenterPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, ref PointF point); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientRect(HandleRef brush, out RectangleF gprectf); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out RectangleF gprectf); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientPointCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientPointCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientSurroundColorCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientSurroundColorCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientBlendCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientBlendCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientBlend(HandleRef brush, float[] blend, float[] positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float[] blend, float[] positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientBlend(HandleRef brush, IntPtr blend, IntPtr positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, IntPtr blend, IntPtr positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientPresetBlendCount(HandleRef brush, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientPresetBlendCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientPresetBlend(HandleRef brush, int[] blend, float[] positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientPresetBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int[] blend, float[] positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientPresetBlend(HandleRef brush, int[] blend, float[] positions, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientPresetBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int[] blend, float[] positions, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientSigmaBlend(HandleRef brush, float focus, float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientSigmaBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float focus, float scale); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientLinearBlend(HandleRef brush, float focus, float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientLinearBlend( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float focus, float scale); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientWrapMode(HandleRef brush, int wrapmode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int wrapmode); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientWrapMode(HandleRef brush, out int wrapmode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int wrapmode); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipResetPathGradientTransform(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetPathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyPathGradientTransform(HandleRef brush, HandleRef matrix, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyPathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipTranslatePathGradientTransform(HandleRef brush, float dx, float dy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslatePathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float dx, float dy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScalePathGradientTransform(HandleRef brush, float sx, float sy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScalePathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float sx, float sy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotatePathGradientTransform(HandleRef brush, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotatePathGradientTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float angle, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipGetPathGradientFocusScales(HandleRef brush, float[] xScale, float[] yScale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPathGradientFocusScales( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float[] xScale, float[] yScale); - [DllImport(LibraryName)] - internal static extern int GdipSetPathGradientFocusScales(HandleRef brush, float xScale, float yScale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPathGradientFocusScales( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float xScale, float yScale); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateImageAttributes(out IntPtr imageattr); - [DllImport(LibraryName)] - internal static extern int GdipCloneImageAttributes(HandleRef imageattr, out IntPtr cloneImageattr); - - [DllImport(LibraryName)] - internal static extern int GdipDisposeImageAttributes(HandleRef imageattr); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneImageAttributes( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, out IntPtr cloneImageattr); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesColorMatrix(HandleRef imageattr, ColorAdjustType type, bool enableFlag, ColorMatrix? colorMatrix, ColorMatrix? grayMatrix, ColorMatrixFlag flags); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDisposeImageAttributes( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesThreshold(HandleRef imageattr, ColorAdjustType type, bool enableFlag, float threshold); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesColorMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(ColorMatrix.PinningMarshaller))] +#endif + ColorMatrix? colorMatrix, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(ColorMatrix.PinningMarshaller))] +#endif + ColorMatrix? grayMatrix, ColorMatrixFlag flags); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesGamma(HandleRef imageattr, ColorAdjustType type, bool enableFlag, float gamma); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesThreshold( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, float threshold); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesNoOp(HandleRef imageattr, ColorAdjustType type, bool enableFlag); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesGamma( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, float gamma); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesColorKeys(HandleRef imageattr, ColorAdjustType type, bool enableFlag, int colorLow, int colorHigh); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesNoOp( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesOutputChannel(HandleRef imageattr, ColorAdjustType type, bool enableFlag, ColorChannelFlag flags); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesColorKeys( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, int colorLow, int colorHigh); - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipSetImageAttributesOutputChannelColorProfile(HandleRef imageattr, ColorAdjustType type, bool enableFlag, string colorProfileFilename); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesOutputChannel( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, ColorChannelFlag flags); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipSetImageAttributesOutputChannelColorProfile( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, string colorProfileFilename); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesRemapTable(HandleRef imageattr, ColorAdjustType type, bool enableFlag, int mapSize, IntPtr map); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesRemapTable( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, ColorAdjustType type, bool enableFlag, int mapSize, IntPtr map); - [DllImport(LibraryName)] - internal static extern int GdipSetImageAttributesWrapMode(HandleRef imageattr, int wrapmode, int argb, bool clamp); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetImageAttributesWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, int wrapmode, int argb, bool clamp); - [DllImport(LibraryName)] - internal static extern int GdipGetImageAttributesAdjustedPalette(HandleRef imageattr, IntPtr palette, ColorAdjustType type); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageAttributesAdjustedPalette( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageattr, IntPtr palette, ColorAdjustType type); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetImageDecodersSize(out int numDecoders, out int size); @@ -387,69 +851,169 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateSolidFill(int color, out IntPtr brush); - [DllImport(LibraryName)] - internal static extern int GdipSetSolidFillColor(HandleRef brush, int color); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetSolidFillColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int color); - [DllImport(LibraryName)] - internal static extern int GdipGetSolidFillColor(HandleRef brush, out int color); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetSolidFillColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int color); - [DllImport(LibraryName)] - internal static extern int GdipCreateTexture(HandleRef bitmap, int wrapmode, out IntPtr texture); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateTexture( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, int wrapmode, out IntPtr texture); - [DllImport(LibraryName)] - internal static extern int GdipCreateTexture2(HandleRef bitmap, int wrapmode, float x, float y, float width, float height, out IntPtr texture); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateTexture2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, int wrapmode, float x, float y, float width, float height, out IntPtr texture); - [DllImport(LibraryName)] - internal static extern int GdipCreateTextureIA(HandleRef bitmap, HandleRef imageAttrib, float x, float y, float width, float height, out IntPtr texture); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateTextureIA( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttrib, float x, float y, float width, float height, out IntPtr texture); - [DllImport(LibraryName)] - internal static extern int GdipCreateTexture2I(HandleRef bitmap, int wrapmode, int x, int y, int width, int height, out IntPtr texture); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateTexture2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, int wrapmode, int x, int y, int width, int height, out IntPtr texture); - [DllImport(LibraryName)] - internal static extern int GdipCreateTextureIAI(HandleRef bitmap, HandleRef imageAttrib, int x, int y, int width, int height, out IntPtr texture); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateTextureIAI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttrib, int x, int y, int width, int height, out IntPtr texture); - [DllImport(LibraryName)] - internal static extern int GdipSetTextureTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetTextureTransform(HandleRef brush, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipResetTextureTransform(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyTextureTransform(HandleRef brush, HandleRef matrix, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipTranslateTextureTransform(HandleRef brush, float dx, float dy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float dx, float dy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScaleTextureTransform(HandleRef brush, float sx, float sy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScaleTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float sx, float sy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotateTextureTransform(HandleRef brush, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotateTextureTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float angle, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipSetTextureWrapMode(HandleRef brush, int wrapMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetTextureWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int wrapMode); - [DllImport(LibraryName)] - internal static extern int GdipGetTextureWrapMode(HandleRef brush, out int wrapMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetTextureWrapMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out int wrapMode); - [DllImport(LibraryName)] - internal static extern int GdipGetTextureImage(HandleRef brush, out IntPtr image); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetTextureImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, out IntPtr image); - [DllImport(LibraryName)] - internal static extern int GdipGetFontCollectionFamilyCount(HandleRef fontCollection, out int numFound); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontCollectionFamilyCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontCollection, out int numFound); - [DllImport(LibraryName)] - internal static extern int GdipGetFontCollectionFamilyList(HandleRef fontCollection, int numSought, IntPtr[] gpfamilies, out int numFound); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontCollectionFamilyList( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontCollection, int numSought, IntPtr[] gpfamilies, out int numFound); [GeneratedDllImport(LibraryName)] internal static partial int GdipCloneFontFamily(IntPtr fontfamily, out IntPtr clonefontfamily); - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipCreateFontFamilyFromName(string name, HandleRef fontCollection, out IntPtr FontFamily); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipCreateFontFamilyFromName(string name, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontCollection, out IntPtr FontFamily); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetGenericFontFamilySansSerif(out IntPtr fontfamily); @@ -460,26 +1024,54 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipGetGenericFontFamilyMonospace(out IntPtr fontfamily); - [DllImport(LibraryName)] - internal static extern int GdipDeleteFontFamily(HandleRef fontFamily); - - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipGetFamilyName(HandleRef family, char* name, int language); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteFontFamily( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontFamily); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipGetFamilyName( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, char* name, int language); - [DllImport(LibraryName)] - internal static extern int GdipIsStyleAvailable(HandleRef family, FontStyle style, out int isStyleAvailable); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsStyleAvailable( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, FontStyle style, out int isStyleAvailable); - [DllImport(LibraryName)] - internal static extern int GdipGetEmHeight(HandleRef family, FontStyle style, out int EmHeight); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetEmHeight( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, FontStyle style, out int EmHeight); - [DllImport(LibraryName)] - internal static extern int GdipGetCellAscent(HandleRef family, FontStyle style, out int CellAscent); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCellAscent( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, FontStyle style, out int CellAscent); - [DllImport(LibraryName)] - internal static extern int GdipGetCellDescent(HandleRef family, FontStyle style, out int CellDescent); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCellDescent( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, FontStyle style, out int CellDescent); - [DllImport(LibraryName)] - internal static extern int GdipGetLineSpacing(HandleRef family, FontStyle style, out int LineSpaceing); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLineSpacing( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef family, FontStyle style, out int LineSpaceing); [GeneratedDllImport(LibraryName)] internal static partial int GdipNewInstalledFontCollection(out IntPtr fontCollection); @@ -490,266 +1082,654 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipDeletePrivateFontCollection(ref IntPtr fontCollection); - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipPrivateAddFontFile(HandleRef fontCollection, string filename); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipPrivateAddFontFile( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontCollection, string filename); - [DllImport(LibraryName)] - internal static extern int GdipPrivateAddMemoryFont(HandleRef fontCollection, IntPtr memory, int length); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPrivateAddMemoryFont( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontCollection, IntPtr memory, int length); - [DllImport(LibraryName)] - internal static extern int GdipCreateFont(HandleRef fontFamily, float emSize, FontStyle style, GraphicsUnit unit, out IntPtr font); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateFont( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef fontFamily, float emSize, FontStyle style, GraphicsUnit unit, out IntPtr font); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFontFromDC(IntPtr hdc, ref IntPtr font); - [DllImport(LibraryName)] - internal static extern int GdipCloneFont(HandleRef font, out IntPtr cloneFont); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneFont( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, out IntPtr cloneFont); - [DllImport(LibraryName)] - internal static extern int GdipDeleteFont(HandleRef font); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteFont( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font); - [DllImport(LibraryName)] - internal static extern int GdipGetFamily(HandleRef font, out IntPtr family); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFamily( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, out IntPtr family); - [DllImport(LibraryName)] - internal static extern int GdipGetFontStyle(HandleRef font, out FontStyle style); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontStyle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, out FontStyle style); - [DllImport(LibraryName)] - internal static extern int GdipGetFontSize(HandleRef font, out float size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontSize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, out float size); - [DllImport(LibraryName)] - internal static extern int GdipGetFontHeight(HandleRef font, HandleRef graphics, out float size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontHeight( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out float size); - [DllImport(LibraryName)] - internal static extern int GdipGetFontHeightGivenDPI(HandleRef font, float dpi, out float size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontHeightGivenDPI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, float dpi, out float size); - [DllImport(LibraryName)] - internal static extern int GdipGetFontUnit(HandleRef font, out GraphicsUnit unit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetFontUnit( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, out GraphicsUnit unit); - [DllImport(LibraryName)] - internal static extern int GdipGetLogFontW(HandleRef font, HandleRef graphics, ref Interop.User32.LOGFONT lf); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetLogFontW( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, ref Interop.User32.LOGFONT lf); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreatePen1(int argb, float width, int unit, out IntPtr pen); - [DllImport(LibraryName)] - internal static extern int GdipCreatePen2(HandleRef brush, float width, int unit, out IntPtr pen); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreatePen2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float width, int unit, out IntPtr pen); - [DllImport(LibraryName)] - internal static extern int GdipClonePen(HandleRef pen, out IntPtr clonepen); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipClonePen( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out IntPtr clonepen); - [DllImport(LibraryName)] - internal static extern int GdipDeletePen(HandleRef Pen); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeletePen( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef Pen); - [DllImport(LibraryName)] - internal static extern int GdipSetPenMode(HandleRef pen, PenAlignment penAlign); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PenAlignment penAlign); - [DllImport(LibraryName)] - internal static extern int GdipGetPenMode(HandleRef pen, out PenAlignment penAlign); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out PenAlignment penAlign); - [DllImport(LibraryName)] - internal static extern int GdipSetPenWidth(HandleRef pen, float width); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenWidth( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float width); - [DllImport(LibraryName)] - internal static extern int GdipGetPenWidth(HandleRef pen, float[] width); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenWidth( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] width); - [DllImport(LibraryName)] - internal static extern int GdipSetPenLineCap197819(HandleRef pen, int startCap, int endCap, int dashCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenLineCap197819( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int startCap, int endCap, int dashCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenStartCap(HandleRef pen, int startCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenStartCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int startCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenEndCap(HandleRef pen, int endCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenEndCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int endCap); - [DllImport(LibraryName)] - internal static extern int GdipGetPenStartCap(HandleRef pen, out int startCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenStartCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int startCap); - [DllImport(LibraryName)] - internal static extern int GdipGetPenEndCap(HandleRef pen, out int endCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenEndCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int endCap); - [DllImport(LibraryName)] - internal static extern int GdipGetPenDashCap197819(HandleRef pen, out int dashCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenDashCap197819( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int dashCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenDashCap197819(HandleRef pen, int dashCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenDashCap197819( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int dashCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenLineJoin(HandleRef pen, int lineJoin); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenLineJoin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int lineJoin); - [DllImport(LibraryName)] - internal static extern int GdipGetPenLineJoin(HandleRef pen, out int lineJoin); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenLineJoin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int lineJoin); - [DllImport(LibraryName)] - internal static extern int GdipSetPenCustomStartCap(HandleRef pen, HandleRef customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenCustomStartCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap); - [DllImport(LibraryName)] - internal static extern int GdipGetPenCustomStartCap(HandleRef pen, out IntPtr customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenCustomStartCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out IntPtr customCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenCustomEndCap(HandleRef pen, HandleRef customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenCustomEndCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef customCap); - [DllImport(LibraryName)] - internal static extern int GdipGetPenCustomEndCap(HandleRef pen, out IntPtr customCap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenCustomEndCap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out IntPtr customCap); - [DllImport(LibraryName)] - internal static extern int GdipSetPenMiterLimit(HandleRef pen, float miterLimit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenMiterLimit( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float miterLimit); - [DllImport(LibraryName)] - internal static extern int GdipGetPenMiterLimit(HandleRef pen, float[] miterLimit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenMiterLimit( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] miterLimit); - [DllImport(LibraryName)] - internal static extern int GdipSetPenTransform(HandleRef pen, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetPenTransform(HandleRef pen, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipResetPenTransform(HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetPenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyPenTransform(HandleRef brush, HandleRef matrix, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyPenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipTranslatePenTransform(HandleRef brush, float dx, float dy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslatePenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float dx, float dy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScalePenTransform(HandleRef brush, float sx, float sy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScalePenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float sx, float sy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotatePenTransform(HandleRef brush, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotatePenTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float angle, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipSetPenColor(HandleRef pen, int argb); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int argb); - [DllImport(LibraryName)] - internal static extern int GdipGetPenColor(HandleRef pen, out int argb); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenColor( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int argb); - [DllImport(LibraryName)] - internal static extern int GdipSetPenBrushFill(HandleRef pen, HandleRef brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenBrushFill( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); - [DllImport(LibraryName)] - internal static extern int GdipGetPenBrushFill(HandleRef pen, out IntPtr brush); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenBrushFill( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out IntPtr brush); - [DllImport(LibraryName)] - internal static extern int GdipGetPenFillType(HandleRef pen, out int pentype); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenFillType( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int pentype); - [DllImport(LibraryName)] - internal static extern int GdipGetPenDashStyle(HandleRef pen, out int dashstyle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenDashStyle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int dashstyle); - [DllImport(LibraryName)] - internal static extern int GdipSetPenDashStyle(HandleRef pen, int dashstyle); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenDashStyle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int dashstyle); - [DllImport(LibraryName)] - internal static extern int GdipSetPenDashArray(HandleRef pen, HandleRef memorydash, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenDashArray( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef memorydash, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPenDashOffset(HandleRef pen, float[] dashoffset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenDashOffset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] dashoffset); - [DllImport(LibraryName)] - internal static extern int GdipSetPenDashOffset(HandleRef pen, float dashoffset); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenDashOffset( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float dashoffset); - [DllImport(LibraryName)] - internal static extern int GdipGetPenDashCount(HandleRef pen, out int dashcount); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenDashCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int dashcount); - [DllImport(LibraryName)] - internal static extern int GdipGetPenDashArray(HandleRef pen, float[] memorydash, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenDashArray( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] memorydash, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPenCompoundCount(HandleRef pen, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenCompoundCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, out int count); - [DllImport(LibraryName)] - internal static extern int GdipSetPenCompoundArray(HandleRef pen, float[] array, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPenCompoundArray( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] array, int count); - [DllImport(LibraryName)] - internal static extern int GdipGetPenCompoundArray(HandleRef pen, float[] array, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPenCompoundArray( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float[] array, int count); - [DllImport(LibraryName)] - internal static extern int GdipSetWorldTransform(HandleRef graphics, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipResetWorldTransform(HandleRef graphics); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyWorldTransform(HandleRef graphics, HandleRef matrix, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipTranslateWorldTransform(HandleRef graphics, float dx, float dy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float dx, float dy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScaleWorldTransform(HandleRef graphics, float sx, float sy, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScaleWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float sx, float sy, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotateWorldTransform(HandleRef graphics, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotateWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float angle, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipGetWorldTransform(HandleRef graphics, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetWorldTransform( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipSetCompositingMode(HandleRef graphics, CompositingMode compositingMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCompositingMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, CompositingMode compositingMode); - [DllImport(LibraryName)] - internal static extern int GdipSetTextRenderingHint(HandleRef graphics, TextRenderingHint textRenderingHint); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetTextRenderingHint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, TextRenderingHint textRenderingHint); - [DllImport(LibraryName)] - internal static extern int GdipSetTextContrast(HandleRef graphics, int textContrast); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetTextContrast( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int textContrast); - [DllImport(LibraryName)] - internal static extern int GdipSetInterpolationMode(HandleRef graphics, InterpolationMode interpolationMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetInterpolationMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, InterpolationMode interpolationMode); - [DllImport(LibraryName)] - internal static extern int GdipGetCompositingMode(HandleRef graphics, out CompositingMode compositingMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCompositingMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out CompositingMode compositingMode); - [DllImport(LibraryName)] - internal static extern int GdipSetRenderingOrigin(HandleRef graphics, int x, int y); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetRenderingOrigin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int x, int y); - [DllImport(LibraryName)] - internal static extern int GdipGetRenderingOrigin(HandleRef graphics, out int x, out int y); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRenderingOrigin( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int x, out int y); - [DllImport(LibraryName)] - internal static extern int GdipSetCompositingQuality(HandleRef graphics, CompositingQuality quality); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetCompositingQuality( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, CompositingQuality quality); - [DllImport(LibraryName)] - internal static extern int GdipGetCompositingQuality(HandleRef graphics, out CompositingQuality quality); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetCompositingQuality( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out CompositingQuality quality); - [DllImport(LibraryName)] - internal static extern int GdipSetSmoothingMode(HandleRef graphics, SmoothingMode smoothingMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetSmoothingMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, SmoothingMode smoothingMode); - [DllImport(LibraryName)] - internal static extern int GdipGetSmoothingMode(HandleRef graphics, out SmoothingMode smoothingMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetSmoothingMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out SmoothingMode smoothingMode); - [DllImport(LibraryName)] - internal static extern int GdipSetPixelOffsetMode(HandleRef graphics, PixelOffsetMode pixelOffsetMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPixelOffsetMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, PixelOffsetMode pixelOffsetMode); - [DllImport(LibraryName)] - internal static extern int GdipGetPixelOffsetMode(HandleRef graphics, out PixelOffsetMode pixelOffsetMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPixelOffsetMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out PixelOffsetMode pixelOffsetMode); - [DllImport(LibraryName)] - internal static extern int GdipGetTextRenderingHint(HandleRef graphics, out TextRenderingHint textRenderingHint); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetTextRenderingHint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out TextRenderingHint textRenderingHint); - [DllImport(LibraryName)] - internal static extern int GdipGetTextContrast(HandleRef graphics, out int textContrast); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetTextContrast( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int textContrast); - [DllImport(LibraryName)] - internal static extern int GdipGetInterpolationMode(HandleRef graphics, out InterpolationMode interpolationMode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetInterpolationMode( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out InterpolationMode interpolationMode); - [DllImport(LibraryName)] - internal static extern int GdipGetPageUnit(HandleRef graphics, out GraphicsUnit unit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPageUnit( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out GraphicsUnit unit); - [DllImport(LibraryName)] - internal static extern int GdipGetPageScale(HandleRef graphics, out float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPageScale( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out float scale); - [DllImport(LibraryName)] - internal static extern int GdipSetPageUnit(HandleRef graphics, GraphicsUnit unit); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPageUnit( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, GraphicsUnit unit); - [DllImport(LibraryName)] - internal static extern int GdipSetPageScale(HandleRef graphics, float scale); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPageScale( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float scale); - [DllImport(LibraryName)] - internal static extern int GdipGetDpiX(HandleRef graphics, out float dpi); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetDpiX( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out float dpi); - [DllImport(LibraryName)] - internal static extern int GdipGetDpiY(HandleRef graphics, out float dpi); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetDpiY( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out float dpi); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateMatrix(out IntPtr matrix); @@ -757,80 +1737,154 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateMatrix2(float m11, float m12, float m21, float m22, float dx, float dy, out IntPtr matrix); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipCreateMatrix3(ref RectangleF rect, PointF* dstplg, out IntPtr matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateMatrix3(ref RectangleF rect, PointF* dstplg, out IntPtr matrix); - [DllImport(LibraryName)] - internal static extern int GdipCreateMatrix3I(ref Rectangle rect, Point* dstplg, out IntPtr matrix); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateMatrix3I(ref Rectangle rect, Point* dstplg, out IntPtr matrix); - [DllImport(LibraryName)] - internal static extern int GdipCloneMatrix(HandleRef matrix, out IntPtr cloneMatrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, out IntPtr cloneMatrix); - [DllImport(LibraryName)] - internal static extern int GdipDeleteMatrix(HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipSetMatrixElements(HandleRef matrix, float m11, float m12, float m21, float m22, float dx, float dy); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetMatrixElements( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float m11, float m12, float m21, float m22, float dx, float dy); - [DllImport(LibraryName)] - internal static extern int GdipMultiplyMatrix(HandleRef matrix, HandleRef matrix2, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipMultiplyMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix2, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipTranslateMatrix(HandleRef matrix, float offsetX, float offsetY, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float offsetX, float offsetY, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipScaleMatrix(HandleRef matrix, float scaleX, float scaleY, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipScaleMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float scaleX, float scaleY, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipRotateMatrix(HandleRef matrix, float angle, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRotateMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float angle, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipShearMatrix(HandleRef matrix, float shearX, float shearY, MatrixOrder order); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipShearMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float shearX, float shearY, MatrixOrder order); - [DllImport(LibraryName)] - internal static extern int GdipInvertMatrix(HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipInvertMatrix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipTransformMatrixPoints(HandleRef matrix, PointF* pts, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformMatrixPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, PointF* pts, int count); - [DllImport(LibraryName)] - internal static extern int GdipTransformMatrixPointsI(HandleRef matrix, Point* pts, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformMatrixPointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, Point* pts, int count); - [DllImport(LibraryName)] - internal static extern int GdipVectorTransformMatrixPoints(HandleRef matrix, PointF* pts, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipVectorTransformMatrixPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, PointF* pts, int count); - [DllImport(LibraryName)] - internal static extern int GdipVectorTransformMatrixPointsI(HandleRef matrix, Point* pts, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipVectorTransformMatrixPointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, Point* pts, int count); - [DllImport(LibraryName)] - internal static extern unsafe int GdipGetMatrixElements(HandleRef matrix, float* m); + [GeneratedDllImport(LibraryName)] + internal static unsafe partial int GdipGetMatrixElements( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, float* m); - [DllImport(LibraryName)] - internal static extern int GdipIsMatrixInvertible(HandleRef matrix, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsMatrixInvertible( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsMatrixIdentity(HandleRef matrix, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsMatrixIdentity( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsMatrixEqual(HandleRef matrix, HandleRef matrix2, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsMatrixEqual( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix2, out int boolean); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateRegion(out IntPtr region); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName)] - internal static extern int GdipCreateRegionRect(ref RectangleF gprectf, out IntPtr region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateRegionRect(ref RectangleF gprectf, out IntPtr region); - [DllImport(LibraryName)] - internal static extern int GdipCreateRegionRectI(ref Rectangle gprect, out IntPtr region); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateRegionRectI(ref Rectangle gprect, out IntPtr region); - [DllImport(LibraryName)] - internal static extern int GdipCreateRegionPath(HandleRef path, out IntPtr region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateRegionPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, out IntPtr region); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateRegionRgnData(byte[] rgndata, int size, out IntPtr region); @@ -838,140 +1892,400 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateRegionHrgn(IntPtr hRgn, out IntPtr region); - [DllImport(LibraryName)] - internal static extern int GdipCloneRegion(HandleRef region, out IntPtr cloneregion); - - [DllImport(LibraryName)] - internal static extern int GdipDeleteRegion(HandleRef region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, out IntPtr cloneregion); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillRegion(HandleRef graphics, HandleRef brush, HandleRef region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region); - [DllImport(LibraryName)] - internal static extern int GdipSetInfinite(HandleRef region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetInfinite( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region); - [DllImport(LibraryName)] - internal static extern int GdipSetEmpty(HandleRef region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetEmpty( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region); - [DllImport(LibraryName)] - internal static extern int GdipCombineRegionRect(HandleRef region, ref RectangleF gprectf, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCombineRegionRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, ref RectangleF gprectf, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipCombineRegionRectI(HandleRef region, ref Rectangle gprect, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCombineRegionRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, ref Rectangle gprect, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipCombineRegionPath(HandleRef region, HandleRef path, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCombineRegionPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipCombineRegionRegion(HandleRef region, HandleRef region2, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCombineRegionRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region2, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipTranslateRegion(HandleRef region, float dx, float dy); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, float dx, float dy); - [DllImport(LibraryName)] - internal static extern int GdipTranslateRegionI(HandleRef region, int dx, int dy); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateRegionI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, int dx, int dy); - [DllImport(LibraryName)] - internal static extern int GdipTransformRegion(HandleRef region, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionBounds(HandleRef region, HandleRef graphics, out RectangleF gprectf); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionBounds( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out RectangleF gprectf); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionHRgn(HandleRef region, HandleRef graphics, out IntPtr hrgn); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionHRgn( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out IntPtr hrgn); - [DllImport(LibraryName)] - internal static extern int GdipIsEmptyRegion(HandleRef region, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsEmptyRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsInfiniteRegion(HandleRef region, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsInfiniteRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsEqualRegion(HandleRef region, HandleRef region2, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsEqualRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region2, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionDataSize(HandleRef region, out int bufferSize); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionDataSize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, out int bufferSize); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionData(HandleRef region, byte[] regionData, int bufferSize, out int sizeFilled); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionData( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, byte[] regionData, int bufferSize, out int sizeFilled); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRegionPoint(HandleRef region, float X, float Y, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRegionPoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, float X, float Y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRegionPointI(HandleRef region, int X, int Y, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRegionPointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, int X, int Y, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRegionRect(HandleRef region, float X, float Y, float width, float height, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRegionRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, float X, float Y, float width, float height, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRegionRectI(HandleRef region, int X, int Y, int width, int height, HandleRef graphics, out int boolean); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRegionRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, int X, int Y, int width, int height, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int boolean); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionScansCount(HandleRef region, out int count, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionScansCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, out int count, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); - [DllImport(LibraryName)] - internal static extern int GdipGetRegionScans(HandleRef region, RectangleF* rects, out int count, HandleRef matrix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetRegionScans( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, RectangleF* rects, out int count, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef matrix); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateFromHDC(IntPtr hdc, out IntPtr graphics); - [DllImport(LibraryName)] - internal static extern int GdipSetClipGraphics(HandleRef graphics, HandleRef srcgraphics, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetClipGraphics( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef srcgraphics, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipSetClipRect(HandleRef graphics, float x, float y, float width, float height, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetClipRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float x, float y, float width, float height, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipSetClipRectI(HandleRef graphics, int x, int y, int width, int height, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetClipRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int x, int y, int width, int height, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipSetClipPath(HandleRef graphics, HandleRef path, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetClipPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipSetClipRegion(HandleRef graphics, HandleRef region, CombineMode mode); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetClipRegion( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region, CombineMode mode); - [DllImport(LibraryName)] - internal static extern int GdipResetClip(HandleRef graphics); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipResetClip( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics); - [DllImport(LibraryName)] - internal static extern int GdipTranslateClip(HandleRef graphics, float dx, float dy); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTranslateClip( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float dx, float dy); - [DllImport(LibraryName)] - internal static extern int GdipGetClip(HandleRef graphics, HandleRef region); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetClip( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef region); - [DllImport(LibraryName)] - internal static extern int GdipGetClipBounds(HandleRef graphics, out RectangleF rect); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetClipBounds( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out RectangleF rect); - [DllImport(LibraryName)] - internal static extern int GdipIsClipEmpty(HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsClipEmpty( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipGetVisibleClipBounds(HandleRef graphics, out RectangleF rect); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetVisibleClipBounds( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out RectangleF rect); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleClipEmpty(HandleRef graphics, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleClipEmpty( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsVisiblePoint(HandleRef graphics, float x, float y, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisiblePoint( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float x, float y, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsVisiblePointI(HandleRef graphics, int x, int y, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisiblePointI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int x, int y, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRect(HandleRef graphics, float x, float y, float width, float height, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, float x, float y, float width, float height, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipIsVisibleRectI(HandleRef graphics, int x, int y, int width, int height, out bool result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipIsVisibleRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int x, int y, int width, int height, out bool result); - [DllImport(LibraryName)] - internal static extern int GdipFlush(HandleRef graphics, FlushIntention intention); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipFlush( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, FlushIntention intention); - [DllImport(LibraryName)] - internal static extern int GdipGetDC(HandleRef graphics, out IntPtr hdc); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetDC( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out IntPtr hdc); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatMeasurableCharacterRanges(HandleRef format, int rangeCount, [In] [Out] CharacterRange[] range); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatMeasurableCharacterRanges( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, int rangeCount, CharacterRange[] range); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateStringFormat(StringFormatFlags options, int language, out IntPtr format); @@ -982,125 +2296,281 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipStringFormatGetGenericTypographic(out IntPtr format); - [DllImport(LibraryName)] - internal static extern int GdipDeleteStringFormat(HandleRef format); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDeleteStringFormat( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format); - [DllImport(LibraryName)] - internal static extern int GdipCloneStringFormat(HandleRef format, out IntPtr newFormat); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneStringFormat( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out IntPtr newFormat); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatFlags(HandleRef format, StringFormatFlags options); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatFlags( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, StringFormatFlags options); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatFlags(HandleRef format, out StringFormatFlags result); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatFlags( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out StringFormatFlags result); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatAlign(HandleRef format, StringAlignment align); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatAlign( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, StringAlignment align); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatAlign(HandleRef format, out StringAlignment align); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatAlign( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out StringAlignment align); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatLineAlign(HandleRef format, StringAlignment align); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatLineAlign( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, StringAlignment align); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatLineAlign(HandleRef format, out StringAlignment align); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatLineAlign( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out StringAlignment align); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatHotkeyPrefix(HandleRef format, HotkeyPrefix hotkeyPrefix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatHotkeyPrefix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, HotkeyPrefix hotkeyPrefix); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatHotkeyPrefix(HandleRef format, out HotkeyPrefix hotkeyPrefix); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatHotkeyPrefix( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out HotkeyPrefix hotkeyPrefix); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatTabStops(HandleRef format, float firstTabOffset, int count, float[] tabStops); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatTabStops( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, float firstTabOffset, int count, float[] tabStops); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatTabStops(HandleRef format, int count, out float firstTabOffset, [In] [Out] float[] tabStops); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatTabStops( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, int count, out float firstTabOffset, float[] tabStops); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatTabStopCount(HandleRef format, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatTabStopCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out int count); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatMeasurableCharacterRangeCount(HandleRef format, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatMeasurableCharacterRangeCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out int count); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatTrimming(HandleRef format, StringTrimming trimming); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatTrimming( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, StringTrimming trimming); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatTrimming(HandleRef format, out StringTrimming trimming); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatTrimming( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out StringTrimming trimming); - [DllImport(LibraryName)] - internal static extern int GdipSetStringFormatDigitSubstitution(HandleRef format, int langID, StringDigitSubstitute sds); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetStringFormatDigitSubstitution( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, int langID, StringDigitSubstitute sds); - [DllImport(LibraryName)] - internal static extern int GdipGetStringFormatDigitSubstitution(HandleRef format, out int langID, out StringDigitSubstitute sds); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetStringFormatDigitSubstitution( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef format, out int langID, out StringDigitSubstitute sds); - [DllImport(LibraryName)] - internal static extern int GdipGetImageDimension(HandleRef image, out float width, out float height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageDimension( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out float width, out float height); - [DllImport(LibraryName)] - internal static extern int GdipGetImageWidth(HandleRef image, out int width); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageWidth( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int width); - [DllImport(LibraryName)] - internal static extern int GdipGetImageHeight(HandleRef image, out int height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageHeight( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int height); - [DllImport(LibraryName)] - internal static extern int GdipGetImageHorizontalResolution(HandleRef image, out float horzRes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageHorizontalResolution( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out float horzRes); - [DllImport(LibraryName)] - internal static extern int GdipGetImageVerticalResolution(HandleRef image, out float vertRes); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageVerticalResolution( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out float vertRes); - [DllImport(LibraryName)] - internal static extern int GdipGetImageFlags(HandleRef image, out int flags); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageFlags( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int flags); - [DllImport(LibraryName)] - internal static extern int GdipGetImageRawFormat(HandleRef image, ref Guid format); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageRawFormat( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, ref Guid format); - [DllImport(LibraryName)] - internal static extern int GdipGetImagePixelFormat(HandleRef image, out PixelFormat format); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImagePixelFormat( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out PixelFormat format); - [DllImport(LibraryName)] - internal static extern int GdipImageGetFrameCount(HandleRef image, ref Guid dimensionID, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipImageGetFrameCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, ref Guid dimensionID, out int count); - [DllImport(LibraryName)] - internal static extern int GdipImageSelectActiveFrame(HandleRef image, ref Guid dimensionID, int frameIndex); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipImageSelectActiveFrame( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, ref Guid dimensionID, int frameIndex); - [DllImport(LibraryName)] - internal static extern int GdipImageRotateFlip(HandleRef image, int rotateFlipType); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipImageRotateFlip( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int rotateFlipType); - [DllImport(LibraryName)] - internal static extern int GdipGetAllPropertyItems(HandleRef image, uint totalBufferSize, uint numProperties, PropertyItemInternal* allItems); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetAllPropertyItems( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, uint totalBufferSize, uint numProperties, PropertyItemInternal* allItems); - [DllImport(LibraryName)] - internal static extern int GdipGetPropertyCount(HandleRef image, out uint numOfProperty); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPropertyCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out uint numOfProperty); - [DllImport(LibraryName)] - internal static extern int GdipGetPropertyIdList(HandleRef image, uint numOfProperty, int* list); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPropertyIdList( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, uint numOfProperty, int* list); - [DllImport(LibraryName)] - internal static extern int GdipGetPropertyItem(HandleRef image, int propid, uint propSize, PropertyItemInternal* buffer); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPropertyItem( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int propid, uint propSize, PropertyItemInternal* buffer); - [DllImport(LibraryName)] - internal static extern int GdipGetPropertyItemSize(HandleRef image, int propid, out uint size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPropertyItemSize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int propid, out uint size); - [DllImport(LibraryName)] - internal static extern int GdipGetPropertySize(HandleRef image, out uint totalBufferSize, out uint numProperties); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetPropertySize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out uint totalBufferSize, out uint numProperties); - [DllImport(LibraryName)] - internal static extern int GdipRemovePropertyItem(HandleRef image, int propid); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipRemovePropertyItem( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int propid); - [DllImport(LibraryName)] - internal static extern int GdipSetPropertyItem(HandleRef image, PropertyItemInternal* item); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSetPropertyItem( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, PropertyItemInternal* item); - [DllImport(LibraryName)] - internal static extern int GdipGetImageType(HandleRef image, out int type); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetImageType( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int type); [GeneratedDllImport(LibraryName)] internal static partial int GdipGetImageType(IntPtr image, out int type); - [DllImport(LibraryName)] - internal static extern int GdipDisposeImage(HandleRef image); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipDisposeImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image); [GeneratedDllImport(LibraryName)] internal static partial int GdipDisposeImage(IntPtr image); @@ -1114,8 +2584,12 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateBitmapFromScan0(int width, int height, int stride, int format, IntPtr scan0, out IntPtr bitmap); - [DllImport(LibraryName)] - internal static extern int GdipCreateBitmapFromGraphics(int width, int height, HandleRef graphics, out IntPtr bitmap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateBitmapFromGraphics(int width, int height, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out IntPtr bitmap); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateBitmapFromHBITMAP(IntPtr hbitmap, IntPtr hpalette, out IntPtr bitmap); @@ -1126,47 +2600,100 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateBitmapFromResource(IntPtr hresource, IntPtr name, out IntPtr bitmap); - [DllImport(LibraryName)] - internal static extern int GdipCreateHBITMAPFromBitmap(HandleRef nativeBitmap, out IntPtr hbitmap, int argbBackground); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateHBITMAPFromBitmap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef nativeBitmap, out IntPtr hbitmap, int argbBackground); - [DllImport(LibraryName)] - internal static extern int GdipCreateHICONFromBitmap(HandleRef nativeBitmap, out IntPtr hicon); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateHICONFromBitmap( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef nativeBitmap, out IntPtr hicon); - [DllImport(LibraryName)] - internal static extern int GdipCloneBitmapArea(float x, float y, float width, float height, int format, HandleRef srcbitmap, out IntPtr dstbitmap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneBitmapArea(float x, float y, float width, float height, int format, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef srcbitmap, out IntPtr dstbitmap); - [DllImport(LibraryName)] - internal static extern int GdipCloneBitmapAreaI(int x, int y, int width, int height, int format, HandleRef srcbitmap, out IntPtr dstbitmap); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCloneBitmapAreaI(int x, int y, int width, int height, int format, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef srcbitmap, out IntPtr dstbitmap); - [DllImport(LibraryName)] - internal static extern int GdipBitmapLockBits(HandleRef bitmap, ref Rectangle rect, ImageLockMode flags, PixelFormat format, [In] [Out] BitmapData lockedBitmapData); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBitmapLockBits( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, ref Rectangle rect, ImageLockMode flags, PixelFormat format, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(BitmapData.PinningMarshaller))] +#endif + BitmapData lockedBitmapData); - [DllImport(LibraryName)] - internal static extern int GdipBitmapUnlockBits(HandleRef bitmap, BitmapData lockedBitmapData); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBitmapUnlockBits( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(BitmapData.PinningMarshaller))] +#endif + BitmapData lockedBitmapData); - [DllImport(LibraryName)] - internal static extern int GdipBitmapGetPixel(HandleRef bitmap, int x, int y, out int argb); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBitmapGetPixel( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, int x, int y, out int argb); - [DllImport(LibraryName)] - internal static extern int GdipBitmapSetPixel(HandleRef bitmap, int x, int y, int argb); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBitmapSetPixel( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, int x, int y, int argb); - [DllImport(LibraryName)] - internal static extern int GdipBitmapSetResolution(HandleRef bitmap, float dpix, float dpiy); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipBitmapSetResolution( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef bitmap, float dpix, float dpiy); - [DllImport(LibraryName)] - internal static extern int GdipImageGetFrameDimensionsCount(HandleRef image, out int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipImageGetFrameDimensionsCount( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, out int count); - [DllImport(LibraryName)] - internal static extern int GdipImageGetFrameDimensionsList(HandleRef image, Guid* dimensionIDs, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipImageGetFrameDimensionsList( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, Guid* dimensionIDs, int count); [GeneratedDllImport(LibraryName)] internal static partial int GdipCreateMetafileFromEmf(IntPtr hEnhMetafile, bool deleteEmf, out IntPtr metafile); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support non-blittable structs. - [DllImport(LibraryName)] - internal static extern int GdipCreateMetafileFromWmf(IntPtr hMetafile, bool deleteWmf, WmfPlaceableFileHeader wmfplacealbeHeader, out IntPtr metafile); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName)] + internal static partial int GdipCreateMetafileFromWmf(IntPtr hMetafile, bool deleteWmf, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(WmfPlaceableFileHeader.PinningMarshaller))] +#endif + WmfPlaceableFileHeader wmfplacealbeHeader, out IntPtr metafile); [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipCreateMetafileFromFile(string file, out IntPtr metafile); @@ -1174,212 +2701,734 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipRecordMetafile(IntPtr referenceHdc, EmfType emfType, IntPtr pframeRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafile(IntPtr referenceHdc, EmfType emfType, ref RectangleF frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafile(IntPtr referenceHdc, EmfType emfType, ref RectangleF frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafileI(IntPtr referenceHdc, EmfType emfType, ref Rectangle frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafileI(IntPtr referenceHdc, EmfType emfType, ref Rectangle frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafileFileName(string fileName, IntPtr referenceHdc, EmfType emfType, ref RectangleF frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafileFileName(string fileName, IntPtr referenceHdc, EmfType emfType, ref RectangleF frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipRecordMetafileFileName(string fileName, IntPtr referenceHdc, EmfType emfType, IntPtr pframeRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); -#pragma warning disable DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - // TODO: [DllImportGenerator] Switch to use GeneratedDllImport once we support blittable structs defined in other assemblies. - [DllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] - internal static extern int GdipRecordMetafileFileNameI(string fileName, IntPtr referenceHdc, EmfType emfType, ref Rectangle frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); -#pragma warning restore DLLIMPORTGENANALYZER015 // Use 'GeneratedDllImportAttribute' instead of 'DllImportAttribute' to generate P/Invoke marshalling code at compile time - - [DllImport(LibraryName)] - internal static extern int GdipPlayMetafileRecord(HandleRef metafile, EmfPlusRecordType recordType, int flags, int dataSize, byte[] data); - - [DllImport(LibraryName)] - internal static extern int GdipSaveGraphics(HandleRef graphics, out int state); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawArc(HandleRef graphics, HandleRef pen, float x, float y, float width, float height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawArcI(HandleRef graphics, HandleRef pen, int x, int y, int width, int height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawLinesI(HandleRef graphics, HandleRef pen, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawBezier(HandleRef graphics, HandleRef pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawEllipse(HandleRef graphics, HandleRef pen, float x, float y, float width, float height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawEllipseI(HandleRef graphics, HandleRef pen, int x, int y, int width, int height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawLine(HandleRef graphics, HandleRef pen, float x1, float y1, float x2, float y2); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawLineI(HandleRef graphics, HandleRef pen, int x1, int y1, int x2, int y2); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawLines(HandleRef graphics, HandleRef pen, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawPath(HandleRef graphics, HandleRef pen, HandleRef path); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawPie(HandleRef graphics, HandleRef pen, float x, float y, float width, float height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawPieI(HandleRef graphics, HandleRef pen, int x, int y, int width, int height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawPolygon(HandleRef graphics, HandleRef pen, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawPolygonI(HandleRef graphics, HandleRef pen, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillEllipse(HandleRef graphics, HandleRef brush, float x, float y, float width, float height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillEllipseI(HandleRef graphics, HandleRef brush, int x, int y, int width, int height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillPolygon(HandleRef graphics, HandleRef brush, PointF* points, int count, FillMode brushMode); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillPolygonI(HandleRef graphics, HandleRef brush, Point* points, int count, FillMode brushMode); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillRectangle(HandleRef graphics, HandleRef brush, float x, float y, float width, float height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillRectangleI(HandleRef graphics, HandleRef brush, int x, int y, int width, int height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillRectangles(HandleRef graphics, HandleRef brush, RectangleF* rects, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillRectanglesI(HandleRef graphics, HandleRef brush, Rectangle* rects, int count); - - [DllImport(LibraryName, CharSet = CharSet.Unicode, SetLastError = true)] - internal static extern int GdipDrawString(HandleRef graphics, string textString, int length, HandleRef font, ref RectangleF layoutRect, HandleRef stringFormat, HandleRef brush); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImageRectI(HandleRef graphics, HandleRef image, int x, int y, int width, int height); - - [DllImport(LibraryName)] - internal static extern int GdipGraphicsClear(HandleRef graphics, int argb); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawClosedCurve(HandleRef graphics, HandleRef pen, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawClosedCurveI(HandleRef graphics, HandleRef pen, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawClosedCurve2(HandleRef graphics, HandleRef pen, PointF* points, int count, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawClosedCurve2I(HandleRef graphics, HandleRef pen, Point* points, int count, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurve(HandleRef graphics, HandleRef pen, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurveI(HandleRef graphics, HandleRef pen, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurve2(HandleRef graphics, HandleRef pen, PointF* points, int count, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurve2I(HandleRef graphics, HandleRef pen, Point* points, int count, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurve3(HandleRef graphics, HandleRef pen, PointF* points, int count, int offset, int numberOfSegments, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawCurve3I(HandleRef graphics, HandleRef pen, Point* points, int count, int offset, int numberOfSegments, float tension); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillClosedCurve(HandleRef graphics, HandleRef brush, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillClosedCurveI(HandleRef graphics, HandleRef brush, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillClosedCurve2(HandleRef graphics, HandleRef brush, PointF* points, int count, float tension, FillMode mode); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillClosedCurve2I(HandleRef graphics, HandleRef brush, Point* points, int count, float tension, FillMode mode); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillPie(HandleRef graphics, HandleRef brush, float x, float y, float width, float height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipFillPieI(HandleRef graphics, HandleRef brush, int x, int y, int width, int height, float startAngle, float sweepAngle); - - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipMeasureString(HandleRef graphics, string textString, int length, HandleRef font, ref RectangleF layoutRect, HandleRef stringFormat, ref RectangleF boundingBox, out int codepointsFitted, out int linesFilled); - - [DllImport(LibraryName, CharSet = CharSet.Unicode)] - internal static extern int GdipMeasureCharacterRanges(HandleRef graphics, string textString, int length, HandleRef font, ref RectangleF layoutRect, HandleRef stringFormat, int characterCount, [In] [Out] IntPtr[] region); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImageI(HandleRef graphics, HandleRef image, int x, int y); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImage(HandleRef graphics, HandleRef image, float x, float y); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePoints(HandleRef graphics, HandleRef image, PointF* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePointsI(HandleRef graphics, HandleRef image, Point* points, int count); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImageRectRectI(HandleRef graphics, HandleRef image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcunit, HandleRef imageAttributes, Graphics.DrawImageAbort? callback, HandleRef callbackdata); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePointsRect(HandleRef graphics, HandleRef image, PointF* points, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcunit, HandleRef imageAttributes, Graphics.DrawImageAbort? callback, HandleRef callbackdata); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImageRectRect(HandleRef graphics, HandleRef image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcunit, HandleRef imageAttributes, Graphics.DrawImageAbort? callback, HandleRef callbackdata); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePointsRectI(HandleRef graphics, HandleRef image, Point* points, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcunit, HandleRef imageAttributes, Graphics.DrawImageAbort? callback, HandleRef callbackdata); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImageRect(HandleRef graphics, HandleRef image, float x, float y, float width, float height); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePointRect(HandleRef graphics, HandleRef image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, int srcunit); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawImagePointRectI(HandleRef graphics, HandleRef image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, int srcunit); - - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawRectangle(HandleRef graphics, HandleRef pen, float x, float y, float width, float height); + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static partial int GdipRecordMetafileFileNameI(string fileName, IntPtr referenceHdc, EmfType emfType, ref Rectangle frameRect, MetafileFrameUnit frameUnit, string? description, out IntPtr metafile); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawRectangleI(HandleRef graphics, HandleRef pen, int x, int y, int width, int height); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipPlayMetafileRecord( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef metafile, EmfPlusRecordType recordType, int flags, int dataSize, byte[] data); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawRectangles(HandleRef graphics, HandleRef pen, RectangleF* rects, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipSaveGraphics( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, out int state); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawArc( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x, float y, float width, float height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawArcI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int x, int y, int width, int height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawLinesI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawBezier( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawEllipse( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x, float y, float width, float height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawEllipseI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int x, int y, int width, int height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawLine( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x1, float y1, float x2, float y2); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawLineI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int x1, int y1, int x2, int y2); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawLines( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawPath( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef path); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawPie( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x, float y, float width, float height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawPieI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int x, int y, int width, int height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawPolygon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawPolygonI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillEllipse( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float x, float y, float width, float height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillEllipseI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int x, int y, int width, int height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillPolygon( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, PointF* points, int count, FillMode brushMode); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillPolygonI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, Point* points, int count, FillMode brushMode); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillRectangle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float x, float y, float width, float height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillRectangleI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int x, int y, int width, int height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillRectangles( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, RectangleF* rects, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillRectanglesI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, Rectangle* rects, int count); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, SetLastError = true)] + internal static partial int GdipDrawString( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, string textString, int length, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, ref RectangleF layoutRect, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef stringFormat, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImageRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int x, int y, int width, int height); - [DllImport(LibraryName, SetLastError = true)] - internal static extern int GdipDrawRectanglesI(HandleRef graphics, HandleRef pen, Rectangle* rects, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGraphicsClear( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int argb); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawClosedCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawClosedCurveI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawClosedCurve2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawClosedCurve2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurveI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurve2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurve2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurve3( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, PointF* points, int count, int offset, int numberOfSegments, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawCurve3I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Point* points, int count, int offset, int numberOfSegments, float tension); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillClosedCurve( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillClosedCurveI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillClosedCurve2( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, PointF* points, int count, float tension, FillMode mode); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillClosedCurve2I( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, Point* points, int count, float tension, FillMode mode); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillPie( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, float x, float y, float width, float height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipFillPieI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef brush, int x, int y, int width, int height, float startAngle, float sweepAngle); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipMeasureString( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, string textString, int length, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, ref RectangleF layoutRect, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef stringFormat, ref RectangleF boundingBox, out int codepointsFitted, out int linesFilled); + + [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode)] + internal static partial int GdipMeasureCharacterRanges( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, string textString, int length, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef font, ref RectangleF layoutRect, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef stringFormat, int characterCount, IntPtr[] region); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImageI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int x, int y); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImage( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, float x, float y); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, PointF* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, Point* points, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImageRectRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcunit, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttributes, Graphics.DrawImageAbort? callback, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef callbackdata); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePointsRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, PointF* points, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcunit, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttributes, Graphics.DrawImageAbort? callback, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef callbackdata); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImageRectRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcunit, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttributes, Graphics.DrawImageAbort? callback, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef callbackdata); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePointsRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, Point* points, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcunit, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef imageAttributes, Graphics.DrawImageAbort? callback, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef callbackdata); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImageRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, float x, float y, float width, float height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePointRect( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, int srcunit); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawImagePointRectI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, int srcunit); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawRectangle( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, float x, float y, float width, float height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawRectangleI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, int x, int y, int width, int height); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawRectangles( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, RectangleF* rects, int count); + + [GeneratedDllImport(LibraryName, SetLastError = true)] + internal static partial int GdipDrawRectanglesI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef pen, Rectangle* rects, int count); - [DllImport(LibraryName)] - internal static extern int GdipTransformPoints(HandleRef graphics, int destSpace, int srcSpace, PointF* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformPoints( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int destSpace, int srcSpace, PointF* points, int count); - [DllImport(LibraryName)] - internal static extern int GdipTransformPointsI(HandleRef graphics, int destSpace, int srcSpace, Point* points, int count); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipTransformPointsI( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef graphics, int destSpace, int srcSpace, Point* points, int count); [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipLoadImageFromFileICM(string filename, out IntPtr image); @@ -1387,36 +3436,46 @@ internal static unsafe partial class Gdip [GeneratedDllImport(LibraryName, CharSet = CharSet.Unicode, ExactSpelling = true)] internal static partial int GdipLoadImageFromFile(string filename, out IntPtr image); - [DllImport(LibraryName)] - internal static extern int GdipGetEncoderParameterListSize(HandleRef image, ref Guid encoder, out int size); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetEncoderParameterListSize( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, ref Guid encoder, out int size); - [DllImport(LibraryName)] - internal static extern int GdipGetEncoderParameterList(HandleRef image, ref Guid encoder, int size, IntPtr buffer); + [GeneratedDllImport(LibraryName)] + internal static partial int GdipGetEncoderParameterList( +#if NET7_0_OR_GREATER + [MarshalUsing(typeof(HandleRefMarshaller))] +#endif + HandleRef image, ref Guid encoder, int size, IntPtr buffer); } [StructLayout(LayoutKind.Sequential)] - internal struct StartupInput + internal struct StartupInputEx { - public int GdiplusVersion; // Must be 1 + public int GdiplusVersion; // Must be 1 or 2 public IntPtr DebugEventCallback; - public bool SuppressBackgroundThread; // FALSE unless you're prepared to call + public Interop.BOOL SuppressBackgroundThread; // FALSE unless you're prepared to call // the hook/unhook functions properly - public bool SuppressExternalCodecs; // FALSE unless you want GDI+ only to use + public Interop.BOOL SuppressExternalCodecs; // FALSE unless you want GDI+ only to use // its internal image codecs. + public int StartupParameters; - public static StartupInput GetDefault() + public static StartupInputEx GetDefault() { OperatingSystem os = Environment.OSVersion; - StartupInput result = default; + StartupInputEx result = default; // In Windows 7 GDI+1.1 story is different as there are different binaries per GDI+ version. bool isWindows7 = os.Platform == PlatformID.Win32NT && os.Version.Major == 6 && os.Version.Minor == 1; result.GdiplusVersion = isWindows7 ? 1 : 2; - result.SuppressBackgroundThread = false; - result.SuppressExternalCodecs = false; + result.SuppressBackgroundThread = Interop.BOOL.FALSE; + result.SuppressExternalCodecs = Interop.BOOL.FALSE; + result.StartupParameters = 0; return result; } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Unix.cs index eb7135c7082139..f38a92fb91178e 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Unix.cs @@ -250,13 +250,8 @@ public void Dispose() GC.SuppressFinalize(this); } - public void DrawBeziers(Pen pen, Point[] points) + public void DrawBeziers(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - int length = points.Length; int status; @@ -278,13 +273,8 @@ public void DrawBeziers(Pen pen, Point[] points) } } - public void DrawBeziers(Pen pen, PointF[] points) + public void DrawBeziers(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - int length = points.Length; int status; @@ -306,34 +296,23 @@ public void DrawBeziers(Pen pen, PointF[] points) } } - public void DrawIcon(Icon icon, Rectangle targetRect) + public void DrawIcon(Icon icon!!, Rectangle targetRect) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - DrawImage(icon.GetInternalBitmap(), targetRect); } - public void DrawIcon(Icon icon, int x, int y) + public void DrawIcon(Icon icon!!, int x, int y) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - DrawImage(icon.GetInternalBitmap(), x, y); } - public void DrawIconUnstretched(Icon icon, Rectangle targetRect) + public void DrawIconUnstretched(Icon icon!!, Rectangle targetRect) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - DrawImageUnscaled(icon.GetInternalBitmap(), targetRect); } - public void DrawLine(Pen pen, float x1, float y1, float x2, float y2) + public void DrawLine(Pen pen!!, float x1, float y1, float x2, float y2) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); if (!float.IsNaN(x1) && !float.IsNaN(y1) && !float.IsNaN(x2) && !float.IsNaN(y2)) { @@ -342,10 +321,8 @@ public void DrawLine(Pen pen, float x1, float y1, float x2, float y2) } } - public void EndContainer(GraphicsContainer container) + public void EndContainer(GraphicsContainer container!!) { - if (container == null) - throw new ArgumentNullException(nameof(container)); int status = Gdip.GdipEndContainer(new HandleRef(this, NativeGraphics), container.nativeGraphicsContainer); Gdip.CheckStatus(status); } @@ -410,24 +387,14 @@ public void EnumerateMetafile(Metafile metafile, PointF destPoint, RectangleF sr throw new NotImplementedException(); } - public void FillPath(Brush brush, GraphicsPath path) + public void FillPath(Brush brush!!, GraphicsPath path!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (path == null) - throw new ArgumentNullException(nameof(path)); - int status = Gdip.GdipFillPath(NativeGraphics, brush.NativeBrush, path._nativePath); Gdip.CheckStatus(status); } - public void FillRegion(Brush brush, Region region) + public void FillRegion(Brush brush!!, Region region!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (region == null) - throw new ArgumentNullException(nameof(region)); - int status = (int)Gdip.GdipFillRegion(new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), new HandleRef(region, region.NativeRegion)); Gdip.CheckStatus(status); } @@ -494,16 +461,12 @@ public static Graphics FromHwndInternal(IntPtr hwnd) return FromHwnd(hwnd); } - public static Graphics FromImage(Image image) + public static Graphics FromImage(Image image!!) { - IntPtr graphics; - - if (image == null) - throw new ArgumentNullException(nameof(image)); - if ((image.PixelFormat & PixelFormat.Indexed) != 0) throw new ArgumentException(SR.CannotCreateGraphics, nameof(image)); + IntPtr graphics; int status = Gdip.GdipGetImageGraphicsContext(image.nativeImage, out graphics); Gdip.CheckStatus(status); Graphics result = new Graphics(graphics, image); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Windows.cs index 475e35a176ceac..1aa55c9ab649c8 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.Windows.cs @@ -109,10 +109,8 @@ public static Graphics FromHwndInternal(IntPtr hwnd) /// /// Creates an instance of the class from an existing . /// - public static Graphics FromImage(Image image) + public static Graphics FromImage(Image image!!) { - if (image == null) - throw new ArgumentNullException(nameof(image)); if ((image.PixelFormat & PixelFormat.Indexed) != 0) throw new ArgumentException(SR.GdiplusCannotCreateGraphicsFromIndexedPixelFormat, nameof(image)); @@ -283,24 +281,16 @@ public Color GetNearestColor(Color color) /// /// Draws a line connecting the two specified points. /// - public void DrawLine(Pen pen, float x1, float y1, float x2, float y2) + public void DrawLine(Pen pen!!, float x1, float y1, float x2, float y2) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawLine(new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), x1, y1, x2, y2)); } /// /// Draws a series of cubic Bezier curves from an array of points. /// - public unsafe void DrawBeziers(Pen pen, PointF[] points) + public unsafe void DrawBeziers(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawBeziers( @@ -313,13 +303,8 @@ public unsafe void DrawBeziers(Pen pen, PointF[] points) /// /// Draws a series of cubic Bezier curves from an array of points. /// - public unsafe void DrawBeziers(Pen pen, Point[] points) + public unsafe void DrawBeziers(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawBeziersI( @@ -333,13 +318,8 @@ public unsafe void DrawBeziers(Pen pen, Point[] points) /// /// Fills the interior of a path. /// - public void FillPath(Brush brush, GraphicsPath path) + public void FillPath(Brush brush!!, GraphicsPath path!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (path == null) - throw new ArgumentNullException(nameof(path)); - CheckErrorStatus(Gdip.GdipFillPath( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -349,24 +329,16 @@ public void FillPath(Brush brush, GraphicsPath path) /// /// Fills the interior of a . /// - public void FillRegion(Brush brush, Region region) + public void FillRegion(Brush brush!!, Region region!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (region == null) - throw new ArgumentNullException(nameof(region)); - CheckErrorStatus(Gdip.GdipFillRegion( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), new HandleRef(region, region.NativeRegion))); } - public void DrawIcon(Icon icon, int x, int y) + public void DrawIcon(Icon icon!!, int x, int y) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - if (_backingImage != null) { // We don't call the icon directly because we want to stay in GDI+ all the time @@ -386,11 +358,8 @@ public void DrawIcon(Icon icon, int x, int y) /// it passes the call to the actual image. This version crops the image to the given /// dimensions and allows the user to specify a rectangle within the image to draw. /// - public void DrawIcon(Icon icon, Rectangle targetRect) + public void DrawIcon(Icon icon!!, Rectangle targetRect) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - if (_backingImage != null) { // We don't call the icon directly because we want to stay in GDI+ all the time @@ -410,11 +379,8 @@ public void DrawIcon(Icon icon, Rectangle targetRect) /// it passes the call to the actual image. This version stretches the image to the given /// dimensions and allows the user to specify a rectangle within the image to draw. /// - public void DrawIconUnstretched(Icon icon, Rectangle targetRect) + public void DrawIconUnstretched(Icon icon!!, Rectangle targetRect) { - if (icon == null) - throw new ArgumentNullException(nameof(icon)); - if (_backingImage != null) { DrawImageUnscaled(icon.ToBitmap(), targetRect); @@ -490,13 +456,11 @@ public void EnumerateMetafile( public unsafe void EnumerateMetafile( Metafile metafile, - PointF[] destPoints, + PointF[] destPoints!!, EnumerateMetafileProc callback, IntPtr callbackData, ImageAttributes? imageAttr) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); if (destPoints.Length != 3) throw new ArgumentException(SR.GdiplusDestPointsInvalidParallelogram); @@ -514,13 +478,11 @@ public unsafe void EnumerateMetafile( public unsafe void EnumerateMetafile( Metafile metafile, - Point[] destPoints, + Point[] destPoints!!, EnumerateMetafileProc callback, IntPtr callbackData, ImageAttributes? imageAttr) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); if (destPoints.Length != 3) throw new ArgumentException(SR.GdiplusDestPointsInvalidParallelogram); @@ -618,15 +580,13 @@ public void EnumerateMetafile( public unsafe void EnumerateMetafile( Metafile metafile, - PointF[] destPoints, + PointF[] destPoints!!, RectangleF srcRect, GraphicsUnit unit, EnumerateMetafileProc callback, IntPtr callbackData, ImageAttributes? imageAttr) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); if (destPoints.Length != 3) throw new ArgumentException(SR.GdiplusDestPointsInvalidParallelogram); @@ -646,15 +606,13 @@ public unsafe void EnumerateMetafile( public unsafe void EnumerateMetafile( Metafile metafile, - Point[] destPoints, + Point[] destPoints!!, Rectangle srcRect, GraphicsUnit unit, EnumerateMetafileProc callback, IntPtr callbackData, ImageAttributes? imageAttr) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); if (destPoints.Length != 3) throw new ArgumentException(SR.GdiplusDestPointsInvalidParallelogram); @@ -907,11 +865,8 @@ public GraphicsContainer BeginContainer() return new GraphicsContainer(state); } - public void EndContainer(GraphicsContainer container) + public void EndContainer(GraphicsContainer container!!) { - if (container == null) - throw new ArgumentNullException(nameof(container)); - Gdip.CheckStatus(Gdip.GdipEndContainer(new HandleRef(this, NativeGraphics), container.nativeGraphicsContainer)); PopContext(container.nativeGraphicsContainer); } @@ -935,11 +890,8 @@ public GraphicsContainer BeginContainer(Rectangle dstrect, Rectangle srcrect, Gr return new GraphicsContainer(state); } - public void AddMetafileComment(byte[] data) + public void AddMetafileComment(byte[] data!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - Gdip.CheckStatus(Gdip.GdipComment(new HandleRef(this, NativeGraphics), data.Length, data)); } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.cs index 9bb60157e61589..6120f55482902a 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Graphics.cs @@ -410,11 +410,8 @@ public void Flush(FlushIntention intention) public void SetClip(Graphics g) => SetClip(g, CombineMode.Replace); - public void SetClip(Graphics g, CombineMode combineMode) + public void SetClip(Graphics g!!, CombineMode combineMode) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - Gdip.CheckStatus(Gdip.GdipSetClipGraphics( new HandleRef(this, NativeGraphics), new HandleRef(g, g.NativeGraphics), @@ -443,22 +440,16 @@ public void SetClip(RectangleF rect, CombineMode combineMode) public void SetClip(GraphicsPath path) => SetClip(path, CombineMode.Replace); - public void SetClip(GraphicsPath path, CombineMode combineMode) + public void SetClip(GraphicsPath path!!, CombineMode combineMode) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipSetClipPath( new HandleRef(this, NativeGraphics), new HandleRef(path, path._nativePath), combineMode)); } - public void SetClip(Region region, CombineMode combineMode) + public void SetClip(Region region!!, CombineMode combineMode) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipSetClipRegion( new HandleRef(this, NativeGraphics), new HandleRef(region, region.NativeRegion), @@ -481,11 +472,8 @@ public void IntersectClip(RectangleF rect) CombineMode.Intersect)); } - public void IntersectClip(Region region) + public void IntersectClip(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipSetClipRegion( new HandleRef(this, NativeGraphics), new HandleRef(region, region.NativeRegion), @@ -500,11 +488,8 @@ public void ExcludeClip(Rectangle rect) CombineMode.Exclude)); } - public void ExcludeClip(Region region) + public void ExcludeClip(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipSetClipRegion( new HandleRef(this, NativeGraphics), new HandleRef(region, region.NativeRegion), @@ -596,11 +581,8 @@ public void ResetTransform() /// /// Multiplies the that represents the world transform and . /// - public void MultiplyTransform(Matrix matrix, MatrixOrder order) + public void MultiplyTransform(Matrix matrix!!, MatrixOrder order) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); - // Multiplying the transform by a disposed matrix is a nop in GDI+, but throws // with the libgdiplus backend. Simulate a nop for compatability with GDI+. if (matrix.NativeMatrix == IntPtr.Zero) @@ -634,11 +616,8 @@ public void RotateTransform(float angle, MatrixOrder order) /// /// Draws an arc from the specified ellipse. /// - public void DrawArc(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) + public void DrawArc(Pen pen!!, float x, float y, float width, float height, float startAngle, float sweepAngle) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawArc( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -658,11 +637,8 @@ public void DrawArc(Pen pen, RectangleF rect, float startAngle, float sweepAngle /// /// Draws an arc from the specified ellipse. /// - public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle) + public void DrawArc(Pen pen!!, int x, int y, int width, int height, int startAngle, int sweepAngle) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawArcI( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -682,11 +658,8 @@ public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle) /// /// Draws a cubic bezier curve defined by four ordered pairs that represent points. /// - public void DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) + public void DrawBezier(Pen pen!!, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawBezier( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), x1, y1, x2, y2, x3, y3, x4, y4)); @@ -729,11 +702,8 @@ public void DrawRectangle(Pen pen, Rectangle rect) /// /// Draws the outline of the specified rectangle. /// - public void DrawRectangle(Pen pen, float x, float y, float width, float height) + public void DrawRectangle(Pen pen!!, float x, float y, float width, float height) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawRectangle( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), x, y, width, height)); @@ -742,11 +712,8 @@ public void DrawRectangle(Pen pen, float x, float y, float width, float height) /// /// Draws the outline of the specified rectangle. /// - public void DrawRectangle(Pen pen, int x, int y, int width, int height) + public void DrawRectangle(Pen pen!!, int x, int y, int width, int height) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawRectangleI( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), x, y, width, height)); @@ -755,13 +722,8 @@ public void DrawRectangle(Pen pen, int x, int y, int width, int height) /// /// Draws the outlines of a series of rectangles. /// - public unsafe void DrawRectangles(Pen pen, RectangleF[] rects) + public unsafe void DrawRectangles(Pen pen!!, RectangleF[] rects!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (rects == null) - throw new ArgumentNullException(nameof(rects)); - fixed (RectangleF* r = rects) { CheckErrorStatus(Gdip.GdipDrawRectangles( @@ -773,13 +735,8 @@ public unsafe void DrawRectangles(Pen pen, RectangleF[] rects) /// /// Draws the outlines of a series of rectangles. /// - public unsafe void DrawRectangles(Pen pen, Rectangle[] rects) + public unsafe void DrawRectangles(Pen pen!!, Rectangle[] rects!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (rects == null) - throw new ArgumentNullException(nameof(rects)); - fixed (Rectangle* r = rects) { CheckErrorStatus(Gdip.GdipDrawRectanglesI( @@ -799,11 +756,8 @@ public void DrawEllipse(Pen pen, RectangleF rect) /// /// Draws the outline of an ellipse defined by a bounding rectangle. /// - public void DrawEllipse(Pen pen, float x, float y, float width, float height) + public void DrawEllipse(Pen pen!!, float x, float y, float width, float height) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawEllipse( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -821,11 +775,8 @@ public void DrawEllipse(Pen pen, Rectangle rect) /// /// Draws the outline of an ellipse defined by a bounding rectangle. /// - public void DrawEllipse(Pen pen, int x, int y, int width, int height) + public void DrawEllipse(Pen pen!!, int x, int y, int width, int height) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawEllipseI( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -843,11 +794,8 @@ public void DrawPie(Pen pen, RectangleF rect, float startAngle, float sweepAngle /// /// Draws the outline of a pie section defined by an ellipse and two radial lines. /// - public void DrawPie(Pen pen, float x, float y, float width, float height, float startAngle, float sweepAngle) + public void DrawPie(Pen pen!!, float x, float y, float width, float height, float startAngle, float sweepAngle) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawPie( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -867,11 +815,8 @@ public void DrawPie(Pen pen, Rectangle rect, float startAngle, float sweepAngle) /// /// Draws the outline of a pie section defined by an ellipse and two radial lines. /// - public void DrawPie(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle) + public void DrawPie(Pen pen!!, int x, int y, int width, int height, int startAngle, int sweepAngle) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawPieI( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -883,13 +828,8 @@ public void DrawPie(Pen pen, int x, int y, int width, int height, int startAngle /// /// Draws the outline of a polygon defined by an array of points. /// - public unsafe void DrawPolygon(Pen pen, PointF[] points) + public unsafe void DrawPolygon(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawPolygon( @@ -901,13 +841,8 @@ public unsafe void DrawPolygon(Pen pen, PointF[] points) /// /// Draws the outline of a polygon defined by an array of points. /// - public unsafe void DrawPolygon(Pen pen, Point[] points) + public unsafe void DrawPolygon(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawPolygonI( @@ -919,13 +854,8 @@ public unsafe void DrawPolygon(Pen pen, Point[] points) /// /// Draws the lines and curves defined by a . /// - public void DrawPath(Pen pen, GraphicsPath path) + public void DrawPath(Pen pen!!, GraphicsPath path!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (path == null) - throw new ArgumentNullException(nameof(path)); - CheckErrorStatus(Gdip.GdipDrawPath( new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), @@ -935,13 +865,8 @@ public void DrawPath(Pen pen, GraphicsPath path) /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, PointF[] points) + public unsafe void DrawCurve(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawCurve( @@ -954,13 +879,8 @@ public unsafe void DrawCurve(Pen pen, PointF[] points) /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, PointF[] points, float tension) + public unsafe void DrawCurve(Pen pen!!, PointF[] points!!, float tension) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawCurve2( @@ -979,13 +899,8 @@ public void DrawCurve(Pen pen, PointF[] points, int offset, int numberOfSegments /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, PointF[] points, int offset, int numberOfSegments, float tension) + public unsafe void DrawCurve(Pen pen!!, PointF[] points!!, int offset, int numberOfSegments, float tension) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawCurve3( @@ -1001,13 +916,8 @@ public unsafe void DrawCurve(Pen pen, PointF[] points, int offset, int numberOfS /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, Point[] points) + public unsafe void DrawCurve(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawCurveI( @@ -1020,13 +930,8 @@ public unsafe void DrawCurve(Pen pen, Point[] points) /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, Point[] points, float tension) + public unsafe void DrawCurve(Pen pen!!, Point[] points!!, float tension) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawCurve2I( @@ -1040,13 +945,8 @@ public unsafe void DrawCurve(Pen pen, Point[] points, float tension) /// /// Draws a curve defined by an array of points. /// - public unsafe void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension) + public unsafe void DrawCurve(Pen pen!!, Point[] points!!, int offset, int numberOfSegments, float tension) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawCurve3I( @@ -1062,13 +962,8 @@ public unsafe void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSe /// /// Draws a closed curve defined by an array of points. /// - public unsafe void DrawClosedCurve(Pen pen, PointF[] points) + public unsafe void DrawClosedCurve(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawClosedCurve( @@ -1081,13 +976,8 @@ public unsafe void DrawClosedCurve(Pen pen, PointF[] points) /// /// Draws a closed curve defined by an array of points. /// - public unsafe void DrawClosedCurve(Pen pen, PointF[] points, float tension, FillMode fillmode) + public unsafe void DrawClosedCurve(Pen pen!!, PointF[] points!!, float tension, FillMode fillmode) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawClosedCurve2( @@ -1101,13 +991,8 @@ public unsafe void DrawClosedCurve(Pen pen, PointF[] points, float tension, Fill /// /// Draws a closed curve defined by an array of points. /// - public unsafe void DrawClosedCurve(Pen pen, Point[] points) + public unsafe void DrawClosedCurve(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawClosedCurveI( @@ -1120,13 +1005,8 @@ public unsafe void DrawClosedCurve(Pen pen, Point[] points) /// /// Draws a closed curve defined by an array of points. /// - public unsafe void DrawClosedCurve(Pen pen, Point[] points, float tension, FillMode fillmode) + public unsafe void DrawClosedCurve(Pen pen!!, Point[] points!!, float tension, FillMode fillmode) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawClosedCurve2I( @@ -1156,11 +1036,8 @@ public void FillRectangle(Brush brush, RectangleF rect) /// /// Fills the interior of a rectangle with a . /// - public void FillRectangle(Brush brush, float x, float y, float width, float height) + public void FillRectangle(Brush brush!!, float x, float y, float width, float height) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillRectangle( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1178,11 +1055,8 @@ public void FillRectangle(Brush brush, Rectangle rect) /// /// Fills the interior of a rectangle with a . /// - public void FillRectangle(Brush brush, int x, int y, int width, int height) + public void FillRectangle(Brush brush!!, int x, int y, int width, int height) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillRectangleI( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1192,13 +1066,8 @@ public void FillRectangle(Brush brush, int x, int y, int width, int height) /// /// Fills the interiors of a series of rectangles with a . /// - public unsafe void FillRectangles(Brush brush, RectangleF[] rects) + public unsafe void FillRectangles(Brush brush!!, RectangleF[] rects!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (rects == null) - throw new ArgumentNullException(nameof(rects)); - fixed (RectangleF* r = rects) { CheckErrorStatus(Gdip.GdipFillRectangles( @@ -1211,13 +1080,8 @@ public unsafe void FillRectangles(Brush brush, RectangleF[] rects) /// /// Fills the interiors of a series of rectangles with a . /// - public unsafe void FillRectangles(Brush brush, Rectangle[] rects) + public unsafe void FillRectangles(Brush brush!!, Rectangle[] rects!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (rects == null) - throw new ArgumentNullException(nameof(rects)); - fixed (Rectangle* r = rects) { CheckErrorStatus(Gdip.GdipFillRectanglesI( @@ -1238,13 +1102,8 @@ public void FillPolygon(Brush brush, PointF[] points) /// /// Fills the interior of a polygon defined by an array of points. /// - public unsafe void FillPolygon(Brush brush, PointF[] points, FillMode fillMode) + public unsafe void FillPolygon(Brush brush!!, PointF[] points!!, FillMode fillMode) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipFillPolygon( @@ -1266,13 +1125,8 @@ public void FillPolygon(Brush brush, Point[] points) /// /// Fills the interior of a polygon defined by an array of points. /// - public unsafe void FillPolygon(Brush brush, Point[] points, FillMode fillMode) + public unsafe void FillPolygon(Brush brush!!, Point[] points!!, FillMode fillMode) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipFillPolygonI( @@ -1294,11 +1148,8 @@ public void FillEllipse(Brush brush, RectangleF rect) /// /// Fills the interior of an ellipse defined by a bounding rectangle. /// - public void FillEllipse(Brush brush, float x, float y, float width, float height) + public void FillEllipse(Brush brush!!, float x, float y, float width, float height) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillEllipse( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1316,11 +1167,8 @@ public void FillEllipse(Brush brush, Rectangle rect) /// /// Fills the interior of an ellipse defined by a bounding rectangle. /// - public void FillEllipse(Brush brush, int x, int y, int width, int height) + public void FillEllipse(Brush brush!!, int x, int y, int width, int height) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillEllipseI( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1350,11 +1198,8 @@ public void FillPie(Brush brush, RectangleF rect, float startAngle, float sweepA /// /// Fills the interior of a pie section defined by an ellipse and two radial lines. /// - public void FillPie(Brush brush, float x, float y, float width, float height, float startAngle, float sweepAngle) + public void FillPie(Brush brush!!, float x, float y, float width, float height, float startAngle, float sweepAngle) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillPie( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1366,11 +1211,8 @@ public void FillPie(Brush brush, float x, float y, float width, float height, fl /// /// Fills the interior of a pie section defined by an ellipse and two radial lines. /// - public void FillPie(Brush brush, int x, int y, int width, int height, int startAngle, int sweepAngle) + public void FillPie(Brush brush!!, int x, int y, int width, int height, int startAngle, int sweepAngle) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - CheckErrorStatus(Gdip.GdipFillPieI( new HandleRef(this, NativeGraphics), new HandleRef(brush, brush.NativeBrush), @@ -1382,13 +1224,8 @@ public void FillPie(Brush brush, int x, int y, int width, int height, int startA /// /// Fills the interior a closed curve defined by an array of points. /// - public unsafe void FillClosedCurve(Brush brush, PointF[] points) + public unsafe void FillClosedCurve(Brush brush!!, PointF[] points!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipFillClosedCurve( @@ -1406,13 +1243,8 @@ public void FillClosedCurve(Brush brush, PointF[] points, FillMode fillmode) FillClosedCurve(brush, points, fillmode, 0.5f); } - public unsafe void FillClosedCurve(Brush brush, PointF[] points, FillMode fillmode, float tension) + public unsafe void FillClosedCurve(Brush brush!!, PointF[] points!!, FillMode fillmode, float tension) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipFillClosedCurve2( @@ -1427,13 +1259,8 @@ public unsafe void FillClosedCurve(Brush brush, PointF[] points, FillMode fillmo /// /// Fills the interior a closed curve defined by an array of points. /// - public unsafe void FillClosedCurve(Brush brush, Point[] points) + public unsafe void FillClosedCurve(Brush brush!!, Point[] points!!) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipFillClosedCurveI( @@ -1448,13 +1275,8 @@ public void FillClosedCurve(Brush brush, Point[] points, FillMode fillmode) FillClosedCurve(brush, points, fillmode, 0.5f); } - public unsafe void FillClosedCurve(Brush brush, Point[] points, FillMode fillmode, float tension) + public unsafe void FillClosedCurve(Brush brush!!, Point[] points!!, FillMode fillmode, float tension) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipFillClosedCurve2I( @@ -1494,10 +1316,8 @@ public void DrawString(string? s, Font font, Brush brush, RectangleF layoutRecta DrawString(s, font, brush, layoutRectangle, null); } - public void DrawString(string? s, Font font, Brush brush, RectangleF layoutRectangle, StringFormat? format) + public void DrawString(string? s, Font font, Brush brush!!, RectangleF layoutRectangle, StringFormat? format) { - if (brush == null) - throw new ArgumentNullException(nameof(brush)); if (string.IsNullOrEmpty(s)) return; if (font == null) @@ -1654,11 +1474,8 @@ public void DrawImage(Image image, PointF point) DrawImage(image, point.X, point.Y); } - public void DrawImage(Image image, float x, float y) + public void DrawImage(Image image!!, float x, float y) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImage( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), x, y); @@ -1672,11 +1489,8 @@ public void DrawImage(Image image, RectangleF rect) DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height); } - public void DrawImage(Image image, float x, float y, float width, float height) + public void DrawImage(Image image!!, float x, float y, float width, float height) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRect( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1692,11 +1506,8 @@ public void DrawImage(Image image, Point point) DrawImage(image, point.X, point.Y); } - public void DrawImage(Image image, int x, int y) + public void DrawImage(Image image!!, int x, int y) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageI( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1711,11 +1522,8 @@ public void DrawImage(Image image, Rectangle rect) DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height); } - public void DrawImage(Image image, int x, int y, int width, int height) + public void DrawImage(Image image!!, int x, int y, int width, int height) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRectI( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1746,11 +1554,8 @@ public void DrawImageUnscaled(Image image, int x, int y, int width, int height) DrawImage(image, x, y); } - public void DrawImageUnscaledAndClipped(Image image, Rectangle rect) + public void DrawImageUnscaledAndClipped(Image image!!, Rectangle rect) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int width = Math.Min(rect.Width, image.Width); int height = Math.Min(rect.Height, image.Height); @@ -1769,13 +1574,8 @@ public void DrawImageUnscaledAndClipped(Image image, Rectangle rect) // // @notes Perspective blt only works for bitmap images. - public unsafe void DrawImage(Image image, PointF[] destPoints) + public unsafe void DrawImage(Image image!!, PointF[] destPoints!!) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - if (image == null) - throw new ArgumentNullException(nameof(image)); - int count = destPoints.Length; if (count != 3 && count != 4) throw new ArgumentException(SR.GdiplusDestPointsInvalidLength); @@ -1792,13 +1592,8 @@ public unsafe void DrawImage(Image image, PointF[] destPoints) } } - public unsafe void DrawImage(Image image, Point[] destPoints) + public unsafe void DrawImage(Image image!!, Point[] destPoints!!) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - if (image == null) - throw new ArgumentNullException(nameof(image)); - int count = destPoints.Length; if (count != 3 && count != 4) throw new ArgumentException(SR.GdiplusDestPointsInvalidLength); @@ -1815,11 +1610,8 @@ public unsafe void DrawImage(Image image, Point[] destPoints) } } - public void DrawImage(Image image, float x, float y, RectangleF srcRect, GraphicsUnit srcUnit) + public void DrawImage(Image image!!, float x, float y, RectangleF srcRect, GraphicsUnit srcUnit) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImagePointRect( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1831,11 +1623,8 @@ public void DrawImage(Image image, float x, float y, RectangleF srcRect, Graphic CheckErrorStatus(status); } - public void DrawImage(Image image, int x, int y, Rectangle srcRect, GraphicsUnit srcUnit) + public void DrawImage(Image image!!, int x, int y, Rectangle srcRect, GraphicsUnit srcUnit) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImagePointRectI( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1847,11 +1636,8 @@ public void DrawImage(Image image, int x, int y, Rectangle srcRect, GraphicsUnit CheckErrorStatus(status); } - public void DrawImage(Image image, RectangleF destRect, RectangleF srcRect, GraphicsUnit srcUnit) + public void DrawImage(Image image!!, RectangleF destRect, RectangleF srcRect, GraphicsUnit srcUnit) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRectRect( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1866,11 +1652,8 @@ public void DrawImage(Image image, RectangleF destRect, RectangleF srcRect, Grap CheckErrorStatus(status); } - public void DrawImage(Image image, Rectangle destRect, Rectangle srcRect, GraphicsUnit srcUnit) + public void DrawImage(Image image!!, Rectangle destRect, Rectangle srcRect, GraphicsUnit srcUnit) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRectRectI( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -1885,13 +1668,8 @@ public void DrawImage(Image image, Rectangle destRect, Rectangle srcRect, Graphi CheckErrorStatus(status); } - public unsafe void DrawImage(Image image, PointF[] destPoints, RectangleF srcRect, GraphicsUnit srcUnit) + public unsafe void DrawImage(Image image!!, PointF[] destPoints!!, RectangleF srcRect, GraphicsUnit srcUnit) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - if (image == null) - throw new ArgumentNullException(nameof(image)); - int count = destPoints.Length; if (count != 3 && count != 4) throw new ArgumentException(SR.GdiplusDestPointsInvalidLength); @@ -1930,19 +1708,14 @@ public void DrawImage( } public unsafe void DrawImage( - Image image, - PointF[] destPoints, + Image image!!, + PointF[] destPoints!!, RectangleF srcRect, GraphicsUnit srcUnit, ImageAttributes? imageAttr, DrawImageAbort? callback, int callbackData) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - if (image == null) - throw new ArgumentNullException(nameof(image)); - int count = destPoints.Length; if (count != 3 && count != 4) throw new ArgumentException(SR.GdiplusDestPointsInvalidLength); @@ -1991,19 +1764,14 @@ public void DrawImage( } public unsafe void DrawImage( - Image image, - Point[] destPoints, + Image image!!, + Point[] destPoints!!, Rectangle srcRect, GraphicsUnit srcUnit, ImageAttributes? imageAttr, DrawImageAbort? callback, int callbackData) { - if (destPoints == null) - throw new ArgumentNullException(nameof(destPoints)); - if (image == null) - throw new ArgumentNullException(nameof(image)); - int count = destPoints.Length; if (count != 3 && count != 4) throw new ArgumentException(SR.GdiplusDestPointsInvalidLength); @@ -2065,7 +1833,7 @@ public void DrawImage( } public void DrawImage( - Image image, + Image image!!, Rectangle destRect, float srcX, float srcY, @@ -2076,9 +1844,6 @@ public void DrawImage( DrawImageAbort? callback, IntPtr callbackData) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRectRect( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -2133,7 +1898,7 @@ public void DrawImage( } public void DrawImage( - Image image, + Image image!!, Rectangle destRect, int srcX, int srcY, @@ -2144,9 +1909,6 @@ public void DrawImage( DrawImageAbort? callback, IntPtr callbackData) { - if (image == null) - throw new ArgumentNullException(nameof(image)); - int status = Gdip.GdipDrawImageRectRectI( new HandleRef(this, NativeGraphics), new HandleRef(image, image.nativeImage), @@ -2172,13 +1934,8 @@ public void DrawLine(Pen pen, PointF pt1, PointF pt2) /// /// Draws a series of line segments that connect an array of points. /// - public unsafe void DrawLines(Pen pen, PointF[] points) + public unsafe void DrawLines(Pen pen!!, PointF[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (PointF* p = points) { CheckErrorStatus(Gdip.GdipDrawLines( @@ -2192,11 +1949,8 @@ public unsafe void DrawLines(Pen pen, PointF[] points) /// /// Draws a line connecting the two specified points. /// - public void DrawLine(Pen pen, int x1, int y1, int x2, int y2) + public void DrawLine(Pen pen!!, int x1, int y1, int x2, int y2) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - CheckErrorStatus(Gdip.GdipDrawLineI(new HandleRef(this, NativeGraphics), new HandleRef(pen, pen.NativePen), x1, y1, x2, y2)); } @@ -2211,13 +1965,8 @@ public void DrawLine(Pen pen, Point pt1, Point pt2) /// /// Draws a series of line segments that connect an array of points. /// - public unsafe void DrawLines(Pen pen, Point[] points) + public unsafe void DrawLines(Pen pen!!, Point[] points!!) { - if (pen == null) - throw new ArgumentNullException(nameof(pen)); - if (points == null) - throw new ArgumentNullException(nameof(points)); - fixed (Point* p = points) { CheckErrorStatus(Gdip.GdipDrawLinesI( @@ -2443,11 +2192,8 @@ public void EnumerateMetafile( EnumerateMetafile(metafile, destPoints, srcRect, srcUnit, callback, callbackData, null); } - public unsafe void TransformPoints(CoordinateSpace destSpace, CoordinateSpace srcSpace, PointF[] pts) + public unsafe void TransformPoints(CoordinateSpace destSpace, CoordinateSpace srcSpace, PointF[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (PointF* p = pts) { Gdip.CheckStatus(Gdip.GdipTransformPoints( @@ -2459,11 +2205,8 @@ public unsafe void TransformPoints(CoordinateSpace destSpace, CoordinateSpace sr } } - public unsafe void TransformPoints(CoordinateSpace destSpace, CoordinateSpace srcSpace, Point[] pts) + public unsafe void TransformPoints(CoordinateSpace destSpace, CoordinateSpace srcSpace, Point[] pts!!) { - if (pts == null) - throw new ArgumentNullException(nameof(pts)); - fixed (Point* p = pts) { Gdip.CheckStatus(Gdip.GdipTransformPointsI( diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Unix.cs index 9cb8421417051b..ba97e2636f8e3b 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Unix.cs @@ -144,11 +144,8 @@ public Icon(Icon original, int width, int height) { } - public Icon(Icon original, Size size) + public Icon(Icon original!!, Size size) { - if (original == null) - throw new ArgumentNullException(nameof(original)); - iconSize = size; iconDir = original.iconDir; @@ -238,11 +235,8 @@ public Icon(string fileName) } } - public Icon(Type type, string resource) + public Icon(Type type, string resource!!) { - if (resource == null) - throw new ArgumentNullException(nameof(resource)); - // For compatibility with the .NET Framework if (type == null) throw new NullReferenceException(); @@ -309,10 +303,8 @@ void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) si.AddValue("IconData", ms.ToArray()); // Do not rename (binary serialization) } - public static Icon ExtractAssociatedIcon(string filePath) + public static Icon ExtractAssociatedIcon(string filePath!!) { - if (filePath == null) - throw new ArgumentNullException(nameof(filePath)); if (string.IsNullOrEmpty(filePath)) throw new ArgumentException(SR.NullOrEmptyPath, nameof(filePath)); if (!File.Exists(filePath)) @@ -712,11 +704,8 @@ public int Width Dispose(); } - private void InitFromStreamWithSize(Stream stream, int width, int height) + private void InitFromStreamWithSize(Stream stream!!, int width, int height) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - if (stream.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidPictureType, "picture", nameof(stream))); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.NoCOMWrappers.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.NoCOMWrappers.cs index 124ce9f3a7bda1..43effdee1c1b3b 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.NoCOMWrappers.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.NoCOMWrappers.cs @@ -27,10 +27,11 @@ public void Save(Stream outputStream) // OLE to do it for us. PICTDESC pictdesc = PICTDESC.CreateIconPICTDESC(Handle); Guid g = typeof(IPicture).GUID; - IPicture picture = OleCreatePictureIndirect(pictdesc, ref g, false); - - if (picture != null) + IntPtr iPicturePtr = OleCreatePictureIndirect(pictdesc, ref g, false); + if (iPicturePtr != IntPtr.Zero) { + IPicture picture = (IPicture)Marshal.GetObjectForIUnknown(iPicturePtr); + Marshal.Release(iPicturePtr); try { ArgumentNullException.ThrowIfNull(outputStream); @@ -45,8 +46,8 @@ public void Save(Stream outputStream) } } - [DllImport(Interop.Libraries.Oleaut32, PreserveSig = false)] - internal static extern IPicture OleCreatePictureIndirect(PICTDESC pictdesc, [In]ref Guid refiid, bool fOwn); + [GeneratedDllImport(Interop.Libraries.Oleaut32, PreserveSig = false)] + internal static partial IntPtr OleCreatePictureIndirect(in PICTDESC pictdesc, in Guid refiid, bool fOwn); [ComImport] [Guid("7BF80980-BF32-101A-8BBB-00AA00300CAB")] @@ -92,7 +93,7 @@ int SaveAsFile([In, MarshalAs(UnmanagedType.Interface)] Interop.Ole32.IStream ps } [StructLayout(LayoutKind.Sequential)] - internal sealed class PICTDESC + internal struct PICTDESC { internal int cbSizeOfStruct; public int picType; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.cs index 1ee3b3705ecf1d..885e2668c40f00 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Icon.Windows.cs @@ -82,13 +82,8 @@ public Icon(Icon original, Size size) : this(original, size.Width, size.Height) { } - public Icon(Icon original, int width, int height) : this() + public Icon(Icon original!!, int width, int height) : this() { - if (original == null) - { - throw new ArgumentNullException(nameof(original)); - } - _iconData = original._iconData; if (_iconData == null) @@ -102,11 +97,8 @@ public Icon(Icon original, int width, int height) : this() } } - public Icon(Type type, string resource) : this() + public Icon(Type type, string resource!!) : this() { - if (resource == null) - throw new ArgumentNullException(nameof(resource)); - Stream? stream = type.Module.Assembly.GetManifestResourceStream(type, resource); if (stream == null) { @@ -126,13 +118,8 @@ public Icon(Stream stream, Size size) : this(stream, size.Width, size.Height) { } - public Icon(Stream stream, int width, int height) : this() + public Icon(Stream stream!!, int width, int height) : this() { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - _iconData = new byte[(int)stream.Length]; stream.Read(_iconData, 0, _iconData.Length); Initialize(width, height); @@ -163,13 +150,8 @@ void ISerializable.GetObjectData(SerializationInfo si, StreamingContext context) public static Icon? ExtractAssociatedIcon(string filePath) => ExtractAssociatedIcon(filePath, 0); - private static unsafe Icon? ExtractAssociatedIcon(string filePath, int index) + private static unsafe Icon? ExtractAssociatedIcon(string filePath!!, int index) { - if (filePath == null) - { - throw new ArgumentNullException(nameof(filePath)); - } - if (string.IsNullOrEmpty(filePath)) throw new ArgumentException(SR.NullOrEmptyPath, nameof(filePath)); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Unix.cs index c12a3695349381..27b994fa9d4727 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Unix.cs @@ -57,20 +57,14 @@ public static Image FromStream(Stream stream, bool useEmbeddedColorManagement, b return LoadFromStream(stream, false); } - internal static Image LoadFromStream(Stream stream, bool keepAlive) + internal static Image LoadFromStream(Stream stream!!, bool keepAlive) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - Image img = CreateImageObject(InitializeFromStream(stream)); return img; } - private protected static IntPtr InitializeFromStream(Stream stream) + private protected static IntPtr InitializeFromStream(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - // Unix, with libgdiplus // We use a custom API for this, because there's no easy way // to get the Stream down to libgdiplus. So, we wrap the stream @@ -159,11 +153,8 @@ public void Save(string filename, ImageFormat format) Save(filename, encoder, null); } - public void Save(string filename, ImageCodecInfo encoder, EncoderParameters? encoderParams) + public void Save(string filename!!, ImageCodecInfo encoder, EncoderParameters? encoderParams) { - if (filename == null) - throw new ArgumentNullException(nameof(filename)); - ThrowIfDirectoryDoesntExist(filename); int st; @@ -291,12 +282,8 @@ internal ColorPalette retrieveGDIPalette() } } - internal void storeGDIPalette(ColorPalette palette) + internal void storeGDIPalette(ColorPalette palette!!) { - if (palette == null) - { - throw new ArgumentNullException(nameof(palette)); - } IntPtr palette_data = palette.ConvertToMemory(); if (palette_data == IntPtr.Zero) { diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Windows.cs index b561398144222e..2e625f36e9b557 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Image.Windows.cs @@ -18,11 +18,8 @@ public abstract partial class Image private string allocationSite = Graphics.GetAllocationStack(); #endif - public static Image FromStream(Stream stream, bool useEmbeddedColorManagement, bool validateImageData) + public static Image FromStream(Stream stream!!, bool useEmbeddedColorManagement, bool validateImageData) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - IntPtr image = LoadGdipImageFromStream(new GPStream(stream), useEmbeddedColorManagement); if (validateImageData) @@ -114,11 +111,8 @@ protected virtual void Dispose(bool disposing) /// /// Saves this to the specified file in the specified format. /// - public void Save(string filename, ImageFormat format) + public void Save(string filename, ImageFormat format!!) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - ImageCodecInfo? codec = format.FindEncoder(); if (codec == null) @@ -130,13 +124,8 @@ public void Save(string filename, ImageFormat format) /// /// Saves this to the specified file in the specified format and with the specified encoder parameters. /// - public void Save(string filename, ImageCodecInfo encoder, EncoderParameters? encoderParams) + public void Save(string filename!!, ImageCodecInfo encoder!!, EncoderParameters? encoderParams) { - if (filename == null) - throw new ArgumentNullException(nameof(filename)); - if (encoder == null) - throw new ArgumentNullException(nameof(encoder)); - ThrowIfDirectoryDoesntExist(filename); IntPtr encoderParamsMemory = IntPtr.Zero; @@ -199,11 +188,8 @@ private void Save(MemoryStream stream) /// /// Saves this to the specified stream in the specified format. /// - public void Save(Stream stream, ImageFormat format) + public void Save(Stream stream, ImageFormat format!!) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - ImageCodecInfo codec = format.FindEncoder()!; Save(stream, codec, null); } @@ -211,13 +197,8 @@ public void Save(Stream stream, ImageFormat format) /// /// Saves this to the specified stream in the specified format. /// - public void Save(Stream stream, ImageCodecInfo encoder, EncoderParameters? encoderParams) + public void Save(Stream stream!!, ImageCodecInfo encoder!!, EncoderParameters? encoderParams) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - if (encoder == null) - throw new ArgumentNullException(nameof(encoder)); - IntPtr encoderParamsMemory = IntPtr.Zero; if (encoderParams != null) @@ -290,12 +271,9 @@ public void SaveAdd(EncoderParameters? encoderParams) /// /// Adds an to the specified . /// - public void SaveAdd(Image image, EncoderParameters? encoderParams) + public void SaveAdd(Image image!!, EncoderParameters? encoderParams) { IntPtr encoder = IntPtr.Zero; - - if (image == null) - throw new ArgumentNullException(nameof(image)); if (encoderParams != null) encoder = encoderParams.ConvertToMemory(); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/BitmapData.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/BitmapData.cs index 3e4243351d407d..c5a728914bcfe8 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/BitmapData.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/BitmapData.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.Runtime.CompilerServices; +using System.Runtime.InteropServices; + namespace System.Drawing.Imaging { public partial class BitmapData @@ -91,5 +94,22 @@ public int Reserved get { return _reserved; } set { _reserved = value; } } + + internal ref int GetPinnableReference() => ref _width; + +#if NET7_0_OR_GREATER + internal unsafe struct PinningMarshaller + { + private readonly BitmapData _managed; + public PinningMarshaller(BitmapData managed) + { + _managed = managed; + } + + public ref int GetPinnableReference() => ref (_managed is null ? ref Unsafe.NullRef() : ref _managed.GetPinnableReference()); + + public void* Value => Unsafe.AsPointer(ref GetPinnableReference()); + } +#endif } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/ColorMatrix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/ColorMatrix.cs index 62c4babfeeafce..707ff68721669b 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/ColorMatrix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/ColorMatrix.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace System.Drawing.Imaging @@ -391,5 +392,22 @@ internal float[][] GetMatrix() SetMatrix(tempMatrix); } } + + internal ref float GetPinnableReference() => ref _matrix00; + +#if NET7_0_OR_GREATER + internal unsafe struct PinningMarshaller + { + private readonly ColorMatrix _managed; + public PinningMarshaller(ColorMatrix managed) + { + _managed = managed; + } + + public ref float GetPinnableReference() => ref (_managed is null ? ref Unsafe.NullRef() : ref _managed.GetPinnableReference()); + + public void* Value => Unsafe.AsPointer(ref GetPinnableReference()); + } +#endif } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Unix.cs index c44caf6e03f82d..d0ef6065bdde42 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Unix.cs @@ -137,5 +137,7 @@ public short Version get { return wmf.version; } set { wmf.version = value; } } + + internal WmfMetaHeader GetNativeValue() => wmf; } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Windows.cs index 8e8cc9eefb71d0..f1a501314d921e 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetaHeader.Windows.cs @@ -12,21 +12,30 @@ public sealed class MetaHeader // Extreme care should be taken if changing the layout of the corresponding managaed // structures to minimize the risk of buffer overruns. The affected managed classes // are the following: ENHMETAHEADER, MetaHeader, MetafileHeaderWmf, MetafileHeaderEmf. - private short _type; - private short _headerSize; - private short _version; - private int _size; - private short _noObjects; - private int _maxRecord; - private short _noParameters; + private WmfMetaHeader _data; + + public MetaHeader() + { + } + + internal MetaHeader(WmfMetaHeader header) + { + _data._type = header._type; + _data._headerSize = header._headerSize; + _data._version = header._version; + _data._size = header._size; + _data._noObjects = header._noObjects; + _data._maxRecord = header._maxRecord; + _data._noParameters = header._noParameters; + } /// /// Represents the type of the associated . /// public short Type { - get { return _type; } - set { _type = value; } + get { return _data._type; } + set { _data._type = value; } } /// @@ -34,8 +43,8 @@ public short Type /// public short HeaderSize { - get { return _headerSize; } - set { _headerSize = value; } + get { return _data._headerSize; } + set { _data._headerSize = value; } } /// @@ -43,8 +52,8 @@ public short HeaderSize /// public short Version { - get { return _version; } - set { _version = value; } + get { return _data._version; } + set { _data._version = value; } } /// @@ -52,26 +61,40 @@ public short Version /// public int Size { - get { return _size; } - set { _size = value; } + get { return _data._size; } + set { _data._size = value; } } public short NoObjects { - get { return _noObjects; } - set { _noObjects = value; } + get { return _data._noObjects; } + set { _data._noObjects = value; } } public int MaxRecord { - get { return _maxRecord; } - set { _maxRecord = value; } + get { return _data._maxRecord; } + set { _data._maxRecord = value; } } public short NoParameters { - get { return _noParameters; } - set { _noParameters = value; } + get { return _data._noParameters; } + set { _data._noParameters = value; } } + + internal WmfMetaHeader GetNativeValue() => _data; + } + + [StructLayout(LayoutKind.Sequential, Pack = 2)] + internal struct WmfMetaHeader + { + internal short _type; + internal short _headerSize; + internal short _version; + internal int _size; + internal short _noObjects; + internal int _maxRecord; + internal short _noParameters; } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Unix.cs index 06ce78264e8c74..cca9e7cd64cfcb 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Unix.cs @@ -136,11 +136,8 @@ internal void GraphicsDisposed() // (when using MS GDI+ and IStream we must ensure the stream stays alive for all the life of the Image) internal Metafile(IntPtr ptr, Stream stream) => SetNativeImage(ptr); - public Metafile(Stream stream) + public Metafile(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - // With libgdiplus we use a custom API for this, because there's no easy way // to get the Stream down to libgdiplus. So, we wrap the stream with a set of delegates. GdiPlusStreamHelper sh = new GdiPlusStreamHelper(stream, seekToOrigin: false); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Windows.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Windows.cs index 500ab7f54e6a22..43e48a864f39ab 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Windows.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/Metafile.Windows.cs @@ -26,13 +26,8 @@ public Metafile(IntPtr hmetafile, WmfPlaceableFileHeader wmfHeader) : /// /// Initializes a new instance of the class from the specified stream. /// - public unsafe Metafile(Stream stream) + public unsafe Metafile(Stream stream!!) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - using DrawingCom.IStreamWrapper streamWrapper = DrawingCom.GetComWrapper(new GPStream(stream)); IntPtr metafile = IntPtr.Zero; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderEmf.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderEmf.cs index eb2c7f73a95338..dfce8751ec4d20 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderEmf.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderEmf.cs @@ -3,8 +3,12 @@ namespace System.Drawing.Imaging { + using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +#if NET7_0_OR_GREATER + [NativeMarshalling(typeof(PinningMarshaller))] +#endif [StructLayout(LayoutKind.Sequential)] internal sealed class MetafileHeaderEmf { @@ -22,9 +26,26 @@ internal sealed class MetafileHeaderEmf public int Y; public int Width; public int Height; - public SafeNativeMethods.ENHMETAHEADER? EmfHeader; + public SafeNativeMethods.ENHMETAHEADER EmfHeader; public int EmfPlusHeaderSize; public int LogicalDpiX; public int LogicalDpiY; + + internal ref byte GetPinnableReference() => ref Unsafe.As(ref type); + +#if NET7_0_OR_GREATER + internal unsafe struct PinningMarshaller + { + private readonly MetafileHeaderEmf _managed; + public PinningMarshaller(MetafileHeaderEmf managed) + { + _managed = managed; + } + + public ref byte GetPinnableReference() => ref (_managed is null ? ref Unsafe.NullRef() : ref _managed.GetPinnableReference()); + + public void* Value => Unsafe.AsPointer(ref GetPinnableReference()); + } +#endif } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderWmf.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderWmf.cs index 0e95dacbc831eb..6825f2d007b1e2 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderWmf.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/MetafileHeaderWmf.cs @@ -3,6 +3,8 @@ namespace System.Drawing.Imaging { + using System.Diagnostics; + using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack = 8)] @@ -51,5 +53,100 @@ internal sealed class MetafileHeaderWmf public int EmfPlusHeaderSize; public int LogicalDpiX; public int LogicalDpiY; + +#if NET7_0_OR_GREATER + internal unsafe struct InPlaceMarshaller + { + [StructLayout(LayoutKind.Sequential, Pack = 8)] + internal struct Native + { + /// The ENHMETAHEADER structure is defined natively as a union with WmfHeader. + /// Extreme care should be taken if changing the layout of the corresponding managed + /// structures to minimize the risk of buffer overruns. The affected managed classes + /// are the following: ENHMETAHEADER, MetaHeader, MetafileHeaderWmf, MetafileHeaderEmf. + internal MetafileType type; + internal int size; + internal int version; + internal EmfPlusFlags emfPlusFlags; + internal float dpiX; + internal float dpiY; + internal int X; + internal int Y; + internal int Width; + internal int Height; + internal WmfMetaHeader WmfHeader; + internal int dummy1; + internal int dummy2; + internal int dummy3; + internal int dummy4; + internal int dummy5; + internal int dummy6; + internal int dummy7; + internal int dummy8; + internal int dummy9; + internal int dummy10; + internal int dummy11; + internal int dummy12; + internal int dummy13; + internal int dummy14; + internal int dummy15; + internal int dummy16; + internal int EmfPlusHeaderSize; + internal int LogicalDpiX; + internal int LogicalDpiY; + } + + private MetafileHeaderWmf _managed; + private Native _native; + + public InPlaceMarshaller(MetafileHeaderWmf managed) + { + _managed = managed; + Unsafe.SkipInit(out _native); + _native.type = managed.type; + _native.size = managed.size; + _native.version = managed.version; + _native.emfPlusFlags = managed.emfPlusFlags; + _native.dpiX = managed.dpiX; + _native.dpiY = managed.dpiY; + _native.X = managed.X; + _native.Y = managed.Y; + _native.Width = managed.Width; + _native.Height = managed.Height; + _native.WmfHeader = managed.WmfHeader.GetNativeValue(); + _native.dummy16 = managed.dummy16; + _native.EmfPlusHeaderSize = managed.EmfPlusHeaderSize; + _native.LogicalDpiX = managed.LogicalDpiX; + _native.LogicalDpiY = managed.LogicalDpiY; + } + + public Native Value + { + get => _native; + set => _native = value; + } + + public MetafileHeaderWmf ToManaged() + { + Debug.Assert(_managed is not null); + _managed.type = _native.type; + _managed.size = _native.size; + _managed.version = _native.version; + _managed.emfPlusFlags = _native.emfPlusFlags; + _managed.dpiX = _native.dpiX; + _managed.dpiY = _native.dpiY; + _managed.X = _native.X; + _managed.Y = _native.Y; + _managed.Width = _native.Width; + _managed.Height = _native.Height; + _managed.WmfHeader = new MetaHeader(_native.WmfHeader); + _managed.dummy16 = _native.dummy16; + _managed.EmfPlusHeaderSize = _native.EmfPlusHeaderSize; + _managed.LogicalDpiX = _native.LogicalDpiX; + _managed.LogicalDpiY = _native.LogicalDpiY; + return _managed; + } + } +#endif } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/WmfPlaceableFileHeader.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/WmfPlaceableFileHeader.cs index b36d964ecf72b0..ab26edfdb1a481 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/WmfPlaceableFileHeader.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Imaging/WmfPlaceableFileHeader.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace System.Drawing.Imaging @@ -101,5 +102,22 @@ public short Checksum get { return _checksum; } set { _checksum = value; } } + + internal ref int GetPinnableReference() => ref _key; + +#if NET7_0_OR_GREATER + internal unsafe struct PinningMarshaller + { + private readonly WmfPlaceableFileHeader _managed; + public PinningMarshaller(WmfPlaceableFileHeader managed) + { + _managed = managed; + } + + public ref int GetPinnableReference() => ref (_managed is null ? ref Unsafe.NullRef() : ref _managed.GetPinnableReference()); + + public void* Value => Unsafe.AsPointer(ref GetPinnableReference()); + } +#endif } } diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Internal/GPStream.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Internal/GPStream.cs index 524be173b52cf8..4758abd0ec59a3 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Internal/GPStream.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Internal/GPStream.cs @@ -129,13 +129,8 @@ public void SetSize(ulong value) _dataStream.SetLength(checked((long)value)); } - public unsafe void Stat(Interop.Ole32.STATSTG* pstatstg, Interop.Ole32.STATFLAG grfStatFlag) + public unsafe void Stat(Interop.Ole32.STATSTG* pstatstg!!, Interop.Ole32.STATFLAG grfStatFlag) { - if (pstatstg == null) - { - throw new ArgumentNullException(nameof(pstatstg)); - } - *pstatstg = new Interop.Ole32.STATSTG { cbSize = (ulong)_dataStream.Length, diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/LocalAppContextSwitches.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/LocalAppContextSwitches.Unix.cs index 59d9b10bb98f79..73f23a56410b49 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/LocalAppContextSwitches.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/LocalAppContextSwitches.Unix.cs @@ -13,4 +13,4 @@ public static bool EnableUnixSupport get => false; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Pen.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Pen.cs index cf22eae646cd40..2f953d2250c22d 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Pen.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Pen.cs @@ -84,13 +84,8 @@ public Pen(Brush brush) : this(brush, (float)1.0) /// /// Initializes a new instance of the class with the specified and width. /// - public Pen(Brush brush, float width) + public Pen(Brush brush!!, float width) { - if (brush == null) - { - throw new ArgumentNullException(nameof(brush)); - } - IntPtr pen; int status = Gdip.GdipCreatePen2(new HandleRef(brush, brush.NativeBrush), width, diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs index 3a8501cd0e1865..a4a73646bd5142 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/LibcupsNative.cs @@ -32,10 +32,8 @@ internal static IntPtr LoadLibcups() [GeneratedDllImport(LibraryName)] internal static partial void cupsFreeDests(int num_dests, IntPtr dests); - [DllImport(LibraryName, CharSet = CharSet.Ansi)] -#pragma warning disable CA1838 // not hot-path enough to worry about the overheads of StringBuilder marshaling - internal static extern IntPtr cupsTempFd([Out] StringBuilder sb, int len); -#pragma warning restore CA1838 + [GeneratedDllImport(LibraryName, CharSet = CharSet.Ansi)] + internal static partial IntPtr cupsTempFd(sbyte[] sb, int len); [GeneratedDllImport(LibraryName)] internal static partial IntPtr cupsGetDefault(); diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/MarginsConverter.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/MarginsConverter.cs index 7354b6adbf0644..2982ca860d8076 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/MarginsConverter.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/MarginsConverter.cs @@ -91,12 +91,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// type is string. If this cannot convert to the desitnation type, this will /// throw a NotSupportedException. /// - public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType) + public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType!!) { - if (destinationType == null) - { - throw new ArgumentNullException(nameof(destinationType)); - } if (value is Margins margins) { if (destinationType == typeof(string)) @@ -144,13 +140,8 @@ public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destina /// for the object. This is useful for objects that are immutable, but still /// want to provide changable properties. /// - public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues) + public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues!!) { - if (propertyValues == null) - { - throw new ArgumentNullException(nameof(propertyValues)); - } - object? left = propertyValues["Left"]; object? right = propertyValues["Right"]; object? top = propertyValues["Top"]; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs index 6ccb314c06078c..e40a4a643fc9a1 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Printing/PrintingServices.Unix.cs @@ -859,11 +859,16 @@ internal static IntPtr CreateGraphicsContext(PrinterSettings settings, PageSetti string? name; if (!settings.PrintToFile) { - StringBuilder sb = new StringBuilder(1024); - int length = sb.Capacity; - LibcupsNative.cupsTempFd(sb, length); - name = sb.ToString(); - tmpfile = name; + sbyte[] buffer = new sbyte[1024]; + int length = buffer.Length; + LibcupsNative.cupsTempFd(buffer, length); + unsafe + { + fixed (sbyte* ptr = buffer) + { + tmpfile = name = new string(ptr); + } + } } else name = settings.PrintFileName!; diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/Region.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/Region.cs index d53c41d5e528c7..50eb520a9c1afe 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/Region.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/Region.cs @@ -36,20 +36,14 @@ public Region(Rectangle rect) SetNativeRegion(region); } - public Region(GraphicsPath path) + public Region(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCreateRegionPath(new HandleRef(path, path._nativePath), out IntPtr region)); SetNativeRegion(region); } - public Region(RegionData rgnData) + public Region(RegionData rgnData!!) { - if (rgnData == null) - throw new ArgumentNullException(nameof(rgnData)); - Gdip.CheckStatus(Gdip.GdipCreateRegionRgnData( rgnData.Data, rgnData.Data.Length, @@ -136,19 +130,13 @@ public void Intersect(Rectangle rect) Gdip.CheckStatus(Gdip.GdipCombineRegionRectI(new HandleRef(this, NativeRegion), ref rect, CombineMode.Intersect)); } - public void Intersect(GraphicsPath path) + public void Intersect(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCombineRegionPath(new HandleRef(this, NativeRegion), new HandleRef(path, path._nativePath), CombineMode.Intersect)); } - public void Intersect(Region region) + public void Intersect(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipCombineRegionRegion(new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), CombineMode.Intersect)); } @@ -162,19 +150,13 @@ public void Union(Rectangle rect) Gdip.CheckStatus(Gdip.GdipCombineRegionRectI(new HandleRef(this, NativeRegion), ref rect, CombineMode.Union)); } - public void Union(GraphicsPath path) + public void Union(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCombineRegionPath(new HandleRef(this, NativeRegion), new HandleRef(path, path._nativePath), CombineMode.Union)); } - public void Union(Region region) + public void Union(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipCombineRegionRegion(new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), CombineMode.Union)); } @@ -188,19 +170,13 @@ public void Xor(Rectangle rect) Gdip.CheckStatus(Gdip.GdipCombineRegionRectI(new HandleRef(this, NativeRegion), ref rect, CombineMode.Xor)); } - public void Xor(GraphicsPath path) + public void Xor(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCombineRegionPath(new HandleRef(this, NativeRegion), new HandleRef(path, path._nativePath), CombineMode.Xor)); } - public void Xor(Region region) + public void Xor(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipCombineRegionRegion(new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), CombineMode.Xor)); } @@ -214,22 +190,16 @@ public void Exclude(Rectangle rect) Gdip.CheckStatus(Gdip.GdipCombineRegionRectI(new HandleRef(this, NativeRegion), ref rect, CombineMode.Exclude)); } - public void Exclude(GraphicsPath path) + public void Exclude(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCombineRegionPath( new HandleRef(this, NativeRegion), new HandleRef(path, path._nativePath), CombineMode.Exclude)); } - public void Exclude(Region region) + public void Exclude(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipCombineRegionRegion( new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), @@ -246,19 +216,13 @@ public void Complement(Rectangle rect) Gdip.CheckStatus(Gdip.GdipCombineRegionRectI(new HandleRef(this, NativeRegion), ref rect, CombineMode.Complement)); } - public void Complement(GraphicsPath path) + public void Complement(GraphicsPath path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - Gdip.CheckStatus(Gdip.GdipCombineRegionPath(new HandleRef(this, NativeRegion), new HandleRef(path, path._nativePath), CombineMode.Complement)); } - public void Complement(Region region) + public void Complement(Region region!!) { - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipCombineRegionRegion(new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), CombineMode.Complement)); } @@ -272,59 +236,39 @@ public void Translate(int dx, int dy) Gdip.CheckStatus(Gdip.GdipTranslateRegionI(new HandleRef(this, NativeRegion), dx, dy)); } - public void Transform(Matrix matrix) + public void Transform(Matrix matrix!!) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); - Gdip.CheckStatus(Gdip.GdipTransformRegion( new HandleRef(this, NativeRegion), new HandleRef(matrix, matrix.NativeMatrix))); } - public RectangleF GetBounds(Graphics g) + public RectangleF GetBounds(Graphics g!!) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - Gdip.CheckStatus(Gdip.GdipGetRegionBounds(new HandleRef(this, NativeRegion), new HandleRef(g, g.NativeGraphics), out RectangleF bounds)); return bounds; } - public IntPtr GetHrgn(Graphics g) + public IntPtr GetHrgn(Graphics g!!) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - Gdip.CheckStatus(Gdip.GdipGetRegionHRgn(new HandleRef(this, NativeRegion), new HandleRef(g, g.NativeGraphics), out IntPtr hrgn)); return hrgn; } - public bool IsEmpty(Graphics g) + public bool IsEmpty(Graphics g!!) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - Gdip.CheckStatus(Gdip.GdipIsEmptyRegion(new HandleRef(this, NativeRegion), new HandleRef(g, g.NativeGraphics), out int isEmpty)); return isEmpty != 0; } - public bool IsInfinite(Graphics g) + public bool IsInfinite(Graphics g!!) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - Gdip.CheckStatus(Gdip.GdipIsInfiniteRegion(new HandleRef(this, NativeRegion), new HandleRef(g, g.NativeGraphics), out int isInfinite)); return isInfinite != 0; } - public bool Equals(Region region, Graphics g) + public bool Equals(Region region!!, Graphics g!!) { - if (g == null) - throw new ArgumentNullException(nameof(g)); - if (region == null) - throw new ArgumentNullException(nameof(region)); - Gdip.CheckStatus(Gdip.GdipIsEqualRegion(new HandleRef(this, NativeRegion), new HandleRef(region, region.NativeRegion), new HandleRef(g, g.NativeGraphics), out int isEqual)); return isEqual != 0; } @@ -407,11 +351,8 @@ public bool IsVisible(Rectangle rect, Graphics? g) return isVisible != 0; } - public unsafe RectangleF[] GetRegionScans(Matrix matrix) + public unsafe RectangleF[] GetRegionScans(Matrix matrix!!) { - if (matrix == null) - throw new ArgumentNullException(nameof(matrix)); - Gdip.CheckStatus(Gdip.GdipGetRegionScansCount( new HandleRef(this, NativeRegion), out int count, diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/StringFormat.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/StringFormat.cs index e233fe56798f39..fc910b3ce95894 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/StringFormat.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/StringFormat.cs @@ -53,13 +53,8 @@ public StringFormat(StringFormatFlags options, int language) /// Initializes a new instance of the class from the specified /// existing . /// - public StringFormat(StringFormat format) + public StringFormat(StringFormat format!!) { - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - int status = Gdip.GdipCloneStringFormat(new HandleRef(format, format.nativeFormat), out nativeFormat); if (status != Gdip.Ok) diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/TextureBrush.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/TextureBrush.cs index 53d9ea5c117f70..9835d63d78ca1c 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/TextureBrush.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/TextureBrush.cs @@ -22,13 +22,8 @@ public TextureBrush(Image bitmap) : this(bitmap, WrapMode.Tile) { } - public TextureBrush(Image image, WrapMode wrapMode) + public TextureBrush(Image image!!, WrapMode wrapMode) { - if (image == null) - { - throw new ArgumentNullException(nameof(image)); - } - if (wrapMode < WrapMode.Tile || wrapMode > WrapMode.Clamp) { throw new InvalidEnumArgumentException(nameof(wrapMode), unchecked((int)wrapMode), typeof(WrapMode)); @@ -43,13 +38,8 @@ public TextureBrush(Image image, WrapMode wrapMode) SetNativeBrushInternal(brush); } - public TextureBrush(Image image, WrapMode wrapMode, RectangleF dstRect) + public TextureBrush(Image image!!, WrapMode wrapMode, RectangleF dstRect) { - if (image == null) - { - throw new ArgumentNullException(nameof(image)); - } - if (wrapMode < WrapMode.Tile || wrapMode > WrapMode.Clamp) { throw new InvalidEnumArgumentException(nameof(wrapMode), unchecked((int)wrapMode), typeof(WrapMode)); @@ -68,13 +58,8 @@ public TextureBrush(Image image, WrapMode wrapMode, RectangleF dstRect) SetNativeBrushInternal(brush); } - public TextureBrush(Image image, WrapMode wrapMode, Rectangle dstRect) + public TextureBrush(Image image!!, WrapMode wrapMode, Rectangle dstRect) { - if (image == null) - { - throw new ArgumentNullException(nameof(image)); - } - if (wrapMode < WrapMode.Tile || wrapMode > WrapMode.Clamp) { throw new InvalidEnumArgumentException(nameof(wrapMode), unchecked((int)wrapMode), typeof(WrapMode)); @@ -95,13 +80,8 @@ public TextureBrush(Image image, WrapMode wrapMode, Rectangle dstRect) public TextureBrush(Image image, RectangleF dstRect) : this(image, dstRect, null) { } - public TextureBrush(Image image, RectangleF dstRect, ImageAttributes? imageAttr) + public TextureBrush(Image image!!, RectangleF dstRect, ImageAttributes? imageAttr) { - if (image == null) - { - throw new ArgumentNullException(nameof(image)); - } - IntPtr brush; int status = Gdip.GdipCreateTextureIA(new HandleRef(image, image.nativeImage), new HandleRef(imageAttr, (imageAttr == null) ? @@ -118,13 +98,8 @@ public TextureBrush(Image image, RectangleF dstRect, ImageAttributes? imageAttr) public TextureBrush(Image image, Rectangle dstRect) : this(image, dstRect, null) { } - public TextureBrush(Image image, Rectangle dstRect, ImageAttributes? imageAttr) + public TextureBrush(Image image!!, Rectangle dstRect, ImageAttributes? imageAttr) { - if (image == null) - { - throw new ArgumentNullException(nameof(image)); - } - IntPtr brush; int status = Gdip.GdipCreateTextureIAI(new HandleRef(image, image.nativeImage), new HandleRef(imageAttr, (imageAttr == null) ? @@ -218,13 +193,8 @@ public void ResetTransform() public void MultiplyTransform(Matrix matrix) => MultiplyTransform(matrix, MatrixOrder.Prepend); - public void MultiplyTransform(Matrix matrix, MatrixOrder order) + public void MultiplyTransform(Matrix matrix!!, MatrixOrder order) { - if (matrix == null) - { - throw new ArgumentNullException(nameof(matrix)); - } - // Multiplying the transform by a disposed matrix is a nop in GDI+, but throws // with the libgdiplus backend. Simulate a nop for compatability with GDI+. if (matrix.NativeMatrix == IntPtr.Zero) diff --git a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Enumerated.cs b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Enumerated.cs index a29ad2ba063048..3c300f5e1fb041 100644 --- a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Enumerated.cs +++ b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Enumerated.cs @@ -30,11 +30,8 @@ public sealed partial class AsnWriter /// /// /// - public void WriteEnumeratedValue(Enum value, Asn1Tag? tag = null) + public void WriteEnumeratedValue(Enum value!!, Asn1Tag? tag = null) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - WriteEnumeratedValue(tag?.AsPrimitive() ?? Asn1Tag.Enumerated, value.GetType(), value); } diff --git a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.NamedBitList.cs b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.NamedBitList.cs index 424e484abef2b9..149f2dc8e26288 100644 --- a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.NamedBitList.cs +++ b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.NamedBitList.cs @@ -32,11 +32,8 @@ public sealed partial class AsnWriter /// /// is . /// - public void WriteNamedBitList(Enum value, Asn1Tag? tag = null) + public void WriteNamedBitList(Enum value!!, Asn1Tag? tag = null) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - CheckUniversalTag(tag, UniversalTagNumber.BitString); WriteNamedBitList(tag, value.GetType(), value); @@ -89,11 +86,8 @@ public void WriteNamedBitList(TEnum value, Asn1Tag? tag = null) where TEn /// For example, the bit array { false, true, true } encodes as 0b0110_0000 with 5 /// unused bits. /// - public void WriteNamedBitList(BitArray value, Asn1Tag? tag = null) + public void WriteNamedBitList(BitArray value!!, Asn1Tag? tag = null) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - CheckUniversalTag(tag, UniversalTagNumber.BitString); WriteBitArray(value, tag); diff --git a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Oid.cs b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Oid.cs index b9b77fad02eaf5..d458f988e839e8 100644 --- a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Oid.cs +++ b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Oid.cs @@ -28,11 +28,8 @@ public sealed partial class AsnWriter /// /// is . /// - public void WriteObjectIdentifier(string oidValue, Asn1Tag? tag = null) + public void WriteObjectIdentifier(string oidValue!!, Asn1Tag? tag = null) { - if (oidValue == null) - throw new ArgumentNullException(nameof(oidValue)); - WriteObjectIdentifier(oidValue.AsSpan(), tag); } diff --git a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Text.cs b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Text.cs index 7f0ab728f6e77f..032c3ffec5691a 100644 --- a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Text.cs +++ b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.Text.cs @@ -36,11 +36,8 @@ public sealed partial class AsnWriter /// . is not correct for /// the method. /// - public void WriteCharacterString(UniversalTagNumber encodingType, string value, Asn1Tag? tag = null) + public void WriteCharacterString(UniversalTagNumber encodingType, string value!!, Asn1Tag? tag = null) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - WriteCharacterString(encodingType, value.AsSpan(), tag); } diff --git a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.cs b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.cs index 9938ddad4ac2cd..de4dc8ef0fd248 100644 --- a/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.cs +++ b/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/AsnWriter.cs @@ -223,11 +223,8 @@ public bool EncodedValueEquals(ReadOnlySpan other) /// A or has not been closed via /// or . /// - public bool EncodedValueEquals(AsnWriter other) + public bool EncodedValueEquals(AsnWriter other!!) { - if (other == null) - throw new ArgumentNullException(nameof(other)); - return EncodeAsSpan().SequenceEqual(other.EncodeAsSpan()); } @@ -381,11 +378,8 @@ private static int GetEncodedLengthSubsequentByteCount(int length) /// This writer's value is encoded in a manner that is not compatible with the /// ruleset for the destination writer. /// - public void CopyTo(AsnWriter destination) + public void CopyTo(AsnWriter destination!!) { - if (destination == null) - throw new ArgumentNullException(nameof(destination)); - try { destination.WriteEncodedValue(EncodeAsSpan()); diff --git a/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Writer/CborWriter.String.cs b/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Writer/CborWriter.String.cs index 2e600d99dad32a..39e0aeb32d2546 100644 --- a/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Writer/CborWriter.String.cs +++ b/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Writer/CborWriter.String.cs @@ -22,13 +22,8 @@ public partial class CborWriter /// The major type of the encoded value is not permitted in the parent data item. /// -or- /// The written data is not accepted under the current conformance mode. - public void WriteByteString(byte[] value) + public void WriteByteString(byte[] value!!) { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - WriteByteString(value.AsSpan()); } @@ -106,13 +101,8 @@ public void WriteEndIndefiniteLengthByteString() /// The major type of the encoded value is not permitted in the parent data item. /// -or- /// The written data is not accepted under the current conformance mode. - public void WriteTextString(string value) + public void WriteTextString(string value!!) { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - WriteTextString(value.AsSpan()); } diff --git a/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs b/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs index 5a5e3dada218b1..8312abdb3fe9b7 100644 --- a/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs +++ b/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs @@ -209,7 +209,7 @@ public void TestAllowInvariantCultureOnly(bool enableInvariant, bool predefinedC Assert.NotNull(exception); Assert.IsType(exception); Assert.Equal("collection", (exception as ArgumentNullException).ParamName); - Assert.Equal("The collection argument is null. (Parameter 'collection')", exception.Message); + Assert.Equal("Value cannot be null. (Parameter 'collection')", exception.Message); } else { diff --git a/src/libraries/System.Globalization/tests/IcuTests.cs b/src/libraries/System.Globalization/tests/IcuTests.cs index 190da7f676c807..e5433487ac9deb 100644 --- a/src/libraries/System.Globalization/tests/IcuTests.cs +++ b/src/libraries/System.Globalization/tests/IcuTests.cs @@ -10,7 +10,9 @@ namespace System.Globalization.Tests public class IcuTests { private static bool IsIcuCompatiblePlatform => PlatformDetection.IsNotWindows || - PlatformDetection.IsWindows10Version1903OrGreater; + (PlatformDetection.IsWindows10Version1903OrGreater && + // Server core doesn't have icu.dll on SysWOW64 + !(PlatformDetection.IsWindowsServerCore && PlatformDetection.IsX86Process)); [ConditionalFact(nameof(IsIcuCompatiblePlatform))] public static void IcuShouldBeUsedByDefault() diff --git a/src/libraries/System.Globalization/tests/System/Globalization/RegionInfoTests.cs b/src/libraries/System.Globalization/tests/System/Globalization/RegionInfoTests.cs index 67ee899ba1a8bb..6fd30317d7f06b 100644 --- a/src/libraries/System.Globalization/tests/System/Globalization/RegionInfoTests.cs +++ b/src/libraries/System.Globalization/tests/System/Globalization/RegionInfoTests.cs @@ -254,5 +254,18 @@ public void EqualsTest(RegionInfo regionInfo1, object obj, bool expected) Assert.Equal(expected, regionInfo1.GetHashCode().Equals(obj.GetHashCode())); } } + + [Fact] + public void ValidateThrowingWhenUsingCustomUnspecifiedLcid() + { + // When trying to create RegionInfo using Lcid, we call LcidToLocaleName to map the Lcid to the culture name. + // LOCALE_CUSTOM_UNSPECIFIED (0x1000) is considered invalid Lcid to create cultures with. Sometimes Windows can + // map which is wrong. This happen if we enumerate the cultures before trying to create the RegionInfo object. + // This test is to ensure we'll not allow this creation in .NET. + + CultureInfo [] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures); + + AssertExtensions.Throws("culture", () => new RegionInfo(4096)); + } } } diff --git a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliStream.cs b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliStream.cs index 73ecccf89262b7..cda66334319f2b 100644 --- a/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliStream.cs +++ b/src/libraries/System.IO.Compression.Brotli/src/System/IO/Compression/BrotliStream.cs @@ -25,11 +25,8 @@ public BrotliStream(Stream stream, CompressionMode mode) : this(stream, mode, le /// The stream to compress. /// One of the enumeration values that indicates whether to compress or decompress the stream. /// to leave the stream open after the object is disposed; otherwise, . - public BrotliStream(Stream stream, CompressionMode mode, bool leaveOpen) + public BrotliStream(Stream stream!!, CompressionMode mode, bool leaveOpen) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - switch (mode) { case CompressionMode.Compress: diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj index c34b54ed173f93..66827e87964fbf 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/src/System.IO.Compression.ZipFile.csproj @@ -11,6 +11,8 @@ + diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFile.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFile.Extract.cs index eb908ed66f0179..6631352d278782 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFile.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFile.Extract.cs @@ -181,11 +181,8 @@ public static void ExtractToDirectory(string sourceArchiveFileName, string desti /// Note that Unicode encodings other than UTF-8 may not be currently used for the entryNameEncoding, /// otherwise an is thrown. /// - public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, Encoding? entryNameEncoding, bool overwriteFiles) + public static void ExtractToDirectory(string sourceArchiveFileName!!, string destinationDirectoryName, Encoding? entryNameEncoding, bool overwriteFiles) { - if (sourceArchiveFileName == null) - throw new ArgumentNullException(nameof(sourceArchiveFileName)); - using (ZipArchive archive = Open(sourceArchiveFileName, ZipArchiveMode.Read, entryNameEncoding)) { archive.ExtractToDirectory(destinationDirectoryName, overwriteFiles); diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Create.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Create.cs index c9199a97f2a895..8e780cc7793a23 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Create.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Create.cs @@ -77,18 +77,9 @@ public static ZipArchiveEntry CreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName, CompressionLevel compressionLevel) => DoCreateEntryFromFile(destination, sourceFileName, entryName, compressionLevel); - internal static ZipArchiveEntry DoCreateEntryFromFile(this ZipArchive destination, - string sourceFileName, string entryName, CompressionLevel? compressionLevel) + internal static ZipArchiveEntry DoCreateEntryFromFile(this ZipArchive destination!!, + string sourceFileName!!, string entryName!!, CompressionLevel? compressionLevel) { - if (destination == null) - throw new ArgumentNullException(nameof(destination)); - - if (sourceFileName == null) - throw new ArgumentNullException(nameof(sourceFileName)); - - if (entryName == null) - throw new ArgumentNullException(nameof(entryName)); - // Checking of compressionLevel is passed down to DeflateStream and the IDeflater implementation // as it is a pluggable component that completely encapsulates the meaning of compressionLevel. diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Extract.cs index 3dd751dce8ddf6..ed01fa2689e982 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchive.Extract.cs @@ -65,14 +65,8 @@ public static void ExtractToDirectory(this ZipArchive source, string destination /// The directory specified must not exist. The path is permitted to specify relative or absolute path information. /// Relative path information is interpreted as relative to the current working directory. /// True to indicate overwrite. - public static void ExtractToDirectory(this ZipArchive source, string destinationDirectoryName, bool overwriteFiles) + public static void ExtractToDirectory(this ZipArchive source!!, string destinationDirectoryName!!, bool overwriteFiles) { - if (source == null) - throw new ArgumentNullException(nameof(source)); - - if (destinationDirectoryName == null) - throw new ArgumentNullException(nameof(destinationDirectoryName)); - foreach (ZipArchiveEntry entry in source.Entries) { entry.ExtractRelativeToDirectory(destinationDirectoryName, overwriteFiles); diff --git a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs index fe725937441e24..ef6192cb903166 100644 --- a/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs +++ b/src/libraries/System.IO.Compression.ZipFile/src/System/IO/Compression/ZipFileExtensions.ZipArchiveEntry.Extract.cs @@ -60,14 +60,8 @@ public static void ExtractToFile(this ZipArchiveEntry source, string destination /// The path is permitted to specify relative or absolute path information. /// Relative path information is interpreted as relative to the current working directory. /// True to indicate overwrite. - public static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName, bool overwrite) + public static void ExtractToFile(this ZipArchiveEntry source!!, string destinationFileName!!, bool overwrite) { - if (source == null) - throw new ArgumentNullException(nameof(source)); - - if (destinationFileName == null) - throw new ArgumentNullException(nameof(destinationFileName)); - // Rely on FileStream's ctor for further checking destinationFileName parameter FileMode fMode = overwrite ? FileMode.Create : FileMode.CreateNew; @@ -94,14 +88,8 @@ public static void ExtractToFile(this ZipArchiveEntry source, string destination internal static void ExtractRelativeToDirectory(this ZipArchiveEntry source, string destinationDirectoryName) => ExtractRelativeToDirectory(source, destinationDirectoryName, overwrite: false); - internal static void ExtractRelativeToDirectory(this ZipArchiveEntry source, string destinationDirectoryName, bool overwrite) + internal static void ExtractRelativeToDirectory(this ZipArchiveEntry source!!, string destinationDirectoryName!!, bool overwrite) { - if (source == null) - throw new ArgumentNullException(nameof(source)); - - if (destinationDirectoryName == null) - throw new ArgumentNullException(nameof(destinationDirectoryName)); - // Note that this will give us a good DirectoryInfo even if destinationDirectoryName exists: DirectoryInfo di = Directory.CreateDirectory(destinationDirectoryName); string destinationDirectoryFullPath = di.FullName; diff --git a/src/libraries/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj b/src/libraries/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj index 0a6a7088ace395..94aa77c9c9a6ef 100644 --- a/src/libraries/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj +++ b/src/libraries/System.IO.Compression.ZipFile/tests/System.IO.Compression.ZipFile.Tests.csproj @@ -19,6 +19,8 @@ + - internal DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen, int windowBits, long uncompressedSize = -1) + internal DeflateStream(Stream stream!!, CompressionMode mode, bool leaveOpen, int windowBits, long uncompressedSize = -1) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - switch (mode) { case CompressionMode.Decompress: @@ -78,11 +75,8 @@ internal DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen, int /// /// Internal constructor to specify the compressionlevel as well as the windowbits /// - internal DeflateStream(Stream stream, CompressionLevel compressionLevel, bool leaveOpen, int windowBits) + internal DeflateStream(Stream stream!!, CompressionLevel compressionLevel, bool leaveOpen, int windowBits) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - InitializeDeflater(stream, leaveOpen, windowBits, compressionLevel); } diff --git a/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs b/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs index 5d68416b3b25da..3adf8a65702567 100644 --- a/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs +++ b/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchive.cs @@ -117,11 +117,8 @@ public ZipArchive(Stream stream, ZipArchiveMode mode, bool leaveOpen) : this(str /// otherwise an is thrown. /// /// If a Unicode encoding other than UTF-8 is specified for the entryNameEncoding. - public ZipArchive(Stream stream, ZipArchiveMode mode, bool leaveOpen, Encoding? entryNameEncoding) + public ZipArchive(Stream stream!!, ZipArchiveMode mode, bool leaveOpen, Encoding? entryNameEncoding) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - EntryNameAndCommentEncoding = entryNameEncoding; Stream? extraTempStream = null; @@ -341,11 +338,8 @@ public void Dispose() /// The Zip archive is corrupt and the entries cannot be retrieved. /// A path relative to the root of the archive, identifying the desired entry. /// A wrapper for the file entry in the archive. If no entry in the archive exists with the specified name, null will be returned. - public ZipArchiveEntry? GetEntry(string entryName) + public ZipArchiveEntry? GetEntry(string entryName!!) { - if (entryName == null) - throw new ArgumentNullException(nameof(entryName)); - if (_mode == ZipArchiveMode.Create) throw new NotSupportedException(SR.EntriesInCreateMode); @@ -392,11 +386,8 @@ private set } } - private ZipArchiveEntry DoCreateEntry(string entryName, CompressionLevel? compressionLevel) + private ZipArchiveEntry DoCreateEntry(string entryName!!, CompressionLevel? compressionLevel) { - if (entryName == null) - throw new ArgumentNullException(nameof(entryName)); - if (string.IsNullOrEmpty(entryName)) throw new ArgumentException(SR.CannotBeEmpty, nameof(entryName)); diff --git a/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs b/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs index f16c193383ae8a..7bf3271886aea7 100644 --- a/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs +++ b/src/libraries/System.IO.Compression/src/System/IO/Compression/ZipArchiveEntry.cs @@ -215,8 +215,7 @@ public string FullName [MemberNotNull(nameof(_storedEntryName))] private set { - if (value == null) - throw new ArgumentNullException(nameof(FullName)); + ArgumentNullException.ThrowIfNull(value, nameof(FullName)); _storedEntryNameBytes = ZipHelper.GetEncodedTruncatedBytesFromString( value, _archive.EntryNameAndCommentEncoding, 0 /* No truncation */, out bool hasUnicodeEntryName); diff --git a/src/libraries/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj b/src/libraries/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj index 1277500ba61589..e7a90eb3a6eb58 100644 --- a/src/libraries/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj +++ b/src/libraries/System.IO.FileSystem.AccessControl/src/System.IO.FileSystem.AccessControl.csproj @@ -10,6 +10,8 @@ + An object that represents the file for retrieving security descriptors from /// is . /// The file stream is closed. - public static FileSecurity GetAccessControl(this FileStream fileStream) + public static FileSecurity GetAccessControl(this FileStream fileStream!!) { - if (fileStream == null) - { - throw new ArgumentNullException(nameof(fileStream)); - } - SafeFileHandle handle = fileStream.SafeFileHandle; if (handle.IsClosed) { @@ -107,18 +67,8 @@ public static FileSecurity GetAccessControl(this FileStream fileStream) /// An object that determines the access control and audit security for the file. /// or is . /// The file stream is closed. - public static void SetAccessControl(this FileStream fileStream, FileSecurity fileSecurity) + public static void SetAccessControl(this FileStream fileStream!!, FileSecurity fileSecurity!!) { - if (fileStream == null) - { - throw new ArgumentNullException(nameof(fileStream)); - } - - if (fileSecurity == null) - { - throw new ArgumentNullException(nameof(fileSecurity)); - } - SafeFileHandle handle = fileStream.SafeFileHandle; if (handle.IsClosed) { @@ -135,18 +85,8 @@ public static void SetAccessControl(this FileStream fileStream, FileSecurity fil /// Could not find a part of the path. /// Access to the path is denied. /// This extension method was added to .NET Core to bring the functionality that was provided by the `System.IO.DirectoryInfo.Create(System.Security.AccessControl.DirectorySecurity)` .NET Framework method. - public static void Create(this DirectoryInfo directoryInfo, DirectorySecurity directorySecurity) + public static void Create(this DirectoryInfo directoryInfo!!, DirectorySecurity directorySecurity!!) { - if (directoryInfo == null) - { - throw new ArgumentNullException(nameof(directoryInfo)); - } - - if (directorySecurity == null) - { - throw new ArgumentNullException(nameof(directorySecurity)); - } - FileSystem.CreateDirectory(directoryInfo.FullName, directorySecurity.GetSecurityDescriptorBinaryForm()); } @@ -170,13 +110,8 @@ public static void Create(this DirectoryInfo directoryInfo, DirectorySecurity di /// An I/O error occurs. /// Access to the path is denied. /// This extension method was added to .NET Core to bring the functionality that was provided by the `System.IO.FileStream.#ctor(System.String,System.IO.FileMode,System.Security.AccessControl.FileSystemRights,System.IO.FileShare,System.Int32,System.IO.FileOptions,System.Security.AccessControl.FileSecurity)` .NET Framework constructor. - public static FileStream Create(this FileInfo fileInfo, FileMode mode, FileSystemRights rights, FileShare share, int bufferSize, FileOptions options, FileSecurity? fileSecurity) + public static FileStream Create(this FileInfo fileInfo!!, FileMode mode, FileSystemRights rights, FileShare share, int bufferSize, FileOptions options, FileSecurity? fileSecurity) { - if (fileInfo == null) - { - throw new ArgumentNullException(nameof(fileInfo)); - } - // don't include inheritable in our bounds check for share FileShare tempshare = share & ~FileShare.Inheritable; @@ -242,9 +177,8 @@ public static FileStream Create(this FileInfo fileInfo, FileMode mode, FileSyste /// Could not find a part of the path. /// Access to the path is denied. /// This extension method was added to .NET Core to bring the functionality that was provided by the `System.IO.Directory.CreateDirectory(System.String,System.Security.AccessControl.DirectorySecurity)` .NET Framework method. - public static DirectoryInfo CreateDirectory(this DirectorySecurity directorySecurity, string path) + public static DirectoryInfo CreateDirectory(this DirectorySecurity directorySecurity!!, string path) { - ArgumentNullException.ThrowIfNull(directorySecurity); ArgumentException.ThrowIfNullOrEmpty(path); DirectoryInfo dirInfo = new DirectoryInfo(path); diff --git a/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs b/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs index a04d60120c7417..a7edee77e2375c 100644 --- a/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs +++ b/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/DirectoryObjectSecurity.cs @@ -17,13 +17,9 @@ protected DirectoryObjectSecurity() return; } - protected DirectoryObjectSecurity(CommonSecurityDescriptor securityDescriptor) + protected DirectoryObjectSecurity(CommonSecurityDescriptor securityDescriptor!!) : base(securityDescriptor) { - if (securityDescriptor == null) - { - throw new ArgumentNullException(nameof(securityDescriptor)); - } } #region Private Methods @@ -520,13 +516,8 @@ protected override bool ModifyAudit(AccessControlModification modification, Audi #region Public Methods - protected void AddAccessRule(ObjectAccessRule rule) + protected void AddAccessRule(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -541,13 +532,8 @@ protected void AddAccessRule(ObjectAccessRule rule) return; } - protected void SetAccessRule(ObjectAccessRule rule) + protected void SetAccessRule(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -560,13 +546,8 @@ protected void SetAccessRule(ObjectAccessRule rule) } } - protected void ResetAccessRule(ObjectAccessRule rule) + protected void ResetAccessRule(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -579,13 +560,8 @@ protected void ResetAccessRule(ObjectAccessRule rule) } } - protected bool RemoveAccessRule(ObjectAccessRule rule) + protected bool RemoveAccessRule(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -603,13 +579,8 @@ protected bool RemoveAccessRule(ObjectAccessRule rule) } } - protected void RemoveAccessRuleAll(ObjectAccessRule rule) + protected void RemoveAccessRuleAll(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -627,13 +598,8 @@ protected void RemoveAccessRuleAll(ObjectAccessRule rule) } } - protected void RemoveAccessRuleSpecific(ObjectAccessRule rule) + protected void RemoveAccessRuleSpecific(ObjectAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - if (SecurityDescriptor == null) { return; @@ -651,13 +617,8 @@ protected void RemoveAccessRuleSpecific(ObjectAccessRule rule) } } - protected void AddAuditRule(ObjectAuditRule rule) + protected void AddAuditRule(ObjectAuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -670,13 +631,8 @@ protected void AddAuditRule(ObjectAuditRule rule) } } - protected void SetAuditRule(ObjectAuditRule rule) + protected void SetAuditRule(ObjectAuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -689,13 +645,8 @@ protected void SetAuditRule(ObjectAuditRule rule) } } - protected bool RemoveAuditRule(ObjectAuditRule rule) + protected bool RemoveAuditRule(ObjectAuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -708,13 +659,8 @@ protected bool RemoveAuditRule(ObjectAuditRule rule) } } - protected void RemoveAuditRuleAll(ObjectAuditRule rule) + protected void RemoveAuditRuleAll(ObjectAuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -727,13 +673,8 @@ protected void RemoveAuditRuleAll(ObjectAuditRule rule) } } - protected void RemoveAuditRuleSpecific(ObjectAuditRule rule) + protected void RemoveAuditRuleSpecific(ObjectAuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try diff --git a/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/FileSystemSecurity.cs b/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/FileSystemSecurity.cs index 27cd96a664a55b..50cf85d690b81d 100644 --- a/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/FileSystemSecurity.cs +++ b/src/libraries/System.IO.FileSystem.AccessControl/src/System/Security/AccessControl/FileSystemSecurity.cs @@ -162,11 +162,8 @@ public void ResetAccessRule(FileSystemAccessRule rule) base.ResetAccessRule(rule); } - public bool RemoveAccessRule(FileSystemAccessRule rule) + public bool RemoveAccessRule(FileSystemAccessRule rule!!) { - if (rule == null) - throw new ArgumentNullException(nameof(rule)); - // If the rule to be removed matches what is there currently then // remove it unaltered. That is, don't mask off the Synchronize bit. // This is to avoid dangling synchronize bit @@ -206,11 +203,8 @@ public void RemoveAccessRuleAll(FileSystemAccessRule rule) base.RemoveAccessRuleAll(rule); } - public void RemoveAccessRuleSpecific(FileSystemAccessRule rule) + public void RemoveAccessRuleSpecific(FileSystemAccessRule rule!!) { - if (rule == null) - throw new ArgumentNullException(nameof(rule)); - // If the rule to be removed matches what is there currently then // remove it unaltered. That is, don't mask off the Synchronize bit // This is to avoid dangling synchronize bit diff --git a/src/libraries/System.IO.FileSystem.DriveInfo/src/System.IO.FileSystem.DriveInfo.csproj b/src/libraries/System.IO.FileSystem.DriveInfo/src/System.IO.FileSystem.DriveInfo.csproj index 2ae15035b5d309..7cdd5006490a06 100644 --- a/src/libraries/System.IO.FileSystem.DriveInfo/src/System.IO.FileSystem.DriveInfo.csproj +++ b/src/libraries/System.IO.FileSystem.DriveInfo/src/System.IO.FileSystem.DriveInfo.csproj @@ -8,6 +8,8 @@ + + - - + + + Combines a directory path and a relative file name into a single path. - /// The directory path. - /// The file name. - /// The combined name. - /// - /// This is like Path.Combine, except without argument validation, - /// and a separator is used even if the name argument is empty. - /// - internal static string Combine(string directoryPath, string? name) - { - bool hasSeparator = false; - if (directoryPath.Length > 0) + if (string.IsNullOrWhiteSpace(name)) { - char c = directoryPath[directoryPath.Length - 1]; - hasSeparator = c == Path.DirectorySeparatorChar || c == Path.AltDirectorySeparatorChar; + _fullPath = PathInternal.EnsureTrailingSeparator(_fullPath); } - - return hasSeparator ? - directoryPath + name : - directoryPath + Path.DirectorySeparatorChar + name; } /// diff --git a/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs b/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs index 8ea51f94eaf6d7..fd9c2ce4fa6baf 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs @@ -95,8 +95,10 @@ public FileSystemWatcher(string path) public FileSystemWatcher(string path, string filter) { CheckPathValidity(path); + ArgumentNullException.ThrowIfNull(filter); + _directory = path; - Filter = filter ?? throw new ArgumentNullException(nameof(filter)); + Filter = filter; } /// @@ -368,11 +370,8 @@ protected override void Dispose(bool disposing) } } - private static void CheckPathValidity(string path) + private static void CheckPathValidity(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - // Early check for directory parameter so that an exception can be thrown as early as possible. if (path.Length == 0) throw new ArgumentException(SR.Format(SR.InvalidDirName, path), nameof(path)); diff --git a/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/RenamedEventArgs.cs b/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/RenamedEventArgs.cs index 9d254e0c1f5760..72dc9765f05fb4 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/RenamedEventArgs.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/src/System/IO/RenamedEventArgs.cs @@ -18,7 +18,12 @@ public RenamedEventArgs(WatcherChangeTypes changeType, string directory, string? : base(changeType, directory, name) { _oldName = oldName; - _oldFullPath = Combine(directory, oldName); + _oldFullPath = Path.Join(Path.GetFullPath(directory), oldName); + + if (string.IsNullOrWhiteSpace(oldName)) + { + _oldFullPath = PathInternal.EnsureTrailingSeparator(_oldFullPath); + } } /// diff --git a/src/libraries/System.IO.FileSystem.Watcher/tests/Args.FileSystemEventArgs.cs b/src/libraries/System.IO.FileSystem.Watcher/tests/Args.FileSystemEventArgs.cs index 7a6bf743653e12..16c731a9489085 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/tests/Args.FileSystemEventArgs.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/tests/Args.FileSystemEventArgs.cs @@ -8,28 +8,89 @@ namespace System.IO.Tests public class FileSystemEventArgsTests { [Theory] - [InlineData(WatcherChangeTypes.Changed, "C:", "foo.txt")] - [InlineData(WatcherChangeTypes.All, "C:", "foo.txt")] - [InlineData((WatcherChangeTypes)0, "", "")] - [InlineData((WatcherChangeTypes)0, "", null)] - public static void FileSystemEventArgs_ctor(WatcherChangeTypes changeType, string directory, string name) + [InlineData(WatcherChangeTypes.Changed, "bar", "foo.txt")] + [InlineData(WatcherChangeTypes.All, "bar", "foo.txt")] + [InlineData((WatcherChangeTypes)0, "bar", "")] + [InlineData((WatcherChangeTypes)0, "bar", null)] + public static void FileSystemEventArgs_ctor_NonPathPropertiesAreSetCorrectly(WatcherChangeTypes changeType, string directory, string name) { FileSystemEventArgs args = new FileSystemEventArgs(changeType, directory, name); - if (!directory.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal)) - { - directory += Path.DirectorySeparatorChar; - } - Assert.Equal(changeType, args.ChangeType); - Assert.Equal(directory + name, args.FullPath); Assert.Equal(name, args.Name); } + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("D:\\", "foo.txt", "D:\\foo.txt")] + [InlineData("E:\\bar", "foo.txt", "E:\\bar\\foo.txt")] + public static void FileSystemEventArgs_ctor_DirectoryIsAbsolutePath_Windows(string directory, string name, string expectedFullPath) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + Assert.Equal(expectedFullPath, args.FullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.AnyUnix)] + [InlineData("/", "foo.txt", "/foo.txt")] + [InlineData("/bar", "foo.txt", "/bar/foo.txt")] + public static void FileSystemEventArgs_ctor_DirectoryIsAbsolutePath_Unix(string directory, string name, string expectedFullPath) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + Assert.Equal(expectedFullPath, args.FullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("bar", "foo.txt")] + [InlineData("bar\\baz", "foo.txt")] + public static void FileSystemEventArgs_ctor_DirectoryIsRelativePath_Windows(string directory, string name) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), directory, name), args.FullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.AnyUnix)] + [InlineData("bar", "foo.txt")] + [InlineData("bar/baz", "foo.txt")] + public static void FileSystemEventArgs_ctor_DirectoryIsRelativePath_Unix(string directory, string name) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), directory, name), args.FullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("C:", "foo.txt")] + public static void FileSystemEventArgs_ctor_RelativePathFromCurrentDirectoryInGivenDrive(string directory, string name) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), name), args.FullPath); + } + + [Theory] + [InlineData("bar", "")] + [InlineData("bar", null)] + public static void FileSystemEventArgs_ctor_When_EmptyFileName_Then_FullPathReturnsTheDirectoryFullPath_WithTrailingSeparator(string directory, string name) + { + FileSystemEventArgs args = new FileSystemEventArgs(WatcherChangeTypes.All, directory, name); + + directory = PathInternal.EnsureTrailingSeparator(directory); + + Assert.Equal(PathInternal.EnsureTrailingSeparator(Directory.GetCurrentDirectory()) + directory, args.FullPath); + } + [Fact] public static void FileSystemEventArgs_ctor_Invalid() { - Assert.Throws(() => new FileSystemEventArgs((WatcherChangeTypes)0, null, string.Empty)); + Assert.Throws(() => new FileSystemEventArgs((WatcherChangeTypes)0, null, "foo.txt")); + Assert.Throws(() => new FileSystemEventArgs((WatcherChangeTypes)0, "", "foo.txt")); } } } diff --git a/src/libraries/System.IO.FileSystem.Watcher/tests/Args.RenamedEventArgs.cs b/src/libraries/System.IO.FileSystem.Watcher/tests/Args.RenamedEventArgs.cs index 392c22cf1abe2f..d15ec08d7e9376 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/tests/Args.RenamedEventArgs.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/tests/Args.RenamedEventArgs.cs @@ -8,34 +8,93 @@ namespace System.IO.Tests public class RenamedEventArgsTests { [Theory] - [InlineData(WatcherChangeTypes.Changed, "C:", "foo.txt", "bar.txt")] - [InlineData(WatcherChangeTypes.All, "C:", "foo.txt", "bar.txt")] - [InlineData((WatcherChangeTypes)0, "", "", "")] - [InlineData((WatcherChangeTypes)0, "", null, null)] - public static void RenamedEventArgs_ctor(WatcherChangeTypes changeType, string directory, string name, string oldName) + [InlineData(WatcherChangeTypes.Changed, "bar", "foo.txt", "bar.txt")] + [InlineData(WatcherChangeTypes.All, "bar", "foo.txt", "bar.txt")] + [InlineData((WatcherChangeTypes)0, "bar", "", "")] + [InlineData((WatcherChangeTypes)0, "bar", null, null)] + public static void RenamedEventArgs_ctor_NonPathPropertiesAreSetCorrectly(WatcherChangeTypes changeType, string directory, string name, string oldName) { RenamedEventArgs args = new RenamedEventArgs(changeType, directory, name, oldName); + Assert.Equal(changeType, args.ChangeType); - Assert.Equal(directory + Path.DirectorySeparatorChar + name, args.FullPath); Assert.Equal(name, args.Name); Assert.Equal(oldName, args.OldName); + + // FullPath is tested as part of the base class FileSystemEventArgs tests } [Theory] - [InlineData(WatcherChangeTypes.Changed, "C:", "foo.txt", "bar.txt")] - [InlineData(WatcherChangeTypes.All, "C:", "foo.txt", "bar.txt")] - [InlineData((WatcherChangeTypes)0, "", "", "")] - [InlineData((WatcherChangeTypes)0, "", null, null)] - public static void RenamedEventArgs_ctor_OldFullPath(WatcherChangeTypes changeType, string directory, string name, string oldName) + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("D:\\", "foo.txt", "bar.txt", "D:\\bar.txt")] + [InlineData("E:\\bar", "foo.txt", "bar.txt", "E:\\bar\\bar.txt")] + public static void RenamedEventArgs_ctor_OldFullPath_DirectoryIsAnAbsolutePath_Windows(string directory, string name, string oldName, string expectedOldFullPath) { - RenamedEventArgs args = new RenamedEventArgs(changeType, directory, name, oldName); - Assert.Equal(directory + Path.DirectorySeparatorChar + oldName, args.OldFullPath); + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + Assert.Equal(expectedOldFullPath, args.OldFullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.AnyUnix)] + [InlineData("/", "foo.txt", "bar.txt", "/bar.txt")] + [InlineData("/bar", "foo.txt", "bar.txt", "/bar/bar.txt")] + public static void RenamedEventArgs_ctor_OldFullPath_DirectoryIsAnAbsolutePath_Unix(string directory, string name, string oldName, string expectedOldFullPath) + { + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + Assert.Equal(expectedOldFullPath, args.OldFullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("bar", "foo.txt", "bar.txt")] + [InlineData("bar\\baz", "foo.txt", "bar.txt")] + public static void RenamedEventArgs_ctor_OldFullPath_DirectoryIsRelativePath_Windows(string directory, string name, string oldName) + { + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), directory, oldName), args.OldFullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.AnyUnix)] + [InlineData("bar", "foo.txt", "bar.txt")] + [InlineData("bar/baz", "foo.txt", "bar.txt")] + public static void RenamedEventArgs_ctor_OldFullPath_DirectoryIsRelativePath_Unix(string directory, string name, string oldName) + { + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), directory, oldName), args.OldFullPath); + } + + [Theory] + [PlatformSpecific(TestPlatforms.Windows)] + [InlineData("C:", "foo.txt", "bar.txt")] + public static void RenamedEventArgs_ctor_OldFullPath_DirectoryIsRelativePathFromCurrentDirectoryInGivenDrive(string directory, string name, string oldName) + { + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + Assert.Equal(Path.Combine(Directory.GetCurrentDirectory(), oldName), args.OldFullPath); + } + + [Theory] + [InlineData("bar", "", "")] + [InlineData("bar", null, null)] + [InlineData("bar", "foo.txt", null)] + public static void RenamedEventArgs_ctor_When_EmptyOldFileName_Then_OldFullPathReturnsTheDirectoryFullPath_WithTrailingSeparator(string directory, string name, string oldName) + { + RenamedEventArgs args = new RenamedEventArgs(WatcherChangeTypes.All, directory, name, oldName); + + directory = PathInternal.EnsureTrailingSeparator(directory); + + Assert.Equal(PathInternal.EnsureTrailingSeparator(Directory.GetCurrentDirectory()) + directory, args.OldFullPath); } [Fact] public static void RenamedEventArgs_ctor_Invalid() { - Assert.Throws(() => new RenamedEventArgs((WatcherChangeTypes)0, null, string.Empty, string.Empty)); + Assert.Throws(() => new RenamedEventArgs((WatcherChangeTypes)0, "", "foo.txt", "bar.txt")); + Assert.Throws(() => new RenamedEventArgs((WatcherChangeTypes)0, null, "foo.txt", "bar.txt")); } } } diff --git a/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.Directory.NotifyFilter.cs b/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.Directory.NotifyFilter.cs index 51cce8f30b2f67..4d6be907dbfc1a 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.Directory.NotifyFilter.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.Directory.NotifyFilter.cs @@ -8,11 +8,10 @@ namespace System.IO.Tests { [ActiveIssue("https://github.com/dotnet/runtime/issues/34583", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)] - public class Directory_NotifyFilter_Tests : FileSystemWatcherTest + public partial class Directory_NotifyFilter_Tests : FileSystemWatcherTest { - [DllImport("advapi32.dll", EntryPoint = "SetNamedSecurityInfoW", - CallingConvention = CallingConvention.Winapi, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] - private static extern uint SetSecurityInfoByHandle( string name, uint objectType, uint securityInformation, + [GeneratedDllImport("advapi32.dll", EntryPoint = "SetNamedSecurityInfoW", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] + private static partial uint SetSecurityInfoByHandle( string name, uint objectType, uint securityInformation, IntPtr owner, IntPtr group, IntPtr dacl, IntPtr sacl); private const uint ERROR_SUCCESS = 0; diff --git a/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.File.NotifyFilter.cs b/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.File.NotifyFilter.cs index 92bd0b62728cbc..f1aa1775a00bc7 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.File.NotifyFilter.cs +++ b/src/libraries/System.IO.FileSystem.Watcher/tests/FileSystemWatcher.File.NotifyFilter.cs @@ -10,11 +10,10 @@ namespace System.IO.Tests { [ActiveIssue("https://github.com/dotnet/runtime/issues/34583", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)] - public class File_NotifyFilter_Tests : FileSystemWatcherTest + public partial class File_NotifyFilter_Tests : FileSystemWatcherTest { - [DllImport("advapi32.dll", EntryPoint = "SetNamedSecurityInfoW", - CallingConvention = CallingConvention.Winapi, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] - private static extern uint SetSecurityInfoByHandle(string name, uint objectType, uint securityInformation, + [GeneratedDllImport("advapi32.dll", EntryPoint = "SetNamedSecurityInfoW", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] + private static partial uint SetSecurityInfoByHandle(string name, uint objectType, uint securityInformation, IntPtr owner, IntPtr group, IntPtr dacl, IntPtr sacl); private const uint ERROR_SUCCESS = 0; diff --git a/src/libraries/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj b/src/libraries/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj index f7185093a21c14..7bbb9eb5986b76 100644 --- a/src/libraries/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj +++ b/src/libraries/System.IO.FileSystem.Watcher/tests/System.IO.FileSystem.Watcher.Tests.csproj @@ -1,4 +1,4 @@ - + true true @@ -31,6 +31,8 @@ + + + + + + + + + diff --git a/src/libraries/System.IO.FileSystem/tests/Directory/Move.cs b/src/libraries/System.IO.FileSystem/tests/Directory/Move.cs index c5a145c686cff8..167c474ce40e6f 100644 --- a/src/libraries/System.IO.FileSystem/tests/Directory/Move.cs +++ b/src/libraries/System.IO.FileSystem/tests/Directory/Move.cs @@ -180,7 +180,7 @@ public void TrailingDirectorySeparators() string testDirDest = Path.Combine(TestDirectory, GetTestFileName()); Directory.CreateDirectory(testDirSource); - Directory.Move(testDirSource + Path.DirectorySeparatorChar, testDirDest + Path.DirectorySeparatorChar); + Move(testDirSource + Path.DirectorySeparatorChar, testDirDest + Path.DirectorySeparatorChar); Assert.True(Directory.Exists(testDirDest)); } @@ -216,7 +216,7 @@ public void Path_Longer_Than_MaxLongPath_Throws_Exception() public void ThrowIOExceptionWhenMovingDirectoryToItself() { Directory.CreateDirectory(Path.Combine(TestDirectory, "foo")); - Assert.Throws(() => Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "foo"))); + Assert.Throws(() => Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "foo"))); } [Fact] @@ -224,7 +224,7 @@ public void ThrowIOExceptionWhenMovingToExistingDirectoryWithSameCase() { Directory.CreateDirectory(Path.Combine(TestDirectory, "foo")); Directory.CreateDirectory(Path.Combine(TestDirectory, "bar", "foo")); - Assert.Throws(() => Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "foo"))); + Assert.Throws(() => Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "foo"))); } [Fact] @@ -233,7 +233,7 @@ public void ToNewDirectoryButWithDifferentCasing() Directory.CreateDirectory(Path.Combine(TestDirectory, "foo")); var otherDirectory = Path.Combine(TestDirectory, "bar"); Directory.CreateDirectory(Path.Combine(otherDirectory)); - Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(otherDirectory, "FOO")); + Move(Path.Combine(TestDirectory, "foo"), Path.Combine(otherDirectory, "FOO")); Assert.True(Directory.Exists(Path.Combine(otherDirectory, "FOO"))); Assert.False(Directory.Exists(Path.Combine(TestDirectory, "foo"))); } @@ -245,7 +245,7 @@ public void SameDirectoryWithDifferentCasing_WithFileContent() var fooDirectoryUppercase = Path.Combine(TestDirectory, "FOO"); Directory.CreateDirectory(fooDirectory); File.WriteAllText(Path.Combine(fooDirectory, "bar.txt"), string.Empty); - Directory.Move(fooDirectory, fooDirectoryUppercase); + Move(fooDirectory, fooDirectoryUppercase); var firstFile = Directory.GetFiles(fooDirectoryUppercase); Assert.Equal("bar.txt", Path.GetFileName(firstFile[0])); } @@ -255,7 +255,7 @@ public void WithDifferentRootCase() { Directory.CreateDirectory($"{TestDirectory}/bar"); var root = Path.GetPathRoot(TestDirectory); - Directory.Move($"{TestDirectory}/bar".Replace(root, root.ToLower()), $"{TestDirectory}/foo"); + Move($"{TestDirectory}/bar".Replace(root, root.ToLower()), $"{TestDirectory}/foo"); Assert.True(Directory.Exists($"{TestDirectory}/foo")); Assert.False(Directory.Exists($"{TestDirectory}/bar")); } @@ -267,7 +267,7 @@ public void SameDirectoryWithDifferentCasing_WithDirectoryContent() var fooDirectoryPathUpperCase = Path.Combine(TestDirectory, "FOO"); Directory.CreateDirectory(fooDirectoryPath); Directory.CreateDirectory(Path.Combine(fooDirectoryPath, "bar")); - Directory.Move(fooDirectoryPath, fooDirectoryPathUpperCase); + Move(fooDirectoryPath, fooDirectoryPathUpperCase); var firstFile = Directory.GetDirectories(fooDirectoryPathUpperCase); Assert.Equal("bar", Path.GetFileName(firstFile[0])); } @@ -282,7 +282,7 @@ public void DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory() { Directory.CreateDirectory(Path.Combine(TestDirectory, "FOO")); Directory.CreateDirectory(Path.Combine(TestDirectory, "bar")); - Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "FOO")); + Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "FOO")); } [Fact] @@ -290,7 +290,7 @@ public void DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory() public void DirectoryWithDifferentCasingThanFileSystem_ToItself() { Directory.CreateDirectory(Path.Combine(TestDirectory, "FOO")); - Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "FOO")); + Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "FOO")); Assert.True(Directory.Exists(Path.Combine(TestDirectory, "FOO"))); } @@ -300,7 +300,7 @@ public void DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory_CaseSe { Directory.CreateDirectory(Path.Combine(TestDirectory, "FOO")); Directory.CreateDirectory(Path.Combine(TestDirectory, "bar")); - Assert.Throws(() => Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "FOO"))); + Assert.Throws(() => Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "bar", "FOO"))); } [Fact] @@ -308,7 +308,7 @@ public void DirectoryWithDifferentCasingThanFileSystem_ToAnotherDirectory_CaseSe public void DirectoryWithDifferentCasingThanFileSystem_ToItself_CaseSensitiveOS() { Directory.CreateDirectory(Path.Combine(TestDirectory, "FOO")); - Assert.Throws(() => Directory.Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "FOO"))); + Assert.Throws(() => Move(Path.Combine(TestDirectory, "foo"), Path.Combine(TestDirectory, "FOO"))); } [Fact] @@ -320,7 +320,7 @@ public void CaseVariantDirectoryNameWithCaseVariantPaths_CaseInsensitiveFileSyst Directory.CreateDirectory(Path.Combine(TestDirectory, "FOO", "bar")); Directory.CreateDirectory(Path.Combine(TestDirectory, "foo")); - Assert.Throws(() => Directory.Move(directoryToBeMoved, Path.Combine(newPath, "bar"))); + Assert.Throws(() => Move(directoryToBeMoved, Path.Combine(newPath, "bar"))); } [Fact] @@ -329,7 +329,7 @@ public void MoveDirectory_FailToMoveDirectoryWithUpperCaseToOtherDirectoryWithLo { Directory.CreateDirectory($"{TestDirectory}/FOO"); Directory.CreateDirectory($"{TestDirectory}/bar/foo"); - Assert.Throws(() => Directory.Move($"{TestDirectory}/FOO", $"{TestDirectory}/bar/foo")); + Assert.Throws(() => Move($"{TestDirectory}/FOO", $"{TestDirectory}/bar/foo")); } [Fact] @@ -338,7 +338,7 @@ public void MoveDirectory_NoOpWhenMovingDirectoryWithUpperCaseToOtherDirectoryWi { Directory.CreateDirectory($"{TestDirectory}/FOO"); Directory.CreateDirectory($"{TestDirectory}/bar/foo"); - Directory.Move($"{TestDirectory}/FOO", $"{TestDirectory}/bar/foo"); + Move($"{TestDirectory}/FOO", $"{TestDirectory}/bar/foo"); Assert.True(Directory.Exists(Path.Combine(TestDirectory, "bar", "foo"))); } @@ -348,7 +348,7 @@ public void MoveDirectory_FailToMoveLowerCaseDirectoryWhenUpperCaseDirectoryExis { Directory.CreateDirectory($"{TestDirectory}/bar/FOO"); Directory.CreateDirectory($"{TestDirectory}/foo"); - Assert.Throws(() => Directory.Move($"{TestDirectory}/foo", $"{TestDirectory}/bar/foo")); + Assert.Throws(() => Move($"{TestDirectory}/foo", $"{TestDirectory}/bar/foo")); } [ConditionalFact(nameof(AreAllLongPathsAvailable))] diff --git a/src/libraries/System.IO.FileSystem/tests/DisabledFileLockingTests/System.IO.FileSystem.DisabledFileLocking.Tests.csproj b/src/libraries/System.IO.FileSystem/tests/DisabledFileLockingTests/System.IO.FileSystem.DisabledFileLocking.Tests.csproj index 449a1c3cc2b611..cefda71097791f 100644 --- a/src/libraries/System.IO.FileSystem/tests/DisabledFileLockingTests/System.IO.FileSystem.DisabledFileLocking.Tests.csproj +++ b/src/libraries/System.IO.FileSystem/tests/DisabledFileLockingTests/System.IO.FileSystem.DisabledFileLocking.Tests.csproj @@ -19,6 +19,8 @@ + diff --git a/src/libraries/System.IO.FileSystem/tests/FileSystemTest.Unix.cs b/src/libraries/System.IO.FileSystem/tests/FileSystemTest.Unix.cs index 38c1b353c9207c..96b7c63f80a1ef 100644 --- a/src/libraries/System.IO.FileSystem/tests/FileSystemTest.Unix.cs +++ b/src/libraries/System.IO.FileSystem/tests/FileSystemTest.Unix.cs @@ -8,10 +8,10 @@ namespace System.IO.Tests { public abstract partial class FileSystemTest { - [DllImport("libc", SetLastError = true)] - protected static extern int geteuid(); + [GeneratedDllImport("libc", SetLastError = true)] + protected static partial int geteuid(); - [DllImport("libc", SetLastError = true)] - protected static extern int mkfifo(string path, int mode); + [GeneratedDllImport("libc", CharSet = CharSet.Ansi, SetLastError = true)] + protected static partial int mkfifo(string path, int mode); } } diff --git a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc32.cs b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc32.cs index 4f904ebaa64b07..0d06fa01ee7206 100644 --- a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc32.cs +++ b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc32.cs @@ -85,11 +85,8 @@ protected override void GetHashAndResetCore(Span destination) /// /// is . /// - public static byte[] Hash(byte[] source) + public static byte[] Hash(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source)); } diff --git a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc64.cs b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc64.cs index ca418218259790..e50ed951a6959f 100644 --- a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc64.cs +++ b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/Crc64.cs @@ -83,11 +83,8 @@ protected override void GetHashAndResetCore(Span destination) /// /// is . /// - public static byte[] Hash(byte[] source) + public static byte[] Hash(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source)); } diff --git a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/NonCryptographicHashAlgorithm.cs b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/NonCryptographicHashAlgorithm.cs index 75e76c313bf8cd..59c58059a946f0 100644 --- a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/NonCryptographicHashAlgorithm.cs +++ b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/NonCryptographicHashAlgorithm.cs @@ -80,11 +80,8 @@ protected NonCryptographicHashAlgorithm(int hashLengthInBytes) /// /// is . /// - public void Append(byte[] source) + public void Append(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - Append(new ReadOnlySpan(source)); } @@ -97,11 +94,8 @@ public void Append(byte[] source) /// is . /// /// - public void Append(Stream stream) + public void Append(Stream stream!!) { - if (stream is null) - throw new ArgumentNullException(nameof(stream)); - byte[] buffer = ArrayPool.Shared.Rent(4096); while (true) @@ -132,11 +126,8 @@ public void Append(Stream stream) /// /// is . /// - public Task AppendAsync(Stream stream, CancellationToken cancellationToken = default) + public Task AppendAsync(Stream stream!!, CancellationToken cancellationToken = default) { - if (stream is null) - throw new ArgumentNullException(nameof(stream)); - return AppendAsyncCore(stream, cancellationToken); } diff --git a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash32.cs b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash32.cs index 792a5bbbffb8df..ca36eab898dd90 100644 --- a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash32.cs +++ b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash32.cs @@ -130,11 +130,8 @@ protected override void GetCurrentHashCore(Span destination) /// /// is . /// - public static byte[] Hash(byte[] source) + public static byte[] Hash(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source)); } @@ -147,11 +144,8 @@ public static byte[] Hash(byte[] source) /// /// is . /// - public static byte[] Hash(byte[] source, int seed) + public static byte[] Hash(byte[] source!!, int seed) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source), seed); } diff --git a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash64.cs b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash64.cs index 367c6213c25fe3..18726a8437ad4b 100644 --- a/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash64.cs +++ b/src/libraries/System.IO.Hashing/src/System/IO/Hashing/XxHash64.cs @@ -130,11 +130,8 @@ protected override void GetCurrentHashCore(Span destination) /// /// is . /// - public static byte[] Hash(byte[] source) + public static byte[] Hash(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source)); } @@ -147,11 +144,8 @@ public static byte[] Hash(byte[] source) /// /// is . /// - public static byte[] Hash(byte[] source, long seed) + public static byte[] Hash(byte[] source!!, long seed) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return Hash(new ReadOnlySpan(source), seed); } diff --git a/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFile.cs b/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFile.cs index bb6360f00d5b84..48b9b6f8db8f96 100644 --- a/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFile.cs +++ b/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFile.cs @@ -116,11 +116,8 @@ public void Close() } } - public void DeleteFile(string file) + public void DeleteFile(string file!!) { - if (file == null) - throw new ArgumentNullException(nameof(file)); - EnsureStoreIsValid(); try @@ -134,33 +131,22 @@ public void DeleteFile(string file) } } - public bool FileExists(string path) + public bool FileExists(string path!!) { - if (path == null) - { - throw new ArgumentNullException(nameof(path)); - } - EnsureStoreIsValid(); return File.Exists(GetFullPath(path)); } - public bool DirectoryExists(string path) + public bool DirectoryExists(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - EnsureStoreIsValid(); return Directory.Exists(GetFullPath(path)); } - public void CreateDirectory(string dir) + public void CreateDirectory(string dir!!) { - if (dir == null) - throw new ArgumentNullException(nameof(dir)); - EnsureStoreIsValid(); string isPath = GetFullPath(dir); // Prepend IS root @@ -192,11 +178,8 @@ public void CreateDirectory(string dir) } } - public void DeleteDirectory(string dir) + public void DeleteDirectory(string dir!!) { - if (dir == null) - throw new ArgumentNullException(nameof(dir)); - EnsureStoreIsValid(); try @@ -216,11 +199,8 @@ public string[] GetFileNames() } // foo\abc*.txt will give all abc*.txt files in foo directory - public string[] GetFileNames(string searchPattern) + public string[] GetFileNames(string searchPattern!!) { - if (searchPattern == null) - throw new ArgumentNullException(nameof(searchPattern)); - EnsureStoreIsValid(); try @@ -241,11 +221,8 @@ public string[] GetDirectoryNames() } // foo\data* will give all directory names in foo directory that starts with data - public string[] GetDirectoryNames(string searchPattern) + public string[] GetDirectoryNames(string searchPattern!!) { - if (searchPattern == null) - throw new ArgumentNullException(nameof(searchPattern)); - EnsureStoreIsValid(); try diff --git a/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFileStream.cs b/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFileStream.cs index f620e115aedb46..cfa037eeb2a9a4 100644 --- a/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFileStream.cs +++ b/src/libraries/System.IO.IsolatedStorage/src/System/IO/IsolatedStorage/IsolatedStorageFileStream.cs @@ -81,11 +81,8 @@ private struct InitialiationData } // If IsolatedStorageFile is null, then we default to using a file that is scoped by user, appdomain, and assembly. - private static InitialiationData InitializeFileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, IsolatedStorageFile? isf) + private static InitialiationData InitializeFileStream(string path!!, FileMode mode, FileAccess access, FileShare share, int bufferSize, IsolatedStorageFile? isf) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - if ((path.Length == 0) || path.Equals(BackSlash)) throw new ArgumentException( SR.IsolatedStorage_Path); diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Unix.cs b/src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Unix.cs index 3428b012182f1f..e07d4cea0f8133 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Unix.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Unix.cs @@ -5,23 +5,16 @@ using System.Diagnostics; using System.IO; using System.IO.MemoryMappedFiles; -using System.Threading; namespace Microsoft.Win32.SafeHandles { public sealed partial class SafeMemoryMappedFileHandle : SafeHandleZeroOrMinusOneIsInvalid { - /// - /// The underlying FileStream. May be null. We hold onto the stream rather than just - /// onto the underlying handle to ensure that logic associated with disposing the stream - /// (e.g. deleting the file for DeleteOnClose) happens at the appropriate time. - /// - private readonly FileStream? _fileStream; - /// The FileStream's handle, cached to avoid repeated accesses to FileStream.SafeFileHandle that could, in theory, change. + /// File handle. internal SafeFileHandle? _fileStreamHandle; - /// Whether this SafeHandle owns the _fileStream and should Dispose it when disposed. - internal readonly bool _ownsFileStream; + /// Whether this instance owns the _fileStreamHandle and should Dispose it when disposed. + internal readonly bool _ownsFileHandle; /// The inheritability of the memory-mapped file. internal readonly HandleInheritability _inheritability; @@ -36,23 +29,22 @@ public sealed partial class SafeMemoryMappedFileHandle : SafeHandleZeroOrMinusOn internal readonly long _capacity; /// Initializes the memory-mapped file handle. - /// The underlying file stream; may be null. - /// Whether this SafeHandle is responsible for Disposing the fileStream. + /// The underlying file handle; may be null. + /// Whether this SafeHandle is responsible for Disposing the fileStream. /// The inheritability of the memory-mapped file. /// The access for the memory-mapped file. /// The options for the memory-mapped file. /// The capacity of the memory-mapped file. internal SafeMemoryMappedFileHandle( - FileStream? fileStream, bool ownsFileStream, HandleInheritability inheritability, + SafeFileHandle? fileHandle, bool ownsFileHandle, HandleInheritability inheritability, MemoryMappedFileAccess access, MemoryMappedFileOptions options, long capacity) : base(ownsHandle: true) { - Debug.Assert(!ownsFileStream || fileStream != null, "We can only own a FileStream we're actually given."); + Debug.Assert(!ownsFileHandle || fileHandle != null, "We can only own a FileStream we're actually given."); // Store the arguments. We'll actually open the map when the view is created. - _fileStream = fileStream; - _ownsFileStream = ownsFileStream; + _ownsFileHandle = ownsFileHandle; _inheritability = inheritability; _access = access; _options = options; @@ -60,13 +52,12 @@ internal SafeMemoryMappedFileHandle( IntPtr handlePtr; - if (fileStream != null) + if (fileHandle != null) { bool ignored = false; - SafeFileHandle handle = fileStream.SafeFileHandle; - handle.DangerousAddRef(ref ignored); - _fileStreamHandle = handle; - handlePtr = handle.DangerousGetHandle(); + fileHandle.DangerousAddRef(ref ignored); + _fileStreamHandle = fileHandle; + handlePtr = fileHandle.DangerousGetHandle(); } else { @@ -76,21 +67,18 @@ internal SafeMemoryMappedFileHandle( SetHandle(handlePtr); } - protected override void Dispose(bool disposing) - { - if (disposing && _ownsFileStream) - { - // Clean up the file descriptor (either for a file on disk or a shared memory object) if we created it - _fileStream!.Dispose(); - } - base.Dispose(disposing); - } - protected override bool ReleaseHandle() { if (_fileStreamHandle != null) { SetHandle((IntPtr) (-1)); + + if (_ownsFileHandle) + { + // Clean up the file descriptor (either for a file on disk or a shared memory object) if we created it + _fileStreamHandle.Dispose(); + } + _fileStreamHandle.DangerousRelease(); _fileStreamHandle = null; } diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/Resources/Strings.resx b/src/libraries/System.IO.MemoryMappedFiles/src/Resources/Strings.resx index ce321bd41a358a..a6c978a3c4977a 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/Resources/Strings.resx +++ b/src/libraries/System.IO.MemoryMappedFiles/src/Resources/Strings.resx @@ -171,9 +171,6 @@ FileMode.Truncate is not permitted when creating new memory mapped files. - - fileStream cannot be null. - The capacity cannot be greater than the size of the system's logical address space. diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/System.IO.MemoryMappedFiles.csproj b/src/libraries/System.IO.MemoryMappedFiles/src/System.IO.MemoryMappedFiles.csproj index 87184a69f66fb1..6285027286b7c7 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/System.IO.MemoryMappedFiles.csproj +++ b/src/libraries/System.IO.MemoryMappedFiles/src/System.IO.MemoryMappedFiles.csproj @@ -19,6 +19,8 @@ + diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Unix.cs b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Unix.cs index 6882527cecc8de..df0390d74a4b5b 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Unix.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Unix.cs @@ -9,43 +9,35 @@ namespace System.IO.MemoryMappedFiles public partial class MemoryMappedFile { // This will verify file access and return file size. fileSize will return -1 for special devices. - private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, long capacity, FileStream? fileStream, out long fileSize) + private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, long capacity, SafeFileHandle? fileHandle, long fileSize, out bool isRegularFile) { - fileSize = -1; + // if the length has already been fetched and it's more than 0 it's a regular file and there is no need for the FStat sys-call + isRegularFile = fileHandle is not null && (fileSize > 0 || IsRegularFile(fileHandle)); - if (fileStream != null) + if (isRegularFile) { - Interop.Sys.FileStatus status; - - int result = Interop.Sys.FStat(fileStream.SafeFileHandle, out status); - if (result != 0) + if (access == MemoryMappedFileAccess.Read && capacity > fileSize) { - Interop.ErrorInfo errorInfo = Interop.Sys.GetLastErrorInfo(); - throw Interop.GetExceptionForIoErrno(errorInfo); + throw new ArgumentException(SR.Argument_ReadAccessWithLargeCapacity); } - bool isRegularFile = (status.Mode & Interop.Sys.FileTypes.S_IFCHR) == 0; - - if (isRegularFile) + // one can always create a small view if they do not want to map an entire file + if (fileSize > capacity) { - fileSize = status.Size; - if (access == MemoryMappedFileAccess.Read && capacity > status.Size) - { - throw new ArgumentException(SR.Argument_ReadAccessWithLargeCapacity); - } - - // one can always create a small view if they do not want to map an entire file - if (fileStream.Length > capacity) - { - throw new ArgumentOutOfRangeException(nameof(capacity), SR.ArgumentOutOfRange_CapacityGEFileSizeRequired); - } + throw new ArgumentOutOfRangeException(nameof(capacity), SR.ArgumentOutOfRange_CapacityGEFileSizeRequired); + } - if (access == MemoryMappedFileAccess.Write) - { - throw new ArgumentException(SR.Argument_NewMMFWriteAccessNotAllowed, nameof(access)); - } + if (access == MemoryMappedFileAccess.Write) + { + throw new ArgumentException(SR.Argument_NewMMFWriteAccessNotAllowed, nameof(access)); } } + + static bool IsRegularFile(SafeFileHandle fileHandle) + { + Interop.CheckIo(Interop.Sys.FStat(fileHandle, out Interop.Sys.FileStatus status)); + return (status.Mode & Interop.Sys.FileTypes.S_IFREG) != 0; + } } /// @@ -54,11 +46,11 @@ private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, /// out empty). /// private static SafeMemoryMappedFileHandle CreateCore( - FileStream? fileStream, string? mapName, + SafeFileHandle? fileHandle, string? mapName, HandleInheritability inheritability, MemoryMappedFileAccess access, - MemoryMappedFileOptions options, long capacity) + MemoryMappedFileOptions options, long capacity, long fileSize) { - VerifyMemoryMappedFileAccess(access, capacity, fileStream, out long fileSize); + VerifyMemoryMappedFileAccess(access, capacity, fileHandle, fileSize, out bool isRegularFile); if (mapName != null) { @@ -75,15 +67,15 @@ private static SafeMemoryMappedFileHandle CreateCore( } bool ownsFileStream = false; - if (fileStream != null) + if (fileHandle != null) { - if (fileSize >= 0 && capacity > fileSize) + if (isRegularFile && fileSize >= 0 && capacity > fileSize) { // This map is backed by a file. Make sure the file's size is increased to be // at least as big as the requested capacity of the map for Write* access. try { - fileStream.SetLength(capacity); + Interop.CheckIo(Interop.Sys.FTruncate(fileHandle, capacity)); } catch (ArgumentException exc) { @@ -109,11 +101,11 @@ private static SafeMemoryMappedFileHandle CreateCore( if ((protections & Interop.Sys.MemoryMappedProtections.PROT_WRITE) != 0 && capacity > 0) { ownsFileStream = true; - fileStream = CreateSharedBackingObject(protections, capacity, inheritability); + fileHandle = CreateSharedBackingObject(protections, capacity, inheritability); } } - return new SafeMemoryMappedFileHandle(fileStream, ownsFileStream, inheritability, access, options, capacity); + return new SafeMemoryMappedFileHandle(fileHandle, ownsFileStream, inheritability, access, options, capacity); } /// @@ -126,7 +118,7 @@ private static SafeMemoryMappedFileHandle CreateOrOpenCore( { // Since we don't support mapName != null, CreateOrOpenCore can't // be used to Open an existing map, and thus is identical to CreateCore. - return CreateCore(null, mapName, inheritability, access, options, capacity); + return CreateCore(null, mapName, inheritability, access, options, capacity, -1); } /// @@ -165,13 +157,13 @@ private static FileAccess TranslateProtectionsToFileAccess(Interop.Sys.MemoryMap FileAccess.Read; } - private static FileStream CreateSharedBackingObject(Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability) + private static SafeFileHandle CreateSharedBackingObject(Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability) { return CreateSharedBackingObjectUsingMemory(protections, capacity, inheritability) ?? CreateSharedBackingObjectUsingFile(protections, capacity, inheritability); } - private static FileStream? CreateSharedBackingObjectUsingMemory( + private static SafeFileHandle? CreateSharedBackingObjectUsingMemory( Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability) { // Determine the flags to use when creating the shared memory object @@ -236,8 +228,7 @@ private static FileStream CreateSharedBackingObject(Interop.Sys.MemoryMappedProt throw Interop.GetExceptionForIoErrno(Interop.Sys.GetLastErrorInfo()); } - // Wrap the file descriptor in a stream and return it. - return new FileStream(fd, TranslateProtectionsToFileAccess(protections)); + return fd; } catch { @@ -258,7 +249,7 @@ static string GenerateMapName() } } - private static FileStream CreateSharedBackingObjectUsingFile(Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability) + private static SafeFileHandle CreateSharedBackingObjectUsingFile(Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability) { // We create a temporary backing file in TMPDIR. We don't bother putting it into subdirectories as the file exists // extremely briefly: it's opened/created and then immediately unlinked. @@ -270,19 +261,18 @@ private static FileStream CreateSharedBackingObjectUsingFile(Interop.Sys.MemoryM // Create the backing file, then immediately unlink it so that it'll be cleaned up when no longer in use. // Then enlarge it to the requested capacity. - const int DefaultBufferSize = 0x1000; - var fs = new FileStream(path, FileMode.CreateNew, TranslateProtectionsToFileAccess(protections), share, DefaultBufferSize); + SafeFileHandle fileHandle = File.OpenHandle(path, FileMode.CreateNew, TranslateProtectionsToFileAccess(protections), share); try { Interop.CheckIo(Interop.Sys.Unlink(path)); - fs.SetLength(capacity); + Interop.CheckIo(Interop.Sys.FTruncate(fileHandle, capacity), path); } catch { - fs.Dispose(); + fileHandle.Dispose(); throw; } - return fs; + return fileHandle; } } } diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Windows.cs b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Windows.cs index 8bc32eb666ef8a..37e780f8f69771 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Windows.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Windows.cs @@ -11,15 +11,15 @@ namespace System.IO.MemoryMappedFiles public partial class MemoryMappedFile { // This will verify file access. - private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, long capacity, FileStream fileStream) + private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, long capacity, long fileSize) { - if (access == MemoryMappedFileAccess.Read && capacity > fileStream.Length) + if (access == MemoryMappedFileAccess.Read && capacity > fileSize) { throw new ArgumentException(SR.Argument_ReadAccessWithLargeCapacity); } // one can always create a small view if they do not want to map an entire file - if (fileStream.Length > capacity) + if (fileSize > capacity) { throw new ArgumentOutOfRangeException(nameof(capacity), SR.ArgumentOutOfRange_CapacityGEFileSizeRequired); } @@ -31,16 +31,16 @@ private static void VerifyMemoryMappedFileAccess(MemoryMappedFileAccess access, /// out empty). /// private static SafeMemoryMappedFileHandle CreateCore( - FileStream? fileStream, string? mapName, HandleInheritability inheritability, - MemoryMappedFileAccess access, MemoryMappedFileOptions options, long capacity) + SafeFileHandle? fileHandle, string? mapName, HandleInheritability inheritability, + MemoryMappedFileAccess access, MemoryMappedFileOptions options, long capacity, long fileSize) { - SafeFileHandle? fileHandle = fileStream != null ? fileStream.SafeFileHandle : null; - Interop.Kernel32.SECURITY_ATTRIBUTES secAttrs = GetSecAttrs(inheritability); + Debug.Assert(fileHandle is null || fileSize >= 0); + Interop.Kernel32.SECURITY_ATTRIBUTES secAttrs = GetSecAttrs(inheritability); - if (fileStream != null) + if (fileHandle != null) { - VerifyMemoryMappedFileAccess(access, capacity, fileStream); + VerifyMemoryMappedFileAccess(access, capacity, fileSize); } SafeMemoryMappedFileHandle handle = fileHandle != null ? diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs index 7565b5d678456d..1b9e7217e96463 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs @@ -11,7 +11,7 @@ public partial class MemoryMappedFile : IDisposable { private readonly SafeMemoryMappedFileHandle _handle; private readonly bool _leaveOpen; - private readonly FileStream? _fileStream; + private readonly SafeFileHandle? _fileHandle; internal const int DefaultSize = 0; // Private constructors to be used by the factory methods. @@ -22,18 +22,18 @@ private MemoryMappedFile(SafeMemoryMappedFileHandle handle) Debug.Assert(!handle.IsInvalid); _handle = handle; - _leaveOpen = true; // No FileStream to dispose of in this case. + _leaveOpen = true; // No SafeFileHandle to dispose of in this case. } - private MemoryMappedFile(SafeMemoryMappedFileHandle handle, FileStream fileStream, bool leaveOpen) + private MemoryMappedFile(SafeMemoryMappedFileHandle handle, SafeFileHandle fileHandle, bool leaveOpen) { Debug.Assert(handle != null); Debug.Assert(!handle.IsClosed); Debug.Assert(!handle.IsInvalid); - Debug.Assert(fileStream != null); + Debug.Assert(fileHandle != null); _handle = handle; - _fileStream = fileStream; + _fileHandle = fileHandle; _leaveOpen = leaveOpen; } @@ -103,14 +103,9 @@ public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string return CreateFromFile(path, mode, mapName, capacity, MemoryMappedFileAccess.ReadWrite); } - public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string? mapName, long capacity, + public static MemoryMappedFile CreateFromFile(string path!!, FileMode mode, string? mapName, long capacity, MemoryMappedFileAccess access) { - if (path == null) - { - throw new ArgumentNullException(nameof(path)); - } - if (mapName != null && mapName.Length == 0) { throw new ArgumentException(SR.Argument_MapNameEmptyString); @@ -146,45 +141,53 @@ public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string FileMode.CreateNew => false, _ => File.Exists(path) }; - FileStream fileStream = new FileStream(path, mode, GetFileAccess(access), FileShare.Read, 0x1000, FileOptions.None); + SafeFileHandle fileHandle = File.OpenHandle(path, mode, GetFileAccess(access), FileShare.Read, FileOptions.None); + long fileSize = 0; + if (mode is not (FileMode.CreateNew or FileMode.Create)) // the file is brand new and it's empty + { + try + { + fileSize = RandomAccess.GetLength(fileHandle); + } + catch + { + fileHandle.Dispose(); + throw; + } + } - if (capacity == 0 && fileStream.Length == 0) + if (capacity == 0 && fileSize == 0) { - CleanupFile(fileStream, existed, path); + CleanupFile(fileHandle, existed, path); throw new ArgumentException(SR.Argument_EmptyFile); } if (capacity == DefaultSize) { - capacity = fileStream.Length; + capacity = fileSize; } SafeMemoryMappedFileHandle? handle; try { - handle = CreateCore(fileStream, mapName, HandleInheritability.None, - access, MemoryMappedFileOptions.None, capacity); + handle = CreateCore(fileHandle, mapName, HandleInheritability.None, + access, MemoryMappedFileOptions.None, capacity, fileSize); } catch { - CleanupFile(fileStream, existed, path); + CleanupFile(fileHandle, existed, path); throw; } Debug.Assert(handle != null); Debug.Assert(!handle.IsInvalid); - return new MemoryMappedFile(handle, fileStream, false); + return new MemoryMappedFile(handle, fileHandle, false); } - public static MemoryMappedFile CreateFromFile(FileStream fileStream, string? mapName, long capacity, + public static MemoryMappedFile CreateFromFile(FileStream fileStream!!, string? mapName, long capacity, MemoryMappedFileAccess access, HandleInheritability inheritability, bool leaveOpen) { - if (fileStream == null) - { - throw new ArgumentNullException(nameof(fileStream), SR.ArgumentNull_FileStream); - } - if (mapName != null && mapName.Length == 0) { throw new ArgumentException(SR.Argument_MapNameEmptyString); @@ -195,7 +198,8 @@ public static MemoryMappedFile CreateFromFile(FileStream fileStream, string? map throw new ArgumentOutOfRangeException(nameof(capacity), SR.ArgumentOutOfRange_PositiveOrDefaultCapacityRequired); } - if (capacity == 0 && fileStream.Length == 0) + long fileSize = fileStream.Length; + if (capacity == 0 && fileSize == 0) { throw new ArgumentException(SR.Argument_EmptyFile); } @@ -221,13 +225,14 @@ public static MemoryMappedFile CreateFromFile(FileStream fileStream, string? map if (capacity == DefaultSize) { - capacity = fileStream.Length; + capacity = fileSize; } - SafeMemoryMappedFileHandle handle = CreateCore(fileStream, mapName, inheritability, - access, MemoryMappedFileOptions.None, capacity); + SafeFileHandle fileHandle = fileStream.SafeFileHandle; // access the property only once (it might perform a sys-call) + SafeMemoryMappedFileHandle handle = CreateCore(fileHandle, mapName, inheritability, + access, MemoryMappedFileOptions.None, capacity, fileSize); - return new MemoryMappedFile(handle, fileStream, leaveOpen); + return new MemoryMappedFile(handle, fileHandle, leaveOpen); } // Factory Method Group #3: Creates a new empty memory mapped file. Such memory mapped files are ideal @@ -284,7 +289,7 @@ public static MemoryMappedFile CreateNew(string? mapName, long capacity, MemoryM throw new ArgumentOutOfRangeException(nameof(inheritability)); } - SafeMemoryMappedFileHandle handle = CreateCore(null, mapName, inheritability, access, options, capacity); + SafeMemoryMappedFileHandle handle = CreateCore(null, mapName, inheritability, access, options, capacity, -1); return new MemoryMappedFile(handle); } @@ -443,9 +448,9 @@ protected virtual void Dispose(bool disposing) } finally { - if (_fileStream != null && _leaveOpen == false) + if (!_leaveOpen) { - _fileStream.Dispose(); + _fileHandle?.Dispose(); } } } @@ -478,9 +483,9 @@ internal static FileAccess GetFileAccess(MemoryMappedFileAccess access) } // clean up: close file handle and delete files we created - private static void CleanupFile(FileStream fileStream, bool existed, string path) + private static void CleanupFile(SafeFileHandle fileHandle, bool existed, string path) { - fileStream.Dispose(); + fileHandle.Dispose(); if (!existed) { File.Delete(path); diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs index 8024754a921da6..89652ef5bd7016 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Unix.cs @@ -31,11 +31,11 @@ public abstract partial class MemoryMappedFilesTestBase : FileCleanupTestBase return pageSize; }); - [DllImport("libc", SetLastError = true)] - private static extern int sysconf(int name); + [GeneratedDllImport("libc", SetLastError = true)] + private static partial int sysconf(int name); - [DllImport("libc", SetLastError = true)] - protected static extern int mkfifo(string path, int mode); + [GeneratedDllImport("libc", CharSet = CharSet.Ansi, SetLastError = true)] + protected static partial int mkfifo(string path, int mode); /// Asserts that the handle's inheritability matches the specified value. protected static void AssertInheritability(SafeHandle handle, HandleInheritability inheritability) diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs index 2460c15fd59851..e521424a1d5855 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs @@ -20,13 +20,13 @@ public abstract partial class MemoryMappedFilesTestBase : FileCleanupTestBase return pageSize; }); - [DllImport("kernel32.dll")] - private static extern bool GetHandleInformation(IntPtr hObject, out uint lpdwFlags); + [GeneratedDllImport("kernel32.dll")] + private static partial bool GetHandleInformation(IntPtr hObject, out uint lpdwFlags); private const uint HANDLE_FLAG_INHERIT = 0x00000001; - [DllImport("kernel32.dll")] - private static extern void GetSystemInfo(out SYSTEM_INFO input); + [GeneratedDllImport("kernel32.dll")] + private static partial void GetSystemInfo(out SYSTEM_INFO input); [StructLayout(LayoutKind.Sequential)] private struct SYSTEM_INFO diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/SafeMemoryMappedViewHandleTests.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/SafeMemoryMappedViewHandleTests.cs index 3941ab7f8adacf..c91d0604383fcd 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/SafeMemoryMappedViewHandleTests.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/SafeMemoryMappedViewHandleTests.cs @@ -10,7 +10,7 @@ namespace System.IO.MemoryMappedFiles.Tests /// /// Tests for SafeMemoryMappedViewHandle /// - public class SafeMemoryMappedViewHandleTests : MemoryMappedFilesTestBase + public partial class SafeMemoryMappedViewHandleTests : MemoryMappedFilesTestBase { /// /// Tests that external code can use SafeMemoryMappedViewHandle as the result of a P/Invoke on Windows. @@ -66,7 +66,7 @@ public void SafeMemoryMappedViewHandle_CanUseInPInvoke_Unix() Assert.NotNull(handle); } - [DllImport("libc")] - private static unsafe extern SafeMemoryMappedViewHandle mmap(IntPtr addr, nint lengthint, int prot, int flags, int fd, nuint offset); + [GeneratedDllImport("libc")] + private static unsafe partial SafeMemoryMappedViewHandle mmap(IntPtr addr, nint lengthint, int prot, int flags, int fd, nuint offset); } } diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj b/src/libraries/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj index 9d75e10c13bd6c..92042aa78f2d36 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/System.IO.MemoryMappedFiles.Tests.csproj @@ -20,6 +20,8 @@ + @@ -30,4 +32,4 @@ - \ No newline at end of file + diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ContentType.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ContentType.cs index 12da788ace902c..e9178d5aefeb71 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ContentType.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/ContentType.cs @@ -70,11 +70,8 @@ internal sealed class ContentType /// If the contentType string has leading or /// trailing Linear White Spaces(LWS) characters /// If the contentType string invalid CR-LF characters - internal ContentType(string contentType) + internal ContentType(string contentType!!) { - if (contentType == null) - throw new ArgumentNullException(nameof(contentType)); - if (contentType.Length == 0) { _contentType = string.Empty; diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/IgnoreFlushAndCloseStream.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/IgnoreFlushAndCloseStream.cs index 475596098c1be2..6901cb11751c3a 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/IgnoreFlushAndCloseStream.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/IgnoreFlushAndCloseStream.cs @@ -17,11 +17,8 @@ internal sealed class IgnoreFlushAndCloseStream : Stream /// Constructor /// /// - internal IgnoreFlushAndCloseStream(Stream stream) + internal IgnoreFlushAndCloseStream(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - _stream = stream; } diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InternalRelationshipCollection.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InternalRelationshipCollection.cs index 4713d8f3497aaa..6b034018d4d814 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InternalRelationshipCollection.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/InternalRelationshipCollection.cs @@ -383,14 +383,8 @@ private void ProcessEndElementForRelationshipTag(XmlCompatibilityReader reader) /// Null OK (ID will be generated). /// Indicates whether the add call is made while parsing existing relationships /// from a relationship part, or we are adding a new relationship - private PackageRelationship Add(Uri targetUri, TargetMode targetMode, string relationshipType, string? id, bool parsing) + private PackageRelationship Add(Uri targetUri!!, TargetMode targetMode, string relationshipType!!, string? id, bool parsing) { - if (targetUri == null) - throw new ArgumentNullException(nameof(targetUri)); - - if (relationshipType == null) - throw new ArgumentNullException(nameof(relationshipType)); - ThrowIfInvalidRelationshipType(relationshipType); //Verify if the Enum value is valid diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackUriHelper.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackUriHelper.cs index 5825a149f3315d..fabe42d73b09db 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackUriHelper.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackUriHelper.cs @@ -33,11 +33,8 @@ public static partial class PackUriHelper /// If partUri parameter ends with "/" /// If partUri parameter starts with two "/" /// If partUri parameter has a fragment - public static Uri CreatePartUri(Uri partUri) + public static Uri CreatePartUri(Uri partUri!!) { - if (partUri == null) - throw new ArgumentNullException(nameof(partUri)); - ThrowIfAbsoluteUri(partUri); string serializedPartUri = partUri.GetComponents(UriComponents.SerializationInfoString, UriFormat.SafeUnescaped); @@ -74,16 +71,9 @@ public static Uri CreatePartUri(Uri partUri) /// If either sourcePartUri or targetUri parameter is null /// If either sourcePartUri or targetUri parameter is an absolute Uri /// If sourcePartUri parameter does not conform to the valid partUri syntax - public static Uri ResolvePartUri(Uri sourcePartUri, Uri targetUri) + public static Uri ResolvePartUri(Uri sourcePartUri!!, Uri targetUri!!) { - if (sourcePartUri == null) - throw new ArgumentNullException(nameof(sourcePartUri)); - - if (targetUri == null) - throw new ArgumentNullException(nameof(targetUri)); - ThrowIfAbsoluteUri(sourcePartUri); - ThrowIfAbsoluteUri(targetUri); Uri resolvedUri; @@ -104,16 +94,8 @@ public static Uri ResolvePartUri(Uri sourcePartUri, Uri targetUri) /// The relative path between two parts /// If either the sourcePartUri or targetPartUri parameter is null /// If either sourcePartUri or targetPartUri parameter does not conform to the valid partUri syntax - public static Uri GetRelativeUri(Uri sourcePartUri, Uri targetPartUri) + public static Uri GetRelativeUri(Uri sourcePartUri!!, Uri targetPartUri!!) { - //although we do expect the subsequent ValidatePartUri call to throw in case of null - // as well, it dosn't have the right parameter namer for ValidatePartUri function - if (sourcePartUri == null) - throw new ArgumentNullException(nameof(sourcePartUri)); - - if (targetPartUri == null) - throw new ArgumentNullException(nameof(targetPartUri)); - sourcePartUri = new Uri(s_defaultUri, ValidatePartUri(sourcePartUri)); targetPartUri = new Uri(s_defaultUri, ValidatePartUri(targetPartUri)); @@ -127,11 +109,8 @@ public static Uri GetRelativeUri(Uri sourcePartUri, Uri targetPartUri) /// Normalized Part Uri /// If partUri is null /// If partUri parameter does not conform to the valid partUri syntax - public static Uri GetNormalizedPartUri(Uri partUri) + public static Uri GetNormalizedPartUri(Uri partUri!!) { - if (partUri == null) - throw new ArgumentNullException(nameof(partUri)); - if (!(partUri is ValidatedPartUri)) partUri = ValidatePartUri(partUri); return ((ValidatedPartUri)partUri).NormalizedPartUri; @@ -173,11 +152,8 @@ public static int ComparePartUri(Uri? firstPartUri, Uri? secondPartUri) /// If partUri parameter is null /// If partUri parameter is an absolute Uri /// If partUri parameter does not conform to the valid partUri Syntax - public static bool IsRelationshipPartUri(Uri partUri) + public static bool IsRelationshipPartUri(Uri partUri!!) { - if (partUri == null) - throw new ArgumentNullException(nameof(partUri)); - if (!(partUri is ValidatedPartUri)) partUri = ValidatePartUri(partUri); @@ -197,11 +173,8 @@ public static bool IsRelationshipPartUri(Uri partUri) /// If partUri parameter is null /// If partUri parameter is an absolute Uri /// If partUri parameter does not conform to the valid partUri Syntax - public static Uri GetRelationshipPartUri(Uri partUri) + public static Uri GetRelationshipPartUri(Uri partUri!!) { - if (partUri == null) - throw new ArgumentNullException(nameof(partUri)); - if (Uri.Compare(partUri, PackageRootUri, UriComponents.SerializationInfoString, UriFormat.UriEscaped, StringComparison.Ordinal) == 0) return PackageRelationship.ContainerRelationshipPartName; @@ -251,11 +224,8 @@ public static Uri GetRelationshipPartUri(Uri partUri) /// If relationshipPartUri parameter does not conform to the valid partUri Syntax /// If the relationshipPartUri is not a relationship part Uri itself /// If the resultant Uri obtained is a relationship part Uri - public static Uri GetSourcePartUriFromRelationshipPartUri(Uri relationshipPartUri) + public static Uri GetSourcePartUriFromRelationshipPartUri(Uri relationshipPartUri!!) { - if (relationshipPartUri == null) - throw new ArgumentNullException(nameof(relationshipPartUri)); - // Verify - // 1. Validates that this part Uri is a valid part Uri relationshipPartUri = ValidatePartUri(relationshipPartUri); @@ -382,16 +352,11 @@ internal static string GetStringForPartUri(Uri partUri) #endregion Internal Methods #region Private Methods - private static Exception? GetExceptionIfPartUriInvalid(Uri partUri, out string partUriString) + private static Exception? GetExceptionIfPartUriInvalid(Uri partUri!!, out string partUriString) { partUriString = string.Empty; - if (partUri == null) - return new ArgumentNullException(nameof(partUri)); - - Exception? argumentException; - - argumentException = GetExceptionIfAbsoluteUri(partUri); + Exception? argumentException = GetExceptionIfAbsoluteUri(partUri); if (argumentException != null) return argumentException; diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs index 09c9b5c307534d..82b10256af998d 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/Package.cs @@ -823,15 +823,11 @@ internal static void ThrowIfCompressionOptionInvalid(CompressionOption compressi /// If FileAccess enumeration [packageAccess] does not have one of the valid values /// If FileMode enumeration [packageMode] does not have one of the valid values public static Package Open( - string path, + string path!!, FileMode packageMode, FileAccess packageAccess, FileShare packageShare) { - Package? package = null; - if (path == null) - throw new ArgumentNullException(nameof(path)); - ThrowIfFileModeInvalid(packageMode); ThrowIfFileAccessInvalid(packageAccess); @@ -854,6 +850,7 @@ public static Package Open( //Verify if this is valid for filenames FileInfo packageFileInfo = new FileInfo(path); + Package? package = null; try { package = new ZipPackage(packageFileInfo.FullName, packageMode, packageAccess, packageShare); @@ -870,10 +867,7 @@ public static Package Open( } catch { - if (package != null) - { - package.Close(); - } + package?.Close(); throw; } @@ -891,12 +885,9 @@ public static Package Open( /// If FileAccess enumeration [packageAccess] does not have one of the valid values /// If package to be created should have readwrite/read access and underlying stream is write only /// If package to be created should have readwrite/write access and underlying stream is read only - public static Package Open(Stream stream, FileMode packageMode, FileAccess packageAccess) + public static Package Open(Stream stream!!, FileMode packageMode, FileAccess packageAccess) { Package? package = null; - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - try { // Today the Open(Stream) method is purely used for streams of Zip file format as @@ -915,10 +906,7 @@ public static Package Open(Stream stream, FileMode packageMode, FileAccess packa } catch { - if (package != null) - { - package.Close(); - } + package?.Close(); throw; } diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackagePart.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackagePart.cs index c4a991056dcee5..becc0278706ef8 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackagePart.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackagePart.cs @@ -93,17 +93,11 @@ protected PackagePart(Package package, Uri partUri, string? contentType) /// If parameter "partUri" is null /// If CompressionOption enumeration [compressionOption] does not have one of the valid values /// If parameter "partUri" does not conform to the valid partUri syntax - protected PackagePart(Package package, - Uri partUri, + protected PackagePart(Package package!!, + Uri partUri!!, string? contentType, CompressionOption compressionOption) { - if (package == null) - throw new ArgumentNullException(nameof(package)); - - if (partUri == null) - throw new ArgumentNullException(nameof(partUri)); - Package.ThrowIfCompressionOptionInvalid(compressionOption); _uri = PackUriHelper.ValidatePartUri(partUri); diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationship.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationship.cs index d7376bc0615553..36aa72cb50c5c5 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationship.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationship.cs @@ -110,21 +110,10 @@ public Package Package /// enum specifying the interpretation of the base uri for the target uri /// type name /// unique identifier - internal PackageRelationship(Package package, PackagePart? sourcePart, Uri targetUri, TargetMode targetMode, string relationshipType, string id) + internal PackageRelationship(Package package!!, PackagePart? sourcePart, Uri targetUri!!, TargetMode targetMode, string relationshipType!!, string id!!) { //sourcePart can be null to represent that the relationships are at the package level - if (package == null) - throw new ArgumentNullException(nameof(package)); - - if (targetUri == null) - throw new ArgumentNullException(nameof(targetUri)); - - if (relationshipType == null) - throw new ArgumentNullException(nameof(relationshipType)); - - if (id == null) - throw new ArgumentNullException(nameof(id)); // The ID is guaranteed to be an XML ID by the caller (InternalRelationshipCollection). // The following check is a precaution against future bug introductions. #if DEBUG diff --git a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationshipSelector.cs b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationshipSelector.cs index d594bff1cf4700..2ea435a5132ac3 100644 --- a/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationshipSelector.cs +++ b/src/libraries/System.IO.Packaging/src/System/IO/Packaging/PackageRelationshipSelector.cs @@ -28,14 +28,8 @@ public sealed class PackageRelationshipSelector /// If PackageRelationshipSelectorType.Type and selection criteria is not valid relationship type /// If sourceUri is not "/" to indicate the PackageRoot, then it must conform to the /// valid PartUri syntax - public PackageRelationshipSelector(Uri sourceUri, PackageRelationshipSelectorType selectorType, string selectionCriteria) + public PackageRelationshipSelector(Uri sourceUri!!, PackageRelationshipSelectorType selectorType, string selectionCriteria!!) { - if (sourceUri == null) - throw new ArgumentNullException(nameof(sourceUri)); - - if (selectionCriteria == null) - throw new ArgumentNullException(nameof(selectionCriteria)); - //If the sourceUri is not equal to "/", it must be a valid part name. if (Uri.Compare(sourceUri, PackUriHelper.PackageRootUri, UriComponents.SerializationInfoString, UriFormat.UriEscaped, StringComparison.Ordinal) != 0) sourceUri = PackUriHelper.ValidatePartUri(sourceUri); @@ -109,13 +103,8 @@ public string SelectionCriteria /// Package object from which we get the relationships /// /// If package parameter is null - public List Select(Package package) + public List Select(Package package!!) { - if (package == null) - { - throw new ArgumentNullException(nameof(package)); - } - List relationships = new List(0); switch (SelectorType) diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReader.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReader.cs index 5c1beb95c6b9a6..6222a5b00c768a 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReader.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReader.cs @@ -163,13 +163,8 @@ public static PipeReader Create(ReadOnlySequence sequence) /// The pipe writer to which the contents of the current stream will be copied. /// The token to monitor for cancellation requests. The default value is . /// A task that represents the asynchronous copy operation. - public virtual Task CopyToAsync(PipeWriter destination, CancellationToken cancellationToken = default) + public virtual Task CopyToAsync(PipeWriter destination!!, CancellationToken cancellationToken = default) { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (cancellationToken.IsCancellationRequested) { return Task.FromCanceled(cancellationToken); @@ -185,13 +180,8 @@ public virtual Task CopyToAsync(PipeWriter destination, CancellationToken cancel /// The stream to which the contents of the current stream will be copied. /// The token to monitor for cancellation requests. The default value is . /// A task that represents the asynchronous copy operation. - public virtual Task CopyToAsync(Stream destination, CancellationToken cancellationToken = default) + public virtual Task CopyToAsync(Stream destination!!, CancellationToken cancellationToken = default) { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (cancellationToken.IsCancellationRequested) { return Task.FromCanceled(cancellationToken); diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReaderStream.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReaderStream.cs index 3dc9b49e3e1d5e..c1d4635b10cdbc 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReaderStream.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeReaderStream.cs @@ -45,13 +45,8 @@ public override void Flush() { } - public override int Read(byte[] buffer, int offset, int count) + public override int Read(byte[] buffer!!, int offset, int count) { - if (buffer is null) - { - throw new ArgumentNullException(nameof(buffer)); - } - return ReadInternal(new Span(buffer, offset, count)); } @@ -80,13 +75,8 @@ public sealed override IAsyncResult BeginRead(byte[] buffer, int offset, int cou public sealed override int EndRead(IAsyncResult asyncResult) => TaskToApm.End(asyncResult); - public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + public override Task ReadAsync(byte[] buffer!!, int offset, int count, CancellationToken cancellationToken) { - if (buffer is null) - { - throw new ArgumentNullException(nameof(buffer)); - } - return ReadAsyncInternal(new Memory(buffer, offset, count), cancellationToken).AsTask(); } diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeWriterStream.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeWriterStream.cs index 22f764979bc629..9c5e19b05bbab9 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeWriterStream.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/PipeWriterStream.cs @@ -69,13 +69,8 @@ public sealed override void EndWrite(IAsyncResult asyncResult) => public override void Write(byte[] buffer, int offset, int count) => WriteAsync(buffer, offset, count).GetAwaiter().GetResult(); - public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + public override Task WriteAsync(byte[] buffer!!, int offset, int count, CancellationToken cancellationToken) { - if (buffer is null) - { - throw new ArgumentNullException(nameof(buffer)); - } - ValueTask valueTask = _pipeWriter.WriteAsync(new ReadOnlyMemory(buffer, offset, count), cancellationToken); return GetFlushResultAsTask(valueTask); diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeExtensions.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeExtensions.cs index 75b2c26469966c..b9cecadcb9dba7 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeExtensions.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeExtensions.cs @@ -14,18 +14,8 @@ public static class StreamPipeExtensions /// The writer to which the contents of the source stream will be copied. /// The token to monitor for cancellation requests. The default value is . /// A task that represents the asynchronous copy operation. - public static Task CopyToAsync(this Stream source, PipeWriter destination, CancellationToken cancellationToken = default) + public static Task CopyToAsync(this Stream source!!, PipeWriter destination!!, CancellationToken cancellationToken = default) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (cancellationToken.IsCancellationRequested) { return Task.FromCanceled(cancellationToken); diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeReader.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeReader.cs index cc457bf9bf2bff..288e7cb2fca019 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeReader.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeReader.cs @@ -35,15 +35,9 @@ internal sealed class StreamPipeReader : PipeReader /// /// The stream to read from. /// The options to use. - public StreamPipeReader(Stream readingStream, StreamPipeReaderOptions options) + public StreamPipeReader(Stream readingStream!!, StreamPipeReaderOptions options!!) { - InnerStream = readingStream ?? throw new ArgumentNullException(nameof(readingStream)); - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - + InnerStream = readingStream; _options = options; _bufferSegmentPool = new BufferSegmentStack(InitialSegmentPoolSize); } diff --git a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeWriter.cs b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeWriter.cs index 38de6ffad46b47..6e233f83d55d4b 100644 --- a/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeWriter.cs +++ b/src/libraries/System.IO.Pipelines/src/System/IO/Pipelines/StreamPipeWriter.cs @@ -46,15 +46,9 @@ private CancellationTokenSource InternalTokenSource } } - public StreamPipeWriter(Stream writingStream, StreamPipeWriterOptions options) + public StreamPipeWriter(Stream writingStream!!, StreamPipeWriterOptions options!!) { - InnerStream = writingStream ?? throw new ArgumentNullException(nameof(writingStream)); - - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - + InnerStream = writingStream; _minimumBufferSize = options.MinimumBufferSize; _pool = options.Pool == MemoryPool.Shared ? null : options.Pool; _maxPooledBufferSize = _pool?.MaxBufferSize ?? -1; diff --git a/src/libraries/System.IO.Pipes/src/Resources/Strings.resx b/src/libraries/System.IO.Pipes/src/Resources/Strings.resx index 166aacdb95798c..4d2752edab8b07 100644 --- a/src/libraries/System.IO.Pipes/src/Resources/Strings.resx +++ b/src/libraries/System.IO.Pipes/src/Resources/Strings.resx @@ -132,9 +132,6 @@ Handle has been disposed or is invalid. - - Buffer cannot be null. - serverName cannot be null. Use \".\" for current machine. diff --git a/src/libraries/System.IO.Pipes/src/System.IO.Pipes.csproj b/src/libraries/System.IO.Pipes/src/System.IO.Pipes.csproj index 55437bf7f69bea..0cf60c20c9a1c5 100644 --- a/src/libraries/System.IO.Pipes/src/System.IO.Pipes.csproj +++ b/src/libraries/System.IO.Pipes/src/System.IO.Pipes.csproj @@ -21,6 +21,8 @@ + diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeClientStream.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeClientStream.cs index 8c62382f50980e..b504db433bcb01 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeClientStream.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeClientStream.cs @@ -24,10 +24,7 @@ public AnonymousPipeClientStream(PipeDirection direction, string pipeHandleAsStr { throw new NotSupportedException(SR.NotSupported_AnonymousPipeUnidirectional); } - if (pipeHandleAsString == null) - { - throw new ArgumentNullException(nameof(pipeHandleAsString)); - } + ArgumentNullException.ThrowIfNull(pipeHandleAsString); // Initialize SafePipeHandle from String and check if it's valid. First see if it's parseable bool parseable = long.TryParse(pipeHandleAsString, out long result); @@ -53,10 +50,7 @@ public AnonymousPipeClientStream(PipeDirection direction, SafePipeHandle safePip { throw new NotSupportedException(SR.NotSupported_AnonymousPipeUnidirectional); } - if (safePipeHandle == null) - { - throw new ArgumentNullException(nameof(safePipeHandle)); - } + ArgumentNullException.ThrowIfNull(safePipeHandle); if (safePipeHandle.IsInvalid) { throw new ArgumentException(SR.Argument_InvalidHandle, nameof(safePipeHandle)); diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeServerStream.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeServerStream.cs index bbebf3d79d993d..cdb54c60e37e9a 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeServerStream.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/AnonymousPipeServerStream.cs @@ -37,14 +37,9 @@ public AnonymousPipeServerStream(PipeDirection direction, SafePipeHandle serverS { throw new NotSupportedException(SR.NotSupported_AnonymousPipeUnidirectional); } - if (serverSafePipeHandle == null) - { - throw new ArgumentNullException(nameof(serverSafePipeHandle)); - } - if (clientSafePipeHandle == null) - { - throw new ArgumentNullException(nameof(clientSafePipeHandle)); - } + ArgumentNullException.ThrowIfNull(serverSafePipeHandle); + ArgumentNullException.ThrowIfNull(clientSafePipeHandle); + if (serverSafePipeHandle.IsInvalid) { throw new ArgumentException(SR.Argument_InvalidHandle, nameof(serverSafePipeHandle)); diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs index a0240686342174..8a7a9213a76ffa 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeClientStream.cs @@ -87,13 +87,9 @@ public NamedPipeClientStream(string serverName, string pipeName, PipeDirection d } // Create a NamedPipeClientStream from an existing server pipe handle. - public NamedPipeClientStream(PipeDirection direction, bool isAsync, bool isConnected, SafePipeHandle safePipeHandle) + public NamedPipeClientStream(PipeDirection direction, bool isAsync, bool isConnected, SafePipeHandle safePipeHandle!!) : base(direction, 0) { - if (safePipeHandle == null) - { - throw new ArgumentNullException(nameof(safePipeHandle)); - } if (safePipeHandle.IsInvalid) { throw new ArgumentException(SR.Argument_InvalidHandle, nameof(safePipeHandle)); diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeServerStream.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeServerStream.cs index 9fc1106e29282d..c9f46b24c54f90 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeServerStream.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/NamedPipeServerStream.cs @@ -138,13 +138,9 @@ private void ValidateParameters( } // Create a NamedPipeServerStream from an existing server pipe handle. - public NamedPipeServerStream(PipeDirection direction, bool isAsync, bool isConnected, SafePipeHandle safePipeHandle) + public NamedPipeServerStream(PipeDirection direction, bool isAsync, bool isConnected, SafePipeHandle safePipeHandle!!) : base(direction, PipeTransmissionMode.Byte, 0) { - if (safePipeHandle == null) - { - throw new ArgumentNullException(nameof(safePipeHandle)); - } if (safePipeHandle.IsInvalid) { throw new ArgumentException(SR.Argument_InvalidHandle, nameof(safePipeHandle)); diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipeSecurity.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipeSecurity.cs index c37f180e35df93..8d0b188b622631 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipeSecurity.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipeSecurity.cs @@ -17,37 +17,23 @@ public PipeSecurity() internal PipeSecurity(SafePipeHandle safeHandle, AccessControlSections includeSections) : base(false, ResourceType.KernelObject, safeHandle, includeSections) { } - public void AddAccessRule(PipeAccessRule rule) + public void AddAccessRule(PipeAccessRule rule!!) { - if (rule == null) - throw new ArgumentNullException(nameof(rule)); - base.AddAccessRule(rule); } - public void SetAccessRule(PipeAccessRule rule) + public void SetAccessRule(PipeAccessRule rule!!) { - if (rule == null) - throw new ArgumentNullException(nameof(rule)); - base.SetAccessRule(rule); } - public void ResetAccessRule(PipeAccessRule rule) + public void ResetAccessRule(PipeAccessRule rule!!) { - if (rule == null) - throw new ArgumentNullException(nameof(rule)); - base.ResetAccessRule(rule); } - public bool RemoveAccessRule(PipeAccessRule rule) + public bool RemoveAccessRule(PipeAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - // If the rule to be removed matches what is there currently then // remove it unaltered. That is, don't mask off the Synchronize bit. AuthorizationRuleCollection rules = GetAccessRules(true, true, rule.IdentityReference.GetType()); @@ -82,12 +68,8 @@ public bool RemoveAccessRule(PipeAccessRule rule) } } - public void RemoveAccessRuleSpecific(PipeAccessRule rule) + public void RemoveAccessRuleSpecific(PipeAccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } // If the rule to be removed matches what is there currently then // remove it unaltered. That is, don't mask off the Synchronize bit diff --git a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipesAclExtensions.cs b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipesAclExtensions.cs index 6ebcb91b312920..59bcc66559393f 100644 --- a/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipesAclExtensions.cs +++ b/src/libraries/System.IO.Pipes/src/System/IO/Pipes/PipesAclExtensions.cs @@ -17,13 +17,8 @@ public static PipeSecurity GetAccessControl(this PipeStream stream) return new PipeSecurity(handle, AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group); } - public static void SetAccessControl(this PipeStream stream, PipeSecurity pipeSecurity) + public static void SetAccessControl(this PipeStream stream, PipeSecurity pipeSecurity!!) { - if (pipeSecurity == null) - { - throw new ArgumentNullException(nameof(pipeSecurity)); - } - // Checks that State != WaitingToConnect and State != Closed var handle = stream.SafePipeHandle; diff --git a/src/libraries/System.IO.Ports/src/System.IO.Ports.csproj b/src/libraries/System.IO.Ports/src/System.IO.Ports.csproj index efd034b6044424..6dc6c00f09d760 100644 --- a/src/libraries/System.IO.Ports/src/System.IO.Ports.csproj +++ b/src/libraries/System.IO.Ports/src/System.IO.Ports.csproj @@ -36,6 +36,12 @@ System.IO.Ports.SerialPort + + + + + Link="Common\Interop\Windows\Interop.SECURITY_ATTRIBUTES.cs" /> - diff --git a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Unix.cs b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Unix.cs index dd490acaecf626..fd0a9b9c29bb42 100644 --- a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Unix.cs +++ b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Unix.cs @@ -566,14 +566,9 @@ private int EndReadWrite(IAsyncResult asyncResult) } // this method is used by SerialPort upon SerialStream's creation - internal SerialStream(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits, int readTimeout, int writeTimeout, Handshake handshake, + internal SerialStream(string portName!!, int baudRate, Parity parity, int dataBits, StopBits stopBits, int readTimeout, int writeTimeout, Handshake handshake, bool dtrEnable, bool rtsEnable, bool discardNull, byte parityReplace) { - if (portName == null) - { - throw new ArgumentNullException(nameof(portName)); - } - CheckBaudRate(baudRate); // Error checking done in SerialPort. diff --git a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Windows.cs b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Windows.cs index 2c9e86a8220750..73587fd40f7048 100644 --- a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Windows.cs +++ b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.Windows.cs @@ -555,14 +555,9 @@ internal int BytesToWrite // -----------SECTION: constructor --------------------------* // this method is used by SerialPort upon SerialStream's creation - internal SerialStream(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits, int readTimeout, int writeTimeout, Handshake handshake, + internal SerialStream(string portName!!, int baudRate, Parity parity, int dataBits, StopBits stopBits, int readTimeout, int writeTimeout, Handshake handshake, bool dtrEnable, bool rtsEnable, bool discardNull, byte parityReplace) { - if (portName == null) - { - throw new ArgumentNullException(nameof(portName)); - } - if (!portName.StartsWith("COM", StringComparison.OrdinalIgnoreCase) || !uint.TryParse( #if NETCOREAPP diff --git a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.cs b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.cs index 2de7ab2d15b351..c197c3c8a52b5b 100644 --- a/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.cs +++ b/src/libraries/System.IO.Ports/src/System/IO/Ports/SerialStream.cs @@ -88,10 +88,8 @@ public override void Write(byte[] array, int offset, int count) Dispose(false); } - private void CheckArrayArguments(byte[] array, int offset, int count) + private void CheckArrayArguments(byte[] array!!, int offset, int count) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (offset < 0) throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNumRequired); if (count < 0) diff --git a/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/DynamicAttribute.cs b/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/DynamicAttribute.cs index db23e46dc13263..20803ebc1cc8bf 100644 --- a/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/DynamicAttribute.cs +++ b/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/DynamicAttribute.cs @@ -42,13 +42,8 @@ public DynamicAttribute() /// normally, in which case the appropriate attribute specification should /// use a transformFlags value of { false, true, false }. /// - public DynamicAttribute(bool[] transformFlags) + public DynamicAttribute(bool[] transformFlags!!) { - if (transformFlags == null) - { - throw new ArgumentNullException(nameof(transformFlags)); - } - _transformFlags = transformFlags; } diff --git a/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/ReadOnlyCollectionBuilder.cs b/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/ReadOnlyCollectionBuilder.cs index 1524c49d9f08a9..4a571f1a69a0db 100644 --- a/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/ReadOnlyCollectionBuilder.cs +++ b/src/libraries/System.Linq.Expressions/src/System/Runtime/CompilerServices/ReadOnlyCollectionBuilder.cs @@ -46,11 +46,8 @@ public ReadOnlyCollectionBuilder(int capacity) /// Constructs a , copying contents of the given collection. /// /// The collection whose elements to copy to the builder. - public ReadOnlyCollectionBuilder(IEnumerable collection) + public ReadOnlyCollectionBuilder(IEnumerable collection!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - if (collection is ICollection c) { int count = c.Count; @@ -382,10 +379,8 @@ void IList.Remove(object? value) #region ICollection Members - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(nameof(array)); diff --git a/src/libraries/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs b/src/libraries/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs index 0bb4d6990a9f5a..0602fd69596841 100644 --- a/src/libraries/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs +++ b/src/libraries/System.Linq.Parallel/src/System/Linq/ParallelEnumerable.cs @@ -93,13 +93,8 @@ public static class ParallelEnumerable /// /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery AsParallel(this IEnumerable source) + public static ParallelQuery AsParallel(this IEnumerable source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - return new ParallelEnumerableWrapper(source); } @@ -118,13 +113,8 @@ public static ParallelQuery AsParallel(this IEnumerable /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery AsParallel(this Partitioner source) + public static ParallelQuery AsParallel(this Partitioner source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - return new PartitionerQueryOperator(source); } @@ -148,13 +138,8 @@ public static ParallelQuery AsParallel(this Partitioner /// The source sequence which will maintain ordering in the query. - public static ParallelQuery AsOrdered(this ParallelQuery source) + public static ParallelQuery AsOrdered(this ParallelQuery source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (!(source is ParallelEnumerableWrapper || source is IParallelPartitionable)) { if (source is PartitionerQueryOperator partitionerOp) @@ -191,13 +176,8 @@ public static ParallelQuery AsOrdered(this ParallelQuery /// The source sequence which will maintain ordering in the query. - public static ParallelQuery AsOrdered(this ParallelQuery source) + public static ParallelQuery AsOrdered(this ParallelQuery source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - ParallelEnumerableWrapper? wrapper = source as ParallelEnumerableWrapper; if (wrapper == null) { @@ -220,13 +200,8 @@ public static ParallelQuery AsOrdered(this ParallelQuery source) /// /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery AsUnordered(this ParallelQuery source) + public static ParallelQuery AsUnordered(this ParallelQuery source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - return new OrderingQueryOperator(QueryOperator.AsQueryOperator(source), false); } @@ -242,10 +217,8 @@ public static ParallelQuery AsUnordered(this ParallelQuery /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery AsParallel(this IEnumerable source) + public static ParallelQuery AsParallel(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return new ParallelEnumerableWrapper(source); } @@ -269,9 +242,8 @@ public static ParallelQuery AsParallel(this IEnumerable source) /// /// is a null reference (Nothing in Visual Basic). /// - public static IEnumerable AsSequential(this ParallelQuery source) + public static IEnumerable AsSequential(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); // Ditch the wrapper, if there is one. if (source is ParallelEnumerableWrapper wrapper) @@ -301,9 +273,8 @@ public static IEnumerable AsSequential(this ParallelQuery /// is less than 1 or greater than 512. /// - public static ParallelQuery WithDegreeOfParallelism(this ParallelQuery source, int degreeOfParallelism) + public static ParallelQuery WithDegreeOfParallelism(this ParallelQuery source!!, int degreeOfParallelism) { - if (source == null) throw new ArgumentNullException(nameof(source)); if (degreeOfParallelism < 1 || degreeOfParallelism > Scheduling.MAX_SUPPORTED_DOP) { throw new ArgumentOutOfRangeException(nameof(degreeOfParallelism)); @@ -330,10 +301,8 @@ public static ParallelQuery WithDegreeOfParallelism(this Paral /// /// WithCancellation is used multiple times in the query. /// - public static ParallelQuery WithCancellation(this ParallelQuery source, CancellationToken cancellationToken) + public static ParallelQuery WithCancellation(this ParallelQuery source!!, CancellationToken cancellationToken) { - if (source == null) throw new ArgumentNullException(nameof(source)); - QuerySettings settings = QuerySettings.Empty; settings.CancellationState = new CancellationState(cancellationToken); @@ -358,9 +327,8 @@ public static ParallelQuery WithCancellation(this ParallelQuer /// /// WithExecutionMode is used multiple times in the query. /// - public static ParallelQuery WithExecutionMode(this ParallelQuery source, ParallelExecutionMode executionMode) + public static ParallelQuery WithExecutionMode(this ParallelQuery source!!, ParallelExecutionMode executionMode) { - if (source == null) throw new ArgumentNullException(nameof(source)); if (executionMode != ParallelExecutionMode.Default && executionMode != ParallelExecutionMode.ForceParallelism) { throw new ArgumentException(SR.ParallelEnumerable_WithQueryExecutionMode_InvalidMode); @@ -390,9 +358,8 @@ public static ParallelQuery WithExecutionMode(this ParallelQue /// /// WithMergeOptions is used multiple times in the query. /// - public static ParallelQuery WithMergeOptions(this ParallelQuery source, ParallelMergeOptions mergeOptions) + public static ParallelQuery WithMergeOptions(this ParallelQuery source!!, ParallelMergeOptions mergeOptions) { - if (source == null) throw new ArgumentNullException(nameof(source)); if (mergeOptions != ParallelMergeOptions.Default && mergeOptions != ParallelMergeOptions.AutoBuffered && mergeOptions != ParallelMergeOptions.NotBuffered @@ -502,11 +469,8 @@ public static ParallelQuery Empty() /// /// The query was canceled. /// - public static void ForAll(this ParallelQuery source, Action action) + public static void ForAll(this ParallelQuery source!!, Action action!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (action == null) throw new ArgumentNullException(nameof(action)); - // We just instantiate the forall operator and invoke it synchronously on this thread. // By the time it returns, the entire query has been executed and the actions run.. new ForAllOperator(source, action).RunSynchronously(); @@ -534,11 +498,8 @@ public static void ForAll(this ParallelQuery source, Action /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Where(this ParallelQuery source, Func predicate) + public static ParallelQuery Where(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new WhereQueryOperator(source, predicate); } @@ -552,11 +513,8 @@ public static ParallelQuery Where(this ParallelQuery /// /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Where(this ParallelQuery source, Func predicate) + public static ParallelQuery Where(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new IndexedWhereQueryOperator(source, predicate); } @@ -578,11 +536,8 @@ public static ParallelQuery Where(this ParallelQuery /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Select( - this ParallelQuery source, Func selector) + this ParallelQuery source!!, Func selector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (selector == null) throw new ArgumentNullException(nameof(selector)); - return new SelectQueryOperator(source, selector); } @@ -599,11 +554,8 @@ public static ParallelQuery Select( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Select( - this ParallelQuery source, Func selector) + this ParallelQuery source!!, Func selector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (selector == null) throw new ArgumentNullException(nameof(selector)); - return new IndexedSelectQueryOperator(source, selector); } @@ -629,12 +581,8 @@ public static ParallelQuery Select( /// or or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Zip( - this ParallelQuery first, ParallelQuery second, Func resultSelector) + this ParallelQuery first!!, ParallelQuery second!!, Func resultSelector!!) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new ZipQueryOperator(first, second, resultSelector); } @@ -750,16 +698,10 @@ public static ParallelQuery Join( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Join( - this ParallelQuery outer, ParallelQuery inner, - Func outerKeySelector, Func innerKeySelector, - Func resultSelector, IEqualityComparer? comparer) + this ParallelQuery outer!!, ParallelQuery inner!!, + Func outerKeySelector!!, Func innerKeySelector!!, + Func resultSelector!!, IEqualityComparer? comparer) { - if (outer == null) throw new ArgumentNullException(nameof(outer)); - if (inner == null) throw new ArgumentNullException(nameof(inner)); - if (outerKeySelector == null) throw new ArgumentNullException(nameof(outerKeySelector)); - if (innerKeySelector == null) throw new ArgumentNullException(nameof(innerKeySelector)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new JoinQueryOperator( outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer); } @@ -884,16 +826,10 @@ public static ParallelQuery GroupJoin( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery GroupJoin( - this ParallelQuery outer, ParallelQuery inner, - Func outerKeySelector, Func innerKeySelector, - Func, TResult> resultSelector, IEqualityComparer? comparer) + this ParallelQuery outer!!, ParallelQuery inner!!, + Func outerKeySelector!!, Func innerKeySelector!!, + Func, TResult> resultSelector!!, IEqualityComparer? comparer) { - if (outer == null) throw new ArgumentNullException(nameof(outer)); - if (inner == null) throw new ArgumentNullException(nameof(inner)); - if (outerKeySelector == null) throw new ArgumentNullException(nameof(outerKeySelector)); - if (innerKeySelector == null) throw new ArgumentNullException(nameof(innerKeySelector)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new GroupJoinQueryOperator(outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer); } @@ -949,11 +885,8 @@ public static ParallelQuery GroupJoin( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery SelectMany( - this ParallelQuery source, Func> selector) + this ParallelQuery source!!, Func> selector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (selector == null) throw new ArgumentNullException(nameof(selector)); - return new SelectManyQueryOperator(source, selector, null, null); } @@ -972,11 +905,8 @@ public static ParallelQuery SelectMany( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery SelectMany( - this ParallelQuery source, Func> selector) + this ParallelQuery source!!, Func> selector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (selector == null) throw new ArgumentNullException(nameof(selector)); - return new SelectManyQueryOperator(source, null, selector, null); } @@ -1001,13 +931,9 @@ public static ParallelQuery SelectMany( /// is a null reference (Nothing in Visual Basic). /// public static ParallelQuery SelectMany( - this ParallelQuery source, Func> collectionSelector, - Func resultSelector) + this ParallelQuery source!!, Func> collectionSelector!!, + Func resultSelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (collectionSelector == null) throw new ArgumentNullException(nameof(collectionSelector)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new SelectManyQueryOperator(source, collectionSelector, null, resultSelector); } @@ -1037,13 +963,9 @@ public static ParallelQuery SelectMany( /// is a null reference (Nothing in Visual Basic). /// public static ParallelQuery SelectMany( - this ParallelQuery source, Func> collectionSelector, - Func resultSelector) + this ParallelQuery source!!, Func> collectionSelector!!, + Func resultSelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (collectionSelector == null) throw new ArgumentNullException(nameof(collectionSelector)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new SelectManyQueryOperator(source, null, collectionSelector, resultSelector); } @@ -1072,11 +994,8 @@ public static ParallelQuery SelectMany( /// or is a null reference (Nothing in Visual Basic). /// public static OrderedParallelQuery OrderBy( - this ParallelQuery source, Func keySelector) + this ParallelQuery source!!, Func keySelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( new SortQueryOperator(source, keySelector, null, false)); } @@ -1100,11 +1019,8 @@ public static OrderedParallelQuery OrderBy( /// or is a null reference (Nothing in Visual Basic). /// public static OrderedParallelQuery OrderBy( - this ParallelQuery source, Func keySelector, IComparer? comparer) + this ParallelQuery source!!, Func keySelector!!, IComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( new SortQueryOperator(source, keySelector, comparer, false)); } @@ -1127,11 +1043,8 @@ public static OrderedParallelQuery OrderBy( /// or is a null reference (Nothing in Visual Basic). /// public static OrderedParallelQuery OrderByDescending( - this ParallelQuery source, Func keySelector) + this ParallelQuery source!!, Func keySelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery(new SortQueryOperator(source, keySelector, null, true)); } @@ -1154,11 +1067,8 @@ public static OrderedParallelQuery OrderByDescending( /// or is a null reference (Nothing in Visual Basic). /// public static OrderedParallelQuery OrderByDescending( - this ParallelQuery source, Func keySelector, IComparer? comparer) + this ParallelQuery source!!, Func keySelector!!, IComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( new SortQueryOperator(source, keySelector, comparer, true)); } @@ -1184,11 +1094,8 @@ public static OrderedParallelQuery OrderByDescending( /// public static OrderedParallelQuery ThenBy( - this OrderedParallelQuery source, Func keySelector) + this OrderedParallelQuery source!!, Func keySelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( (QueryOperator)source.OrderedEnumerable.CreateOrderedEnumerable(keySelector, null, false)); } @@ -1215,11 +1122,8 @@ public static OrderedParallelQuery ThenBy( /// public static OrderedParallelQuery ThenBy( - this OrderedParallelQuery source, Func keySelector, IComparer? comparer) + this OrderedParallelQuery source!!, Func keySelector!!, IComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( (QueryOperator)source.OrderedEnumerable.CreateOrderedEnumerable(keySelector, comparer, false)); } @@ -1245,11 +1149,8 @@ public static OrderedParallelQuery ThenBy( /// public static OrderedParallelQuery ThenByDescending( - this OrderedParallelQuery source, Func keySelector) + this OrderedParallelQuery source!!, Func keySelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new OrderedParallelQuery( (QueryOperator)source.OrderedEnumerable.CreateOrderedEnumerable(keySelector, null, true)); } @@ -1276,10 +1177,8 @@ public static OrderedParallelQuery ThenByDescending( /// public static OrderedParallelQuery ThenByDescending( - this OrderedParallelQuery source, Func keySelector, IComparer? comparer) + this OrderedParallelQuery source!!, Func keySelector!!, IComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); return new OrderedParallelQuery( (QueryOperator)source.OrderedEnumerable.CreateOrderedEnumerable(keySelector, comparer, true)); } @@ -1322,11 +1221,8 @@ public static ParallelQuery> GroupBy( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery> GroupBy( - this ParallelQuery source, Func keySelector, IEqualityComparer? comparer) + this ParallelQuery source!!, Func keySelector!!, IEqualityComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - return new GroupByQueryOperator(source, keySelector, null, comparer); } @@ -1375,12 +1271,8 @@ public static ParallelQuery> GroupBy is a null reference (Nothing in Visual Basic). /// public static ParallelQuery> GroupBy( - this ParallelQuery source, Func keySelector, Func elementSelector, IEqualityComparer? comparer) + this ParallelQuery source!!, Func keySelector!!, Func elementSelector!!, IEqualityComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - if (elementSelector == null) throw new ArgumentNullException(nameof(elementSelector)); - return new GroupByQueryOperator(source, keySelector, elementSelector, comparer); } @@ -1414,11 +1306,9 @@ public static ParallelQuery> GroupBy is a null reference (Nothing in Visual Basic). /// public static ParallelQuery GroupBy( - this ParallelQuery source, Func keySelector, Func, TResult> resultSelector) + this ParallelQuery source, Func keySelector, Func, TResult> resultSelector!!) { - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return source.GroupBy(keySelector) .Select, TResult>(delegate (IGrouping grouping) { return resultSelector(grouping.Key, grouping); }); } @@ -1442,10 +1332,8 @@ public static ParallelQuery GroupBy( /// is a null reference (Nothing in Visual Basic). /// public static ParallelQuery GroupBy( - this ParallelQuery source, Func keySelector, Func, TResult> resultSelector, IEqualityComparer? comparer) + this ParallelQuery source, Func keySelector, Func, TResult> resultSelector!!, IEqualityComparer? comparer) { - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return source.GroupBy(keySelector, comparer).Select, TResult>( delegate (IGrouping grouping) { return resultSelector(grouping.Key, grouping); }); } @@ -1472,10 +1360,8 @@ public static ParallelQuery GroupBy( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery GroupBy( - this ParallelQuery source, Func keySelector, Func elementSelector, Func, TResult> resultSelector) + this ParallelQuery source, Func keySelector, Func elementSelector, Func, TResult> resultSelector!!) { - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return source.GroupBy(keySelector, elementSelector) .Select, TResult>(delegate (IGrouping grouping) { return resultSelector(grouping.Key, grouping); }); } @@ -1503,10 +1389,8 @@ public static ParallelQuery GroupBy( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery GroupBy( - this ParallelQuery source, Func keySelector, Func elementSelector, Func, TResult> resultSelector, IEqualityComparer? comparer) + this ParallelQuery source, Func keySelector, Func elementSelector, Func, TResult> resultSelector!!, IEqualityComparer? comparer) { - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return source.GroupBy(keySelector, elementSelector, comparer) .Select, TResult>(delegate (IGrouping grouping) { return resultSelector(grouping.Key, grouping); }); } @@ -1624,10 +1508,8 @@ public static TSource Aggregate( } internal static TSource Aggregate( - this ParallelQuery source, Func func, QueryAggregationOptions options) + this ParallelQuery source!!, Func func!!, QueryAggregationOptions options) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (func == null) throw new ArgumentNullException(nameof(func)); if ((~(QueryAggregationOptions.Associative | QueryAggregationOptions.Commutative) & options) != 0) throw new ArgumentOutOfRangeException(nameof(options)); if ((options & QueryAggregationOptions.Associative) != QueryAggregationOptions.Associative) @@ -1671,10 +1553,8 @@ public static TAccumulate Aggregate( } internal static TAccumulate Aggregate( - this ParallelQuery source, TAccumulate seed, Func func, QueryAggregationOptions options) + this ParallelQuery source!!, TAccumulate seed, Func func!!, QueryAggregationOptions options) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (func == null) throw new ArgumentNullException(nameof(func)); if ((~(QueryAggregationOptions.Associative | QueryAggregationOptions.Commutative) & options) != 0) throw new ArgumentOutOfRangeException(nameof(options)); return source.PerformSequentialAggregation(seed, true, func); @@ -1704,13 +1584,9 @@ internal static TAccumulate Aggregate( /// The query was canceled. /// public static TResult Aggregate( - this ParallelQuery source, TAccumulate seed, Func func, - Func resultSelector) + this ParallelQuery source!!, TAccumulate seed, Func func!!, + Func resultSelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (func == null) throw new ArgumentNullException(nameof(func)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - TAccumulate acc = source.PerformSequentialAggregation(seed, true, func); try { @@ -1760,14 +1636,9 @@ public static TResult Aggregate( /// The query was canceled. /// public static TResult Aggregate( - this ParallelQuery source, TAccumulate seed, Func updateAccumulatorFunc, - Func combineAccumulatorsFunc, Func resultSelector) + this ParallelQuery source!!, TAccumulate seed, Func updateAccumulatorFunc!!, + Func combineAccumulatorsFunc!!, Func resultSelector!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (updateAccumulatorFunc == null) throw new ArgumentNullException(nameof(updateAccumulatorFunc)); - if (combineAccumulatorsFunc == null) throw new ArgumentNullException(nameof(combineAccumulatorsFunc)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - return new AssociativeAggregationOperator( source, seed, null, true, updateAccumulatorFunc, combineAccumulatorsFunc, resultSelector, false, QueryAggregationOptions.AssociativeCommutative).Aggregate(); @@ -1813,18 +1684,12 @@ public static TResult Aggregate( /// The query was canceled. /// public static TResult Aggregate( - this ParallelQuery source, - Func seedFactory, - Func updateAccumulatorFunc, - Func combineAccumulatorsFunc, - Func resultSelector) - { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (seedFactory == null) throw new ArgumentNullException(nameof(seedFactory)); - if (updateAccumulatorFunc == null) throw new ArgumentNullException(nameof(updateAccumulatorFunc)); - if (combineAccumulatorsFunc == null) throw new ArgumentNullException(nameof(combineAccumulatorsFunc)); - if (resultSelector == null) throw new ArgumentNullException(nameof(resultSelector)); - + this ParallelQuery source!!, + Func seedFactory!!, + Func updateAccumulatorFunc!!, + Func combineAccumulatorsFunc!!, + Func resultSelector!!) + { return new AssociativeAggregationOperator( source, default!, seedFactory, true, updateAccumulatorFunc, combineAccumulatorsFunc, resultSelector, false, QueryAggregationOptions.AssociativeCommutative).Aggregate(); @@ -1852,10 +1717,8 @@ public static TResult Aggregate( /// /// The query was canceled. /// - public static int Count(this ParallelQuery source) + public static int Count(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // If the data source is a collection, we can just return the count right away. if (source is ParallelEnumerableWrapper sourceAsWrapper) { @@ -1894,11 +1757,8 @@ public static int Count(this ParallelQuery source) /// /// The query was canceled. /// - public static int Count(this ParallelQuery source, Func predicate) + public static int Count(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - // Construct a where operator to filter out non-matching elements, and then aggregate. checked { @@ -1923,10 +1783,8 @@ public static int Count(this ParallelQuery source, Func /// The query was canceled. /// - public static long LongCount(this ParallelQuery source) + public static long LongCount(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // If the data source is a collection, we can just return the count right away. if (source is ParallelEnumerableWrapper sourceAsWrapper) { @@ -1961,11 +1819,8 @@ public static long LongCount(this ParallelQuery source) /// /// The query was canceled. /// - public static long LongCount(this ParallelQuery source, Func predicate) + public static long LongCount(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - // Construct a where operator to filter out non-matching elements, and then aggregate. return new LongCountAggregationOperator(Where(source, predicate)).Aggregate(); } @@ -1990,9 +1845,8 @@ public static long LongCount(this ParallelQuery source, Func /// The query was canceled. /// - public static int Sum(this ParallelQuery source) + public static int Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new IntSumAggregationOperator(source).Aggregate(); } @@ -2012,9 +1866,8 @@ public static int Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static int? Sum(this ParallelQuery source) + public static int? Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableIntSumAggregationOperator(source).Aggregate(); } @@ -2034,9 +1887,8 @@ public static int Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static long Sum(this ParallelQuery source) + public static long Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new LongSumAggregationOperator(source).Aggregate(); } @@ -2056,9 +1908,8 @@ public static long Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static long? Sum(this ParallelQuery source) + public static long? Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableLongSumAggregationOperator(source).Aggregate(); } @@ -2076,9 +1927,8 @@ public static long Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static float Sum(this ParallelQuery source) + public static float Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new FloatSumAggregationOperator(source).Aggregate(); } @@ -2096,9 +1946,8 @@ public static float Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static float? Sum(this ParallelQuery source) + public static float? Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableFloatSumAggregationOperator(source).Aggregate(); } @@ -2116,9 +1965,8 @@ public static float Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static double Sum(this ParallelQuery source) + public static double Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DoubleSumAggregationOperator(source).Aggregate(); } @@ -2136,9 +1984,8 @@ public static double Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Sum(this ParallelQuery source) + public static double? Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDoubleSumAggregationOperator(source).Aggregate(); } @@ -2158,9 +2005,8 @@ public static double Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal Sum(this ParallelQuery source) + public static decimal Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DecimalSumAggregationOperator(source).Aggregate(); } @@ -2180,9 +2026,8 @@ public static decimal Sum(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal? Sum(this ParallelQuery source) + public static decimal? Sum(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDecimalSumAggregationOperator(source).Aggregate(); } @@ -2448,9 +2293,8 @@ public static decimal Sum(this ParallelQuery source, Func /// The query was canceled. /// - public static int Min(this ParallelQuery source) + public static int Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new IntMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2468,9 +2312,8 @@ public static int Min(this ParallelQuery source) /// /// The query was canceled. /// - public static int? Min(this ParallelQuery source) + public static int? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableIntMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2491,9 +2334,8 @@ public static int Min(this ParallelQuery source) /// /// The query was canceled. /// - public static long Min(this ParallelQuery source) + public static long Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new LongMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2511,9 +2353,8 @@ public static long Min(this ParallelQuery source) /// /// The query was canceled. /// - public static long? Min(this ParallelQuery source) + public static long? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableLongMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2534,9 +2375,8 @@ public static long Min(this ParallelQuery source) /// /// The query was canceled. /// - public static float Min(this ParallelQuery source) + public static float Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new FloatMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2554,9 +2394,8 @@ public static float Min(this ParallelQuery source) /// /// The query was canceled. /// - public static float? Min(this ParallelQuery source) + public static float? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableFloatMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2577,9 +2416,8 @@ public static float Min(this ParallelQuery source) /// /// The query was canceled. /// - public static double Min(this ParallelQuery source) + public static double Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DoubleMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2597,9 +2435,8 @@ public static double Min(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Min(this ParallelQuery source) + public static double? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDoubleMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2620,9 +2457,8 @@ public static double Min(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal Min(this ParallelQuery source) + public static decimal Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DecimalMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2640,9 +2476,8 @@ public static decimal Min(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal? Min(this ParallelQuery source) + public static decimal? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDecimalMinMaxAggregationOperator(source, -1).Aggregate(); } @@ -2664,9 +2499,8 @@ public static decimal Min(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource? Min(this ParallelQuery source) + public static TSource? Min(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return AggregationMinMaxHelpers.ReduceMin(source); } @@ -2952,9 +2786,8 @@ public static decimal Min(this ParallelQuery source, Func /// The query was canceled. /// - public static int Max(this ParallelQuery source) + public static int Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new IntMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -2972,9 +2805,8 @@ public static int Max(this ParallelQuery source) /// /// The query was canceled. /// - public static int? Max(this ParallelQuery source) + public static int? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableIntMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -2995,9 +2827,8 @@ public static int Max(this ParallelQuery source) /// /// The query was canceled. /// - public static long Max(this ParallelQuery source) + public static long Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new LongMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3015,9 +2846,8 @@ public static long Max(this ParallelQuery source) /// /// The query was canceled. /// - public static long? Max(this ParallelQuery source) + public static long? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableLongMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3038,9 +2868,8 @@ public static long Max(this ParallelQuery source) /// /// The query was canceled. /// - public static float Max(this ParallelQuery source) + public static float Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new FloatMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3058,9 +2887,8 @@ public static float Max(this ParallelQuery source) /// /// The query was canceled. /// - public static float? Max(this ParallelQuery source) + public static float? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableFloatMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3081,9 +2909,8 @@ public static float Max(this ParallelQuery source) /// /// The query was canceled. /// - public static double Max(this ParallelQuery source) + public static double Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DoubleMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3101,9 +2928,8 @@ public static double Max(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Max(this ParallelQuery source) + public static double? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDoubleMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3124,9 +2950,8 @@ public static double Max(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal Max(this ParallelQuery source) + public static decimal Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DecimalMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3144,9 +2969,8 @@ public static decimal Max(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal? Max(this ParallelQuery source) + public static decimal? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDecimalMinMaxAggregationOperator(source, 1).Aggregate(); } @@ -3167,9 +2991,8 @@ public static decimal Max(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource? Max(this ParallelQuery source) + public static TSource? Max(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return AggregationMinMaxHelpers.ReduceMax(source); } @@ -3457,9 +3280,8 @@ public static decimal Max(this ParallelQuery source, Func /// The query was canceled. /// - public static double Average(this ParallelQuery source) + public static double Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new IntAverageAggregationOperator(source).Aggregate(); } @@ -3479,9 +3301,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Average(this ParallelQuery source) + public static double? Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableIntAverageAggregationOperator(source).Aggregate(); } @@ -3504,9 +3325,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static double Average(this ParallelQuery source) + public static double Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new LongAverageAggregationOperator(source).Aggregate(); } @@ -3526,9 +3346,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Average(this ParallelQuery source) + public static double? Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableLongAverageAggregationOperator(source).Aggregate(); } @@ -3549,9 +3368,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static float Average(this ParallelQuery source) + public static float Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new FloatAverageAggregationOperator(source).Aggregate(); } @@ -3569,9 +3387,8 @@ public static float Average(this ParallelQuery source) /// /// The query was canceled. /// - public static float? Average(this ParallelQuery source) + public static float? Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableFloatAverageAggregationOperator(source).Aggregate(); } @@ -3592,9 +3409,8 @@ public static float Average(this ParallelQuery source) /// /// The query was canceled. /// - public static double Average(this ParallelQuery source) + public static double Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DoubleAverageAggregationOperator(source).Aggregate(); } @@ -3612,9 +3428,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static double? Average(this ParallelQuery source) + public static double? Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDoubleAverageAggregationOperator(source).Aggregate(); } @@ -3635,9 +3450,8 @@ public static double Average(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal Average(this ParallelQuery source) + public static decimal Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DecimalAverageAggregationOperator(source).Aggregate(); } @@ -3655,9 +3469,8 @@ public static decimal Average(this ParallelQuery source) /// /// The query was canceled. /// - public static decimal? Average(this ParallelQuery source) + public static decimal? Average(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new NullableDecimalAverageAggregationOperator(source).Aggregate(); } @@ -3926,11 +3739,8 @@ public static decimal Average(this ParallelQuery source, Func< /// /// The query was canceled. /// - public static bool Any(this ParallelQuery source, Func predicate) + public static bool Any(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new AnyAllSearchOperator(source, true, predicate).Aggregate(); } @@ -3949,10 +3759,8 @@ public static bool Any(this ParallelQuery source, Func /// The query was canceled. /// - public static bool Any(this ParallelQuery source) + public static bool Any(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return Any(source, x => true); } @@ -3978,11 +3786,8 @@ public static bool Any(this ParallelQuery source) /// /// The query was canceled. /// - public static bool All(this ParallelQuery source, Func predicate) + public static bool All(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new AnyAllSearchOperator(source, false, predicate).Aggregate(); } @@ -4034,10 +3839,8 @@ public static bool Contains(this ParallelQuery source, TSource /// /// The query was canceled. /// - public static bool Contains(this ParallelQuery source, TSource value, IEqualityComparer? comparer) + public static bool Contains(this ParallelQuery source!!, TSource value, IEqualityComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // @PERF: there are many simple optimizations we can make for collection types with known sizes. return new ContainsSearchOperator(source, value, comparer).Aggregate(); @@ -4063,10 +3866,8 @@ public static bool Contains(this ParallelQuery source, TSource /// /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Take(this ParallelQuery source, int count) + public static ParallelQuery Take(this ParallelQuery source!!, int count) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (count > 0) { return new TakeOrSkipQueryOperator(source, count, true); @@ -4095,11 +3896,8 @@ public static ParallelQuery Take(this ParallelQuery s /// /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery TakeWhile(this ParallelQuery source, Func predicate) + public static ParallelQuery TakeWhile(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new TakeOrSkipWhileQueryOperator(source, predicate, null, true); } @@ -4120,11 +3918,8 @@ public static ParallelQuery TakeWhile(this ParallelQuery /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery TakeWhile(this ParallelQuery source, Func predicate) + public static ParallelQuery TakeWhile(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new TakeOrSkipWhileQueryOperator(source, null, predicate, true); } @@ -4145,10 +3940,8 @@ public static ParallelQuery TakeWhile(this ParallelQuery /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Skip(this ParallelQuery source, int count) + public static ParallelQuery Skip(this ParallelQuery source!!, int count) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // If the count is 0 (or less) we just return the whole stream. if (count <= 0) { @@ -4177,11 +3970,8 @@ public static ParallelQuery Skip(this ParallelQuery s /// /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery SkipWhile(this ParallelQuery source, Func predicate) + public static ParallelQuery SkipWhile(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new TakeOrSkipWhileQueryOperator(source, predicate, null, false); } @@ -4204,11 +3994,8 @@ public static ParallelQuery SkipWhile(this ParallelQuery /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery SkipWhile(this ParallelQuery source, Func predicate) + public static ParallelQuery SkipWhile(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return new TakeOrSkipWhileQueryOperator(source, null, predicate, false); } @@ -4230,10 +4017,8 @@ public static ParallelQuery SkipWhile(this ParallelQuery /// or is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Concat(this ParallelQuery first, ParallelQuery second) + public static ParallelQuery Concat(this ParallelQuery first!!, ParallelQuery second!!) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); return new ConcatQueryOperator(first, second); } @@ -4282,10 +4067,8 @@ public static ParallelQuery Concat(this ParallelQuery /// /// The query was canceled. /// - public static bool SequenceEqual(this ParallelQuery first, ParallelQuery second) + public static bool SequenceEqual(this ParallelQuery first!!, ParallelQuery second!!) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); return SequenceEqual(first, second, null); } @@ -4331,13 +4114,10 @@ public static bool SequenceEqual(this ParallelQuery first, IEn /// /// The query was canceled. /// - public static bool SequenceEqual(this ParallelQuery first, ParallelQuery second, IEqualityComparer? comparer) + public static bool SequenceEqual(this ParallelQuery first!!, ParallelQuery second!!, IEqualityComparer? comparer) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); - // If comparer is null, use the default one - comparer = comparer ?? EqualityComparer.Default; + comparer ??= EqualityComparer.Default; QueryOperator leftOp = QueryOperator.AsQueryOperator(first); QueryOperator rightOp = QueryOperator.AsQueryOperator(second); @@ -4449,10 +4229,8 @@ public static ParallelQuery Distinct( /// is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Distinct( - this ParallelQuery source, IEqualityComparer? comparer) + this ParallelQuery source!!, IEqualityComparer? comparer) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return new DistinctQueryOperator(source, comparer); } @@ -4510,11 +4288,8 @@ public static ParallelQuery Union( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Union( - this ParallelQuery first, ParallelQuery second, IEqualityComparer? comparer) + this ParallelQuery first!!, ParallelQuery second!!, IEqualityComparer? comparer) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); - return new UnionQueryOperator(first, second, comparer); } @@ -4605,11 +4380,8 @@ public static ParallelQuery Intersect( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Intersect( - this ParallelQuery first, ParallelQuery second, IEqualityComparer? comparer) + this ParallelQuery first!!, ParallelQuery second!!, IEqualityComparer? comparer) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); - return new IntersectQueryOperator(first, second, comparer); } @@ -4701,11 +4473,8 @@ public static ParallelQuery Except( /// or is a null reference (Nothing in Visual Basic). /// public static ParallelQuery Except( - this ParallelQuery first, ParallelQuery second, IEqualityComparer? comparer) + this ParallelQuery first!!, ParallelQuery second!!, IEqualityComparer? comparer) { - if (first == null) throw new ArgumentNullException(nameof(first)); - if (second == null) throw new ArgumentNullException(nameof(second)); - return new ExceptQueryOperator(first, second, comparer); } @@ -4776,10 +4545,8 @@ public static IEnumerable AsEnumerable(this ParallelQuery /// The query was canceled. /// - public static TSource[] ToArray(this ParallelQuery source) + public static TSource[] ToArray(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (source is QueryOperator asOperator) { return asOperator.ExecuteAndGetResultsAsArray(); @@ -4808,10 +4575,8 @@ public static TSource[] ToArray(this ParallelQuery source) /// /// The query was canceled. /// - public static List ToList(this ParallelQuery source) + public static List ToList(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // Allocate a growable list (optionally passing the length as the initial size). List list = new List(); IEnumerator input; @@ -4919,11 +4684,8 @@ public static Dictionary ToDictionary( /// The query was canceled. /// public static Dictionary ToDictionary( - this ParallelQuery source, Func keySelector, IEqualityComparer? comparer) where TKey : notnull + this ParallelQuery source!!, Func keySelector!!, IEqualityComparer? comparer) where TKey : notnull { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - // comparer may be null. In that case, the Dictionary constructor will use the default comparer. Dictionary result = new Dictionary(comparer); @@ -5016,12 +4778,8 @@ public static Dictionary ToDictionary( /// The query was canceled. /// public static Dictionary ToDictionary( - this ParallelQuery source, Func keySelector, Func elementSelector, IEqualityComparer? comparer) where TKey : notnull + this ParallelQuery source!!, Func keySelector!!, Func elementSelector!!, IEqualityComparer? comparer) where TKey : notnull { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - if (elementSelector == null) throw new ArgumentNullException(nameof(elementSelector)); - // comparer may be null. In that case, the Dictionary constructor will use the default comparer. Dictionary result = new Dictionary(comparer); @@ -5098,11 +4856,8 @@ public static ILookup ToLookup( /// The query was canceled. /// public static ILookup ToLookup( - this ParallelQuery source, Func keySelector, IEqualityComparer? comparer) where TKey: notnull + this ParallelQuery source!!, Func keySelector!!, IEqualityComparer? comparer) where TKey: notnull { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - // comparer may be null, in which case we use the default comparer. comparer = comparer ?? EqualityComparer.Default; @@ -5184,12 +4939,8 @@ public static ILookup ToLookup( /// The query was canceled. /// public static ILookup ToLookup( - this ParallelQuery source, Func keySelector, Func elementSelector, IEqualityComparer? comparer) where TKey : notnull + this ParallelQuery source!!, Func keySelector!!, Func elementSelector!!, IEqualityComparer? comparer) where TKey : notnull { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (keySelector == null) throw new ArgumentNullException(nameof(keySelector)); - if (elementSelector == null) throw new ArgumentNullException(nameof(elementSelector)); - // comparer may be null, in which case we use the default comparer. comparer = comparer ?? EqualityComparer.Default; @@ -5230,9 +4981,8 @@ public static ILookup ToLookup( /// /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Reverse(this ParallelQuery source) + public static ParallelQuery Reverse(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new ReverseQueryOperator(source); } @@ -5251,10 +5001,8 @@ public static ParallelQuery Reverse(this ParallelQuery /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery OfType(this ParallelQuery source) + public static ParallelQuery OfType(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return source.OfType(); } @@ -5269,10 +5017,8 @@ public static ParallelQuery OfType(this ParallelQuery source) /// /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery Cast(this ParallelQuery source) + public static ParallelQuery Cast(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return source.Cast(); } @@ -5354,12 +5100,10 @@ public static ParallelQuery Cast(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource First(this ParallelQuery source) + public static TSource First(this ParallelQuery source!!) { // @PERF: optimize for seekable data sources. E.g. if an array, we can // seek directly to the 0th element. - if (source == null) throw new ArgumentNullException(nameof(source)); - FirstQueryOperator queryOp = new FirstQueryOperator(source, null); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5397,11 +5141,8 @@ public static TSource First(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource First(this ParallelQuery source, Func predicate) + public static TSource First(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - FirstQueryOperator queryOp = new FirstQueryOperator(source, predicate); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5436,10 +5177,8 @@ public static TSource First(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? FirstOrDefault(this ParallelQuery source) + public static TSource? FirstOrDefault(this ParallelQuery source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // @PERF: optimize for seekable data sources. E.g. if an array, we can // seek directly to the 0th element. FirstQueryOperator queryOp = new FirstQueryOperator(source, null); @@ -5482,11 +5221,8 @@ public static TSource First(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? FirstOrDefault(this ParallelQuery source, Func predicate) + public static TSource? FirstOrDefault(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - FirstQueryOperator queryOp = new FirstQueryOperator(source, predicate); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5530,12 +5266,10 @@ public static TSource First(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource Last(this ParallelQuery source) + public static TSource Last(this ParallelQuery source!!) { // @PERF: optimize for seekable data sources. E.g. if an array, we can // seek directly to the last element. - if (source == null) throw new ArgumentNullException(nameof(source)); - LastQueryOperator queryOp = new LastQueryOperator(source, null); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5573,11 +5307,8 @@ public static TSource Last(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource Last(this ParallelQuery source, Func predicate) + public static TSource Last(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - LastQueryOperator queryOp = new LastQueryOperator(source, predicate); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5614,12 +5345,10 @@ public static TSource Last(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? LastOrDefault(this ParallelQuery source) + public static TSource? LastOrDefault(this ParallelQuery source!!) { // @PERF: optimize for seekable data sources. E.g. if an array, we can // seek directly to the last element. - if (source == null) throw new ArgumentNullException(nameof(source)); - LastQueryOperator queryOp = new LastQueryOperator(source, null); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5656,11 +5385,8 @@ public static TSource Last(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? LastOrDefault(this ParallelQuery source, Func predicate) + public static TSource? LastOrDefault(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - LastQueryOperator queryOp = new LastQueryOperator(source, predicate); // If in conservative mode and a premature merge would be inserted by the First operator, @@ -5704,12 +5430,10 @@ public static TSource Last(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource Single(this ParallelQuery source) + public static TSource Single(this ParallelQuery source!!) { // @PERF: optimize for ICollection-typed data sources, i.e. we can just // check the Count property and avoid costly fork/join/synchronization. - if (source == null) throw new ArgumentNullException(nameof(source)); - return GetOneWithPossibleDefault(new SingleQueryOperator(source, null), true, false)!; } @@ -5733,11 +5457,8 @@ public static TSource Single(this ParallelQuery source) /// /// The query was canceled. /// - public static TSource Single(this ParallelQuery source, Func predicate) + public static TSource Single(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return GetOneWithPossibleDefault(new SingleQueryOperator(source, predicate), true, false)!; } @@ -5760,12 +5481,10 @@ public static TSource Single(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? SingleOrDefault(this ParallelQuery source) + public static TSource? SingleOrDefault(this ParallelQuery source!!) { // @PERF: optimize for ICollection-typed data sources, i.e. we can just // check the Count property and avoid costly fork/join/synchronization. - if (source == null) throw new ArgumentNullException(nameof(source)); - return GetOneWithPossibleDefault(new SingleQueryOperator(source, null), true, true); } @@ -5790,11 +5509,8 @@ public static TSource Single(this ParallelQuery source, Func /// The query was canceled. /// - public static TSource? SingleOrDefault(this ParallelQuery source, Func predicate) + public static TSource? SingleOrDefault(this ParallelQuery source!!, Func predicate!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - return GetOneWithPossibleDefault(new SingleQueryOperator(source, predicate), true, true); } @@ -5833,9 +5549,8 @@ public static TSource Single(this ParallelQuery source, Func /// is a null reference (Nothing in Visual Basic). /// - public static ParallelQuery DefaultIfEmpty(this ParallelQuery source, TSource defaultValue) + public static ParallelQuery DefaultIfEmpty(this ParallelQuery source!!, TSource defaultValue) { - if (source == null) throw new ArgumentNullException(nameof(source)); return new DefaultIfEmptyQueryOperator(source, defaultValue); } @@ -5864,9 +5579,8 @@ public static ParallelQuery DefaultIfEmpty(this ParallelQuery< /// /// The query was canceled. /// - public static TSource ElementAt(this ParallelQuery source, int index) + public static TSource ElementAt(this ParallelQuery source!!, int index) { - if (source == null) throw new ArgumentNullException(nameof(source)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index)); // @PERF: there are obvious optimization opportunities for indexable data sources, @@ -5903,10 +5617,8 @@ public static TSource ElementAt(this ParallelQuery source, int /// /// The query was canceled. /// - public static TSource? ElementAtOrDefault(this ParallelQuery source, int index) + public static TSource? ElementAtOrDefault(this ParallelQuery source!!, int index) { - if (source == null) throw new ArgumentNullException(nameof(source)); - // @PERF: there are obvious optimization opportunities for indexable data sources, // since we can just seek to the element requested. diff --git a/src/libraries/System.Linq.Queryable/src/System/Linq/EnumerableQuery.cs b/src/libraries/System.Linq.Queryable/src/System/Linq/EnumerableQuery.cs index 3bdd99ea15d07c..9665e62bfaa960 100644 --- a/src/libraries/System.Linq.Queryable/src/System/Linq/EnumerableQuery.cs +++ b/src/libraries/System.Linq.Queryable/src/System/Linq/EnumerableQuery.cs @@ -60,10 +60,8 @@ public EnumerableQuery(Expression expression) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "This class's ctor is annotated as RequiresUnreferencedCode.")] - IQueryable IQueryProvider.CreateQuery(Expression expression) + IQueryable IQueryProvider.CreateQuery(Expression expression!!) { - if (expression == null) - throw Error.ArgumentNull(nameof(expression)); Type? iqType = TypeHelper.FindGenericType(typeof(IQueryable<>), expression.Type); if (iqType == null) throw Error.ArgumentNotValid(nameof(expression)); @@ -72,10 +70,8 @@ IQueryable IQueryProvider.CreateQuery(Expression expression) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "This class's ctor is annotated as RequiresUnreferencedCode.")] - IQueryable IQueryProvider.CreateQuery(Expression expression) + IQueryable IQueryProvider.CreateQuery(Expression expression!!) { - if (expression == null) - throw Error.ArgumentNull(nameof(expression)); if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) { throw Error.ArgumentNotValid(nameof(expression)); @@ -85,19 +81,15 @@ IQueryable IQueryProvider.CreateQuery(Expression expression) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "This class's ctor is annotated as RequiresUnreferencedCode.")] - object? IQueryProvider.Execute(Expression expression) + object? IQueryProvider.Execute(Expression expression!!) { - if (expression == null) - throw Error.ArgumentNull(nameof(expression)); return EnumerableExecutor.Create(expression).ExecuteBoxed(); } [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "This class's ctor is annotated as RequiresUnreferencedCode.")] - TElement IQueryProvider.Execute(Expression expression) + TElement IQueryProvider.Execute(Expression expression!!) { - if (expression == null) - throw Error.ArgumentNull(nameof(expression)); if (!typeof(TElement).IsAssignableFrom(expression.Type)) throw Error.ArgumentNotValid(nameof(expression)); return new EnumerableExecutor(expression).Execute(); diff --git a/src/libraries/System.Linq.Queryable/src/System/Linq/Error.cs b/src/libraries/System.Linq.Queryable/src/System/Linq/Error.cs index d0c6ab10e53555..0d41f9199ac8c9 100644 --- a/src/libraries/System.Linq.Queryable/src/System/Linq/Error.cs +++ b/src/libraries/System.Linq.Queryable/src/System/Linq/Error.cs @@ -5,8 +5,6 @@ namespace System.Linq { internal static class Error { - internal static Exception ArgumentNull(string message) => new ArgumentNullException(message); - internal static Exception ArgumentNotIEnumerableGeneric(string message) => new ArgumentException(Strings.ArgumentNotIEnumerableGeneric(message)); diff --git a/src/libraries/System.Linq.Queryable/src/System/Linq/Queryable.cs b/src/libraries/System.Linq.Queryable/src/System/Linq/Queryable.cs index dec3dcc1d61716..9dc67e586f9fe7 100644 --- a/src/libraries/System.Linq.Queryable/src/System/Linq/Queryable.cs +++ b/src/libraries/System.Linq.Queryable/src/System/Linq/Queryable.cs @@ -13,170 +13,111 @@ public static class Queryable internal const string InMemoryQueryableExtensionMethodsRequiresUnreferencedCode = "Enumerating in-memory collections as IQueryable can require unreferenced code because expressions referencing IQueryable extension methods can get rebound to IEnumerable extension methods. The IEnumerable extension methods could be trimmed causing the application to fail at runtime."; [RequiresUnreferencedCode(InMemoryQueryableExtensionMethodsRequiresUnreferencedCode)] - public static IQueryable AsQueryable(this IEnumerable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source as IQueryable ?? new EnumerableQuery(source); - } + public static IQueryable AsQueryable(this IEnumerable source!!) => + source as IQueryable ?? new EnumerableQuery(source); [RequiresUnreferencedCode(InMemoryQueryableExtensionMethodsRequiresUnreferencedCode)] - public static IQueryable AsQueryable(this IEnumerable source) + public static IQueryable AsQueryable(this IEnumerable source!!) { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (source is IQueryable queryable) return queryable; + if (source is IQueryable queryable) + { + return queryable; + } + Type? enumType = TypeHelper.FindGenericType(typeof(IEnumerable<>), source.GetType()); if (enumType == null) + { throw Error.ArgumentNotIEnumerableGeneric(nameof(source)); + } + return EnumerableQuery.Create(enumType.GenericTypeArguments[0], source); } [DynamicDependency("Where`1", typeof(Enumerable))] - public static IQueryable Where(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable Where(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Where_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("Where`1", typeof(Enumerable))] - public static IQueryable Where(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable Where(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Where_Index_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("OfType`1", typeof(Enumerable))] - public static IQueryable OfType(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable OfType(this IQueryable source!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.OfType_TResult_1(typeof(TResult)), source.Expression)); - } [DynamicDependency("Cast`1", typeof(Enumerable))] - public static IQueryable Cast(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Cast(this IQueryable source!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Cast_TResult_1(typeof(TResult)), source.Expression)); - } [DynamicDependency("Select`2", typeof(Enumerable))] - public static IQueryable Select(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.CreateQuery( + public static IQueryable Select(this IQueryable source!!, Expression> selector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Select_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Select`2", typeof(Enumerable))] - public static IQueryable Select(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.CreateQuery( + public static IQueryable Select(this IQueryable source!!, Expression> selector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Select_Index_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("SelectMany`2", typeof(Enumerable))] - public static IQueryable SelectMany(this IQueryable source, Expression>> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.CreateQuery( + public static IQueryable SelectMany(this IQueryable source!!, Expression>> selector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SelectMany_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("SelectMany`2", typeof(Enumerable))] - public static IQueryable SelectMany(this IQueryable source, Expression>> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.CreateQuery( + public static IQueryable SelectMany(this IQueryable source!!, Expression>> selector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SelectMany_Index_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("SelectMany`3", typeof(Enumerable))] - public static IQueryable SelectMany(this IQueryable source, Expression>> collectionSelector, Expression> resultSelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (collectionSelector == null) - throw Error.ArgumentNull(nameof(collectionSelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable SelectMany(this IQueryable source!!, Expression>> collectionSelector!!, Expression> resultSelector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SelectMany_Index_TSource_TCollection_TResult_3(typeof(TSource), typeof(TCollection), typeof(TResult)), source.Expression, Expression.Quote(collectionSelector), Expression.Quote(resultSelector) )); - } [DynamicDependency("SelectMany`3", typeof(Enumerable))] - public static IQueryable SelectMany(this IQueryable source, Expression>> collectionSelector, Expression> resultSelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (collectionSelector == null) - throw Error.ArgumentNull(nameof(collectionSelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable SelectMany(this IQueryable source!!, Expression>> collectionSelector!!, Expression> resultSelector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SelectMany_TSource_TCollection_TResult_3(typeof(TSource), typeof(TCollection), typeof(TResult)), source.Expression, Expression.Quote(collectionSelector), Expression.Quote(resultSelector) )); - } private static Expression GetSourceExpression(IEnumerable source) { @@ -185,213 +126,101 @@ private static Expression GetSourceExpression(IEnumerable sour } [DynamicDependency("Join`4", typeof(Enumerable))] - public static IQueryable Join(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) - { - if (outer == null) - throw Error.ArgumentNull(nameof(outer)); - if (inner == null) - throw Error.ArgumentNull(nameof(inner)); - if (outerKeySelector == null) - throw Error.ArgumentNull(nameof(outerKeySelector)); - if (innerKeySelector == null) - throw Error.ArgumentNull(nameof(innerKeySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return outer.Provider.CreateQuery( + public static IQueryable Join(this IQueryable outer!!, IEnumerable inner!!, Expression> outerKeySelector!!, Expression> innerKeySelector!!, Expression> resultSelector!!) => outer.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Join_TOuter_TInner_TKey_TResult_5(typeof(TOuter), typeof(TInner), typeof(TKey), typeof(TResult)), outer.Expression, GetSourceExpression(inner), Expression.Quote(outerKeySelector), Expression.Quote(innerKeySelector), Expression.Quote(resultSelector))); - } [DynamicDependency("Join`4", typeof(Enumerable))] - public static IQueryable Join(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector, IEqualityComparer? comparer) - { - if (outer == null) - throw Error.ArgumentNull(nameof(outer)); - if (inner == null) - throw Error.ArgumentNull(nameof(inner)); - if (outerKeySelector == null) - throw Error.ArgumentNull(nameof(outerKeySelector)); - if (innerKeySelector == null) - throw Error.ArgumentNull(nameof(innerKeySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return outer.Provider.CreateQuery( + public static IQueryable Join(this IQueryable outer!!, IEnumerable inner!!, Expression> outerKeySelector!!, Expression> innerKeySelector!!, Expression> resultSelector!!, IEqualityComparer? comparer) => outer.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Join_TOuter_TInner_TKey_TResult_6(typeof(TOuter), typeof(TInner), typeof(TKey), typeof(TResult)), outer.Expression, GetSourceExpression(inner), Expression.Quote(outerKeySelector), Expression.Quote(innerKeySelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer)))); - } [DynamicDependency("GroupJoin`4", typeof(Enumerable))] - public static IQueryable GroupJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector) - { - if (outer == null) - throw Error.ArgumentNull(nameof(outer)); - if (inner == null) - throw Error.ArgumentNull(nameof(inner)); - if (outerKeySelector == null) - throw Error.ArgumentNull(nameof(outerKeySelector)); - if (innerKeySelector == null) - throw Error.ArgumentNull(nameof(innerKeySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return outer.Provider.CreateQuery( + public static IQueryable GroupJoin(this IQueryable outer!!, IEnumerable inner!!, Expression> outerKeySelector!!, Expression> innerKeySelector!!, Expression, TResult>> resultSelector!!) => outer.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupJoin_TOuter_TInner_TKey_TResult_5(typeof(TOuter), typeof(TInner), typeof(TKey), typeof(TResult)), outer.Expression, GetSourceExpression(inner), Expression.Quote(outerKeySelector), Expression.Quote(innerKeySelector), Expression.Quote(resultSelector))); - } [DynamicDependency("GroupJoin`4", typeof(Enumerable))] - public static IQueryable GroupJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector, IEqualityComparer? comparer) - { - if (outer == null) - throw Error.ArgumentNull(nameof(outer)); - if (inner == null) - throw Error.ArgumentNull(nameof(inner)); - if (outerKeySelector == null) - throw Error.ArgumentNull(nameof(outerKeySelector)); - if (innerKeySelector == null) - throw Error.ArgumentNull(nameof(innerKeySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return outer.Provider.CreateQuery( + public static IQueryable GroupJoin(this IQueryable outer!!, IEnumerable inner!!, Expression> outerKeySelector!!, Expression> innerKeySelector!!, Expression, TResult>> resultSelector!!, IEqualityComparer? comparer) => outer.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupJoin_TOuter_TInner_TKey_TResult_6(typeof(TOuter), typeof(TInner), typeof(TKey), typeof(TResult)), outer.Expression, GetSourceExpression(inner), Expression.Quote(outerKeySelector), Expression.Quote(innerKeySelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer)))); - } [DynamicDependency("OrderBy`2", typeof(Enumerable))] - public static IOrderedQueryable OrderBy(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable OrderBy(this IQueryable source!!, Expression> keySelector!!) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.OrderBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } [DynamicDependency("OrderBy`2", typeof(Enumerable))] - public static IOrderedQueryable OrderBy(this IQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable OrderBy(this IQueryable source!!, Expression> keySelector!!, IComparer? comparer) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.OrderBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("OrderByDescending`2", typeof(Enumerable))] - public static IOrderedQueryable OrderByDescending(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable OrderByDescending(this IQueryable source!!, Expression> keySelector!!) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.OrderByDescending_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } [DynamicDependency("OrderByDescending`2", typeof(Enumerable))] - public static IOrderedQueryable OrderByDescending(this IQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable OrderByDescending(this IQueryable source!!, Expression> keySelector!!, IComparer? comparer) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.OrderByDescending_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("ThenBy`2", typeof(Enumerable))] - public static IOrderedQueryable ThenBy(this IOrderedQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable ThenBy(this IOrderedQueryable source!!, Expression> keySelector!!) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ThenBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } [DynamicDependency("ThenBy`2", typeof(Enumerable))] - public static IOrderedQueryable ThenBy(this IOrderedQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable ThenBy(this IOrderedQueryable source!!, Expression> keySelector!!, IComparer? comparer) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ThenBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("ThenByDescending`2", typeof(Enumerable))] - public static IOrderedQueryable ThenByDescending(this IOrderedQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable ThenByDescending(this IOrderedQueryable source!!, Expression> keySelector!!) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ThenByDescending_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } [DynamicDependency("ThenByDescending`2", typeof(Enumerable))] - public static IOrderedQueryable ThenByDescending(this IOrderedQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return (IOrderedQueryable)source.Provider.CreateQuery( + public static IOrderedQueryable ThenByDescending(this IOrderedQueryable source!!, Expression> keySelector!!, IComparer? comparer) => (IOrderedQueryable)source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ThenByDescending_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("Take`1", typeof(Enumerable))] - public static IQueryable Take(this IQueryable source, int count) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Take(this IQueryable source!!, int count) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Take_Int32_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(count) )); - } /// Returns a specified range of contiguous elements from a sequence. /// The type of the elements of . @@ -400,242 +229,138 @@ public static IQueryable Take(this IQueryable source, /// is . /// An that contains the specified of elements from the sequence. [DynamicDependency("Take`1", typeof(Enumerable))] - public static IQueryable Take(this IQueryable source, Range range) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Take(this IQueryable source!!, Range range) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Take_Range_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(range) )); - } [DynamicDependency("TakeWhile`1", typeof(Enumerable))] - public static IQueryable TakeWhile(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable TakeWhile(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.TakeWhile_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("TakeWhile`1", typeof(Enumerable))] - public static IQueryable TakeWhile(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable TakeWhile(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.TakeWhile_Index_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("Skip`1", typeof(Enumerable))] - public static IQueryable Skip(this IQueryable source, int count) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Skip(this IQueryable source!!, int count) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Skip_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(count) )); - } [DynamicDependency("SkipWhile`1", typeof(Enumerable))] - public static IQueryable SkipWhile(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable SkipWhile(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SkipWhile_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("SkipWhile`1", typeof(Enumerable))] - public static IQueryable SkipWhile(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.CreateQuery( + public static IQueryable SkipWhile(this IQueryable source!!, Expression> predicate!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SkipWhile_Index_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("GroupBy`2", typeof(Enumerable))] - public static IQueryable> GroupBy(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.CreateQuery>( + public static IQueryable> GroupBy(this IQueryable source!!, Expression> keySelector!!) => + source.Provider.CreateQuery>( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } [DynamicDependency("GroupBy`3", typeof(Enumerable))] - public static IQueryable> GroupBy(this IQueryable source, Expression> keySelector, Expression> elementSelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (elementSelector == null) - throw Error.ArgumentNull(nameof(elementSelector)); - return source.Provider.CreateQuery>( + public static IQueryable> GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression> elementSelector!!) => + source.Provider.CreateQuery>( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TElement_3(typeof(TSource), typeof(TKey), typeof(TElement)), source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector) )); - } [DynamicDependency("GroupBy`2", typeof(Enumerable))] - public static IQueryable> GroupBy(this IQueryable source, Expression> keySelector, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.CreateQuery>( + public static IQueryable> GroupBy(this IQueryable source!!, Expression> keySelector!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery>( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } [DynamicDependency("GroupBy`3", typeof(Enumerable))] - public static IQueryable> GroupBy(this IQueryable source, Expression> keySelector, Expression> elementSelector, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (elementSelector == null) - throw Error.ArgumentNull(nameof(elementSelector)); - return source.Provider.CreateQuery>( + public static IQueryable> GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression> elementSelector!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery>( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TElement_4(typeof(TSource), typeof(TKey), typeof(TElement)), source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Constant(comparer, typeof(IEqualityComparer)))); - } [DynamicDependency("GroupBy`4", typeof(Enumerable))] - public static IQueryable GroupBy(this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (elementSelector == null) - throw Error.ArgumentNull(nameof(elementSelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression> elementSelector!!, Expression, TResult>> resultSelector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TElement_TResult_4(typeof(TSource), typeof(TKey), typeof(TElement), typeof(TResult)), source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Quote(resultSelector))); - } [DynamicDependency("GroupBy`3", typeof(Enumerable))] - public static IQueryable GroupBy(this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression, TResult>> resultSelector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TResult_3(typeof(TSource), typeof(TKey), typeof(TResult)), source.Expression, Expression.Quote(keySelector), Expression.Quote(resultSelector) )); - } [DynamicDependency("GroupBy`3", typeof(Enumerable))] - public static IQueryable GroupBy(this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression, TResult>> resultSelector!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TResult_4(typeof(TSource), typeof(TKey), typeof(TResult)), source.Expression, Expression.Quote(keySelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer)))); - } [DynamicDependency("GroupBy`4", typeof(Enumerable))] - public static IQueryable GroupBy(this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - if (elementSelector == null) - throw Error.ArgumentNull(nameof(elementSelector)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source.Provider.CreateQuery( + public static IQueryable GroupBy(this IQueryable source!!, Expression> keySelector!!, Expression> elementSelector!!, Expression, TResult>> resultSelector!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.GroupBy_TSource_TKey_TElement_TResult_5(typeof(TSource), typeof(TKey), typeof(TElement), typeof(TResult)), source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer)))); - } [DynamicDependency("Distinct`1", typeof(Enumerable))] - public static IQueryable Distinct(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Distinct(this IQueryable source!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Distinct_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("Distinct`1", typeof(Enumerable))] - public static IQueryable Distinct(this IQueryable source, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Distinct(this IQueryable source!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Distinct_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } /// Returns distinct elements from a sequence according to a specified key selector function. /// The type of the elements of . @@ -645,19 +370,13 @@ public static IQueryable Distinct(this IQueryable sou /// An that contains distinct elements from the source sequence. /// is . [DynamicDependency("DistinctBy`2", typeof(Enumerable))] - public static IQueryable DistinctBy(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.CreateQuery( + public static IQueryable DistinctBy(this IQueryable source!!, Expression> keySelector!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.DistinctBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } /// Returns distinct elements from a sequence according to a specified key selector function. /// The type of the elements of . @@ -668,19 +387,13 @@ public static IQueryable DistinctBy(this IQueryableAn that contains distinct elements from the source sequence. /// is . [DynamicDependency("DistinctBy`2", typeof(Enumerable))] - public static IQueryable DistinctBy(this IQueryable source, Expression> keySelector, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.CreateQuery( + public static IQueryable DistinctBy(this IQueryable source!!, Expression> keySelector!!, IEqualityComparer? comparer) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.DistinctBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } /// Split the elements of a sequence into chunks of size at most . /// An whose elements to chunk. @@ -694,69 +407,39 @@ public static IQueryable DistinctBy(this IQueryableThe last chunk will contain the remaining elements and may be of a smaller size. /// [DynamicDependency("Chunk`1", typeof(Enumerable))] - public static IQueryable Chunk(this IQueryable source, int size) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Chunk(this IQueryable source!!, int size) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Chunk_TSource_1(typeof(TSource)), source.Expression, Expression.Constant(size) )); - } [DynamicDependency("Concat`1", typeof(Enumerable))] - public static IQueryable Concat(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Concat(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Concat_TSource_2(typeof(TSource)), source1.Expression, GetSourceExpression(source2) )); - } [DynamicDependency("Zip`2", typeof(Enumerable))] - public static IQueryable<(TFirst First, TSecond Second)> Zip(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - { - throw Error.ArgumentNull(nameof(source1)); - } - - if (source2 == null) - { - throw Error.ArgumentNull(nameof(source2)); - } - - return source1.Provider.CreateQuery<(TFirst, TSecond)>( + public static IQueryable<(TFirst First, TSecond Second)> Zip(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.CreateQuery<(TFirst, TSecond)>( Expression.Call( null, CachedReflectionInfo.Zip_TFirst_TSecond_2(typeof(TFirst), typeof(TSecond)), source1.Expression, GetSourceExpression(source2))); - } [DynamicDependency("Zip`3", typeof(Enumerable))] - public static IQueryable Zip(this IQueryable source1, IEnumerable source2, Expression> resultSelector) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (resultSelector == null) - throw Error.ArgumentNull(nameof(resultSelector)); - return source1.Provider.CreateQuery( + public static IQueryable Zip(this IQueryable source1!!, IEnumerable source2!!, Expression> resultSelector!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Zip_TFirst_TSecond_TResult_3(typeof(TFirst), typeof(TSecond), typeof(TResult)), source1.Expression, GetSourceExpression(source2), Expression.Quote(resultSelector) )); - } /// /// Produces a sequence of tuples with elements from the three specified sequences. @@ -769,45 +452,26 @@ public static IQueryable Zip(this IQueryable< /// The third sequence to merge. /// A sequence of tuples with elements taken from the first, second and third sequences, in that order. [DynamicDependency("Zip`3", typeof(Enumerable))] - public static IQueryable<(TFirst First, TSecond Second, TThird Third)> Zip(this IQueryable source1, IEnumerable source2, IEnumerable source3) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (source3 == null) - throw Error.ArgumentNull(nameof(source3)); - return source1.Provider.CreateQuery<(TFirst, TSecond, TThird)>( + public static IQueryable<(TFirst First, TSecond Second, TThird Third)> Zip(this IQueryable source1!!, IEnumerable source2!!, IEnumerable source3!!) => + source1.Provider.CreateQuery<(TFirst, TSecond, TThird)>( Expression.Call( null, CachedReflectionInfo.Zip_TFirst_TSecond_TThird_3(typeof(TFirst), typeof(TSecond), typeof(TThird)), source1.Expression, GetSourceExpression(source2), GetSourceExpression(source3) )); - } [DynamicDependency("Union`1", typeof(Enumerable))] - public static IQueryable Union(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Union(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Union_TSource_2(typeof(TSource)), source1.Expression, GetSourceExpression(source2) )); - } [DynamicDependency("Union`1", typeof(Enumerable))] - public static IQueryable Union(this IQueryable source1, IEnumerable source2, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Union(this IQueryable source1!!, IEnumerable source2!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Union_TSource_3(typeof(TSource)), @@ -815,7 +479,6 @@ public static IQueryable Union(this IQueryable source GetSourceExpression(source2), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } /// Produces the set union of two sequences according to a specified key selector function. /// The type of the elements of the input sequences. @@ -826,21 +489,13 @@ public static IQueryable Union(this IQueryable source /// An that contains the elements from both input sequences, excluding duplicates. /// or is . [DynamicDependency("UnionBy`2", typeof(Enumerable))] - public static IQueryable UnionBy(this IQueryable source1, IEnumerable source2, Expression> keySelector) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable UnionBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.UnionBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), source1.Expression, GetSourceExpression(source2), Expression.Quote(keySelector) )); - } /// Produces the set union of two sequences according to a specified key selector function. /// The type of the elements of the input sequences. @@ -852,15 +507,8 @@ public static IQueryable UnionBy(this IQueryableAn that contains the elements from both input sequences, excluding duplicates. /// or is . [DynamicDependency("UnionBy`2", typeof(Enumerable))] - public static IQueryable UnionBy(this IQueryable source1, IEnumerable source2, Expression> keySelector, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable UnionBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.UnionBy_TSource_TKey_4(typeof(TSource), typeof(TKey)), @@ -869,31 +517,19 @@ public static IQueryable UnionBy(this IQueryable)) )); - } [DynamicDependency("Intersect`1", typeof(Enumerable))] - public static IQueryable Intersect(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Intersect(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Intersect_TSource_2(typeof(TSource)), source1.Expression, GetSourceExpression(source2) )); - } [DynamicDependency("Intersect`1", typeof(Enumerable))] - public static IQueryable Intersect(this IQueryable source1, IEnumerable source2, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Intersect(this IQueryable source1!!, IEnumerable source2!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Intersect_TSource_3(typeof(TSource)), @@ -901,7 +537,6 @@ public static IQueryable Intersect(this IQueryable so GetSourceExpression(source2), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } /// Produces the set intersection of two sequences according to a specified key selector function. /// The type of the elements of the input sequences. @@ -912,15 +547,8 @@ public static IQueryable Intersect(this IQueryable so /// A sequence that contains the elements that form the set intersection of two sequences. /// or is . [DynamicDependency("IntersectBy`2", typeof(Enumerable))] - public static IQueryable IntersectBy(this IQueryable source1, IEnumerable source2, Expression> keySelector) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable IntersectBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.IntersectBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), @@ -928,7 +556,6 @@ public static IQueryable IntersectBy(this IQueryableProduces the set intersection of two sequences according to a specified key selector function. /// The type of the elements of the input sequences. @@ -940,15 +567,8 @@ public static IQueryable IntersectBy(this IQueryableA sequence that contains the elements that form the set intersection of two sequences. /// or is . [DynamicDependency("IntersectBy`2", typeof(Enumerable))] - public static IQueryable IntersectBy(this IQueryable source1, IEnumerable source2, Expression> keySelector, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable IntersectBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.IntersectBy_TSource_TKey_4(typeof(TSource), typeof(TKey)), @@ -957,31 +577,19 @@ public static IQueryable IntersectBy(this IQueryable)) )); - } [DynamicDependency("Except`1", typeof(Enumerable))] - public static IQueryable Except(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Except(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Except_TSource_2(typeof(TSource)), source1.Expression, GetSourceExpression(source2) )); - } [DynamicDependency("Except`1", typeof(Enumerable))] - public static IQueryable Except(this IQueryable source1, IEnumerable source2, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.CreateQuery( + public static IQueryable Except(this IQueryable source1!!, IEnumerable source2!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Except_TSource_3(typeof(TSource)), @@ -989,7 +597,6 @@ public static IQueryable Except(this IQueryable sourc GetSourceExpression(source2), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } /// /// Produces the set difference of two sequences according to a specified key selector function. @@ -1001,15 +608,8 @@ public static IQueryable Except(this IQueryable sourc /// A function to extract the key for each element. /// A that contains the set difference of the elements of two sequences. [DynamicDependency("ExceptBy`2", typeof(Enumerable))] - public static IQueryable ExceptBy(this IQueryable source1, IEnumerable source2, Expression> keySelector) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable ExceptBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ExceptBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), @@ -1017,7 +617,6 @@ public static IQueryable ExceptBy(this IQueryable /// Produces the set difference of two sequences according to a specified key selector function. @@ -1030,15 +629,8 @@ public static IQueryable ExceptBy(this IQueryableAn to compare keys. /// A that contains the set difference of the elements of two sequences. [DynamicDependency("ExceptBy`2", typeof(Enumerable))] - public static IQueryable ExceptBy(this IQueryable source1, IEnumerable source2, Expression> keySelector, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source1.Provider.CreateQuery( + public static IQueryable ExceptBy(this IQueryable source1!!, IEnumerable source2!!, Expression> keySelector!!, IEqualityComparer? comparer) => + source1.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.ExceptBy_TSource_TKey_4(typeof(TSource), typeof(TKey)), @@ -1047,44 +639,29 @@ public static IQueryable ExceptBy(this IQueryable)) )); - } [DynamicDependency("First`1", typeof(Enumerable))] - public static TSource First(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource First(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.First_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("First`1", typeof(Enumerable))] - public static TSource First(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource First(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.First_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("FirstOrDefault`1", typeof(Enumerable))] - public static TSource? FirstOrDefault(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? FirstOrDefault(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.FirstOrDefault_TSource_1(typeof(TSource)), source.Expression)); - } /// Returns the first element of a sequence, or a default value if the sequence contains no elements. /// The type of the elements of . @@ -1093,31 +670,21 @@ public static TSource First(this IQueryable source, Expression /// if is empty; otherwise, the first element in . /// is . [DynamicDependency("FirstOrDefault`1", typeof(Enumerable))] - public static TSource FirstOrDefault(this IQueryable source, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource FirstOrDefault(this IQueryable source!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.FirstOrDefault_TSource_3(typeof(TSource)), source.Expression, Expression.Constant(defaultValue, typeof(TSource)))); - } [DynamicDependency("FirstOrDefault`1", typeof(Enumerable))] - public static TSource? FirstOrDefault(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource? FirstOrDefault(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.FirstOrDefault_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } /// Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. /// The type of the elements of . @@ -1127,56 +694,36 @@ public static TSource FirstOrDefault(this IQueryable source, T /// if is empty or if no element passes the test specified by ; otherwise, the first element in that passes the test specified by . /// or is . [DynamicDependency("FirstOrDefault`1", typeof(Enumerable))] - public static TSource FirstOrDefault(this IQueryable source, Expression> predicate, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource FirstOrDefault(this IQueryable source!!, Expression> predicate!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.FirstOrDefault_TSource_4(typeof(TSource)), source.Expression, Expression.Quote(predicate), Expression.Constant(defaultValue, typeof(TSource)) )); - } [DynamicDependency("Last`1", typeof(Enumerable))] - public static TSource Last(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource Last(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Last_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("Last`1", typeof(Enumerable))] - public static TSource Last(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource Last(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Last_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("LastOrDefault`1", typeof(Enumerable))] - public static TSource? LastOrDefault(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? LastOrDefault(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LastOrDefault_TSource_1(typeof(TSource)), source.Expression)); - } /// Returns the last element of a sequence, or a default value if the sequence contains no elements. /// The type of the elements of . @@ -1185,31 +732,21 @@ public static TSource Last(this IQueryable source, Expression< /// if the source sequence is empty; otherwise, the last element in the . /// is . [DynamicDependency("LastOrDefault`1", typeof(Enumerable))] - public static TSource LastOrDefault(this IQueryable source, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource LastOrDefault(this IQueryable source!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LastOrDefault_TSource_3(typeof(TSource)), source.Expression, Expression.Constant(defaultValue, typeof(TSource)))); - } [DynamicDependency("LastOrDefault`1", typeof(Enumerable))] - public static TSource? LastOrDefault(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource? LastOrDefault(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LastOrDefault_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } /// Returns the last element of a sequence that satisfies a condition or a default value if no such element is found. /// The type of the elements of . @@ -1219,56 +756,36 @@ public static TSource LastOrDefault(this IQueryable source, TS /// if the sequence is empty or if no elements pass the test in the predicate function; otherwise, the last element that passes the test in the predicate function. /// or is . [DynamicDependency("LastOrDefault`1", typeof(Enumerable))] - public static TSource LastOrDefault(this IQueryable source, Expression> predicate, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource LastOrDefault(this IQueryable source!!, Expression> predicate!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LastOrDefault_TSource_4(typeof(TSource)), source.Expression, Expression.Quote(predicate), Expression.Constant(defaultValue, typeof(TSource)) )); - } [DynamicDependency("Single`1", typeof(Enumerable))] - public static TSource Single(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource Single(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Single_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("Single`1", typeof(Enumerable))] - public static TSource Single(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource Single(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Single_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("SingleOrDefault`1", typeof(Enumerable))] - public static TSource? SingleOrDefault(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? SingleOrDefault(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SingleOrDefault_TSource_1(typeof(TSource)), source.Expression)); - } /// Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. /// The type of the elements of . @@ -1278,32 +795,21 @@ public static TSource Single(this IQueryable source, Expressio /// is . /// The input sequence contains more than one element. [DynamicDependency("SingleOrDefault`1", typeof(Enumerable))] - public static TSource SingleOrDefault(this IQueryable source, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource SingleOrDefault(this IQueryable source!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SingleOrDefault_TSource_3(typeof(TSource)), source.Expression, Expression.Constant(defaultValue, typeof(TSource)))); - } - [DynamicDependency("SingleOrDefault`1", typeof(Enumerable))] - public static TSource? SingleOrDefault(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource? SingleOrDefault(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SingleOrDefault_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } /// Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition. /// The type of the elements of . @@ -1314,25 +820,17 @@ public static TSource SingleOrDefault(this IQueryable source, /// or is . /// More than one element satisfies the condition in . [DynamicDependency("SingleOrDefault`1", typeof(Enumerable))] - public static TSource SingleOrDefault(this IQueryable source, Expression> predicate, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static TSource SingleOrDefault(this IQueryable source!!, Expression> predicate!!, TSource defaultValue) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SingleOrDefault_TSource_4(typeof(TSource)), source.Expression, Expression.Quote(predicate), Expression.Constant(defaultValue, typeof(TSource)) )); - } [DynamicDependency("ElementAt`1", typeof(Enumerable))] - public static TSource ElementAt(this IQueryable source, int index) + public static TSource ElementAt(this IQueryable source!!, int index) { - if (source == null) - throw Error.ArgumentNull(nameof(source)); if (index < 0) throw Error.ArgumentOutOfRange(nameof(index)); return source.Provider.Execute( @@ -1351,10 +849,8 @@ public static TSource ElementAt(this IQueryable source, int in /// is outside the bounds of the sequence. /// The element at the specified position in the sequence. [DynamicDependency("ElementAt`1", typeof(Enumerable))] - public static TSource ElementAt(this IQueryable source, Index index) + public static TSource ElementAt(this IQueryable source!!, Index index) { - if (source == null) - throw Error.ArgumentNull(nameof(source)); if (index.IsFromEnd && index.Value == 0) throw Error.ArgumentOutOfRange(nameof(index)); return source.Provider.Execute( @@ -1366,17 +862,13 @@ public static TSource ElementAt(this IQueryable source, Index } [DynamicDependency("ElementAtOrDefault`1", typeof(Enumerable))] - public static TSource? ElementAtOrDefault(this IQueryable source, int index) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? ElementAtOrDefault(this IQueryable source!!, int index) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.ElementAtOrDefault_Int32_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(index) )); - } /// Returns the element at a specified index in a sequence or a default value if the index is out of range. /// The type of the elements of . @@ -1385,102 +877,67 @@ public static TSource ElementAt(this IQueryable source, Index /// is . /// if is outside the bounds of the sequence; otherwise, the element at the specified position in the sequence. [DynamicDependency("ElementAtOrDefault`1", typeof(Enumerable))] - public static TSource? ElementAtOrDefault(this IQueryable source, Index index) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? ElementAtOrDefault(this IQueryable source!!, Index index) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.ElementAtOrDefault_Index_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(index) )); - } [DynamicDependency("DefaultIfEmpty`1", typeof(Enumerable))] - public static IQueryable DefaultIfEmpty(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable DefaultIfEmpty(this IQueryable source!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.DefaultIfEmpty_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("DefaultIfEmpty`1", typeof(Enumerable))] - public static IQueryable DefaultIfEmpty(this IQueryable source, TSource defaultValue) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable DefaultIfEmpty(this IQueryable source!!, TSource defaultValue) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.DefaultIfEmpty_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(defaultValue, typeof(TSource)) )); - } [DynamicDependency("Contains`1", typeof(Enumerable))] - public static bool Contains(this IQueryable source, TSource item) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static bool Contains(this IQueryable source!!, TSource item) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Contains_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(item, typeof(TSource)) )); - } [DynamicDependency("Contains`1", typeof(Enumerable))] - public static bool Contains(this IQueryable source, TSource item, IEqualityComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static bool Contains(this IQueryable source!!, TSource item, IEqualityComparer? comparer) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Contains_TSource_3(typeof(TSource)), source.Expression, Expression.Constant(item, typeof(TSource)), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } [DynamicDependency("Reverse`1", typeof(Enumerable))] - public static IQueryable Reverse(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Reverse(this IQueryable source!!) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Reverse_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("SequenceEqual`1", typeof(Enumerable))] - public static bool SequenceEqual(this IQueryable source1, IEnumerable source2) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.Execute( + public static bool SequenceEqual(this IQueryable source1!!, IEnumerable source2!!) => + source1.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SequenceEqual_TSource_2(typeof(TSource)), source1.Expression, GetSourceExpression(source2) )); - } [DynamicDependency("SequenceEqual`1", typeof(Enumerable))] - public static bool SequenceEqual(this IQueryable source1, IEnumerable source2, IEqualityComparer? comparer) - { - if (source1 == null) - throw Error.ArgumentNull(nameof(source1)); - if (source2 == null) - throw Error.ArgumentNull(nameof(source2)); - return source1.Provider.Execute( + public static bool SequenceEqual(this IQueryable source1!!, IEnumerable source2!!, IEqualityComparer? comparer) => + source1.Provider.Execute( Expression.Call( null, CachedReflectionInfo.SequenceEqual_TSource_3(typeof(TSource)), @@ -1488,111 +945,70 @@ public static bool SequenceEqual(this IQueryable source1, IEnu GetSourceExpression(source2), Expression.Constant(comparer, typeof(IEqualityComparer)) )); - } [DynamicDependency("Any`1", typeof(Enumerable))] - public static bool Any(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static bool Any(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Any_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("Any`1", typeof(Enumerable))] - public static bool Any(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static bool Any(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Any_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("All`1", typeof(Enumerable))] - public static bool All(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static bool All(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.All_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("Count`1", typeof(Enumerable))] - public static int Count(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static int Count(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Count_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("Count`1", typeof(Enumerable))] - public static int Count(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static int Count(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Count_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("LongCount`1", typeof(Enumerable))] - public static long LongCount(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static long LongCount(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LongCount_TSource_1(typeof(TSource)), source.Expression)); - } [DynamicDependency("LongCount`1", typeof(Enumerable))] - public static long LongCount(this IQueryable source, Expression> predicate) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (predicate == null) - throw Error.ArgumentNull(nameof(predicate)); - return source.Provider.Execute( + public static long LongCount(this IQueryable source!!, Expression> predicate!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.LongCount_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(predicate) )); - } [DynamicDependency("Min`1", typeof(Enumerable))] - public static TSource? Min(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? Min(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Min_TSource_1(typeof(TSource)), source.Expression)); - } /// Returns the minimum value in a generic . /// The type of the elements of . @@ -1602,33 +1018,23 @@ public static long LongCount(this IQueryable source, Expressio /// is . /// No object in implements the or interface. [DynamicDependency("Min`1", typeof(Enumerable))] - public static TSource? Min(this IQueryable source, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? Min(this IQueryable source!!, IComparer? comparer) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Min_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("Min`2", typeof(Enumerable))] - public static TResult? Min(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static TResult? Min(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Min_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } /// Returns the minimum value in a generic according to a specified key selector function. /// The type of the elements of . @@ -1639,20 +1045,14 @@ public static long LongCount(this IQueryable source, Expressio /// is . /// No key extracted from implements the or interface. [DynamicDependency("MinBy`2", typeof(Enumerable))] - public static TSource? MinBy(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.Execute( + public static TSource? MinBy(this IQueryable source!!, Expression> keySelector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.MinBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } /// Returns the minimum value in a generic according to a specified key selector function. /// The type of the elements of . @@ -1664,13 +1064,8 @@ public static long LongCount(this IQueryable source, Expressio /// is . /// No key extracted from implements the or interface. [DynamicDependency("MinBy`2", typeof(Enumerable))] - public static TSource? MinBy(this IQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.Execute( + public static TSource? MinBy(this IQueryable source!!, Expression> keySelector!!, IComparer? comparer) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.MinBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), @@ -1678,18 +1073,13 @@ public static long LongCount(this IQueryable source, Expressio Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("Max`1", typeof(Enumerable))] - public static TSource? Max(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? Max(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Max_TSource_1(typeof(TSource)), source.Expression)); - } /// Returns the maximum value in a generic . /// The type of the elements of . /// A sequence of values to determine the maximum value of. @@ -1697,33 +1087,23 @@ public static long LongCount(this IQueryable source, Expressio /// The maximum value in the sequence. /// is . [DynamicDependency("Max`1", typeof(Enumerable))] - public static TSource? Max(this IQueryable source, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static TSource? Max(this IQueryable source!!, IComparer? comparer) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Max_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("Max`2", typeof(Enumerable))] - public static TResult? Max(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static TResult? Max(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Max_TSource_TResult_2(typeof(TSource), typeof(TResult)), source.Expression, Expression.Quote(selector) )); - } /// Returns the maximum value in a generic according to a specified key selector function. /// The type of the elements of . @@ -1734,20 +1114,14 @@ public static long LongCount(this IQueryable source, Expressio /// is . /// No key extracted from implements the or interface. [DynamicDependency("MaxBy`2", typeof(Enumerable))] - public static TSource? MaxBy(this IQueryable source, Expression> keySelector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.Execute( + public static TSource? MaxBy(this IQueryable source!!, Expression> keySelector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.MaxBy_TSource_TKey_2(typeof(TSource), typeof(TKey)), source.Expression, Expression.Quote(keySelector) )); - } /// Returns the maximum value in a generic according to a specified key selector function. /// The type of the elements of . @@ -1759,13 +1133,8 @@ public static long LongCount(this IQueryable source, Expressio /// is . /// No key extracted from implements the or interface. [DynamicDependency("MaxBy`2", typeof(Enumerable))] - public static TSource? MaxBy(this IQueryable source, Expression> keySelector, IComparer? comparer) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (keySelector == null) - throw Error.ArgumentNull(nameof(keySelector)); - return source.Provider.Execute( + public static TSource? MaxBy(this IQueryable source!!, Expression> keySelector!!, IComparer? comparer) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.MaxBy_TSource_TKey_3(typeof(TSource), typeof(TKey)), @@ -1773,623 +1142,386 @@ public static long LongCount(this IQueryable source, Expressio Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer)) )); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static int Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static int Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Int32_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static int? Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static int? Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableInt32_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static long Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static long Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Int64_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static long? Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static long? Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableInt64_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static float Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static float Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Single_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static float? Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static float? Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableSingle_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static double Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Double_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static double? Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double? Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableDouble_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static decimal Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static decimal Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Decimal_1, source.Expression)); - } [DynamicDependency("Sum", typeof(Enumerable))] - public static decimal? Sum(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static decimal? Sum(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableDecimal_1, source.Expression)); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static int Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static int Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Int32_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static int? Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static int? Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableInt32_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static long Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static long Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Int64_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static long? Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static long? Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableInt64_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static float Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static float Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Single_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static float? Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static float? Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableSingle_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static double Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Double_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static double? Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double? Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableDouble_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static decimal Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static decimal Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_Decimal_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Sum`1", typeof(Enumerable))] - public static decimal? Sum(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static decimal? Sum(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Sum_NullableDecimal_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Int32_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double? Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableInt32_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Int64_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double? Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableInt64_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static float Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static float Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Single_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static float? Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static float? Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableSingle_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Double_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static double? Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableDouble_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static decimal Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static decimal Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Decimal_1, source.Expression)); - } [DynamicDependency("Average", typeof(Enumerable))] - public static decimal? Average(this IQueryable source) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.Execute( + public static decimal? Average(this IQueryable source!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableDecimal_1, source.Expression)); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Int32_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double? Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableInt32_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static float Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static float Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Single_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static float? Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static float? Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableSingle_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Int64_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double? Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableInt64_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Double_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static double? Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static double? Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableDouble_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static decimal Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static decimal Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_Decimal_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Average`1", typeof(Enumerable))] - public static decimal? Average(this IQueryable source, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static decimal? Average(this IQueryable source!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Average_NullableDecimal_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(selector) )); - } [DynamicDependency("Aggregate`1", typeof(Enumerable))] - public static TSource Aggregate(this IQueryable source, Expression> func) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (func == null) - throw Error.ArgumentNull(nameof(func)); - return source.Provider.Execute( + public static TSource Aggregate(this IQueryable source!!, Expression> func!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Aggregate_TSource_2(typeof(TSource)), source.Expression, Expression.Quote(func) )); - } [DynamicDependency("Aggregate`2", typeof(Enumerable))] - public static TAccumulate Aggregate(this IQueryable source, TAccumulate seed, Expression> func) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (func == null) - throw Error.ArgumentNull(nameof(func)); - return source.Provider.Execute( + public static TAccumulate Aggregate(this IQueryable source!!, TAccumulate seed, Expression> func!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Aggregate_TSource_TAccumulate_3(typeof(TSource), typeof(TAccumulate)), source.Expression, Expression.Constant(seed), Expression.Quote(func) )); - } [DynamicDependency("Aggregate`3", typeof(Enumerable))] - public static TResult Aggregate(this IQueryable source, TAccumulate seed, Expression> func, Expression> selector) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - if (func == null) - throw Error.ArgumentNull(nameof(func)); - if (selector == null) - throw Error.ArgumentNull(nameof(selector)); - return source.Provider.Execute( + public static TResult Aggregate(this IQueryable source!!, TAccumulate seed, Expression> func!!, Expression> selector!!) => + source.Provider.Execute( Expression.Call( null, CachedReflectionInfo.Aggregate_TSource_TAccumulate_TResult_4(typeof(TSource), typeof(TAccumulate), typeof(TResult)), source.Expression, Expression.Constant(seed), Expression.Quote(func), Expression.Quote(selector))); - } [DynamicDependency("SkipLast`1", typeof(Enumerable))] - public static IQueryable SkipLast(this IQueryable source, int count) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable SkipLast(this IQueryable source!!, int count) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.SkipLast_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(count) )); - } [DynamicDependency("TakeLast`1", typeof(Enumerable))] - public static IQueryable TakeLast(this IQueryable source, int count) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable TakeLast(this IQueryable source!!, int count) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.TakeLast_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(count) )); - } [DynamicDependency("Append`1", typeof(Enumerable))] - public static IQueryable Append(this IQueryable source, TSource element) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Append(this IQueryable source!!, TSource element) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Append_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(element) )); - } [DynamicDependency("Prepend`1", typeof(Enumerable))] - public static IQueryable Prepend(this IQueryable source, TSource element) - { - if (source == null) - throw Error.ArgumentNull(nameof(source)); - return source.Provider.CreateQuery( + public static IQueryable Prepend(this IQueryable source!!, TSource element) => + source.Provider.CreateQuery( Expression.Call( null, CachedReflectionInfo.Prepend_TSource_2(typeof(TSource)), source.Expression, Expression.Constant(element) )); - } } } diff --git a/src/libraries/System.Management/src/System.Management.csproj b/src/libraries/System.Management/src/System.Management.csproj index d79acc744ac2f9..e64ebcf61db51e 100644 --- a/src/libraries/System.Management/src/System.Management.csproj +++ b/src/libraries/System.Management/src/System.Management.csproj @@ -1,4 +1,4 @@ - + true $(NoWarn);0618 diff --git a/src/libraries/System.Memory.Data/src/System/BinaryData.cs b/src/libraries/System.Memory.Data/src/System/BinaryData.cs index b13232f49f0ff1..889c303df445bf 100644 --- a/src/libraries/System.Memory.Data/src/System/BinaryData.cs +++ b/src/libraries/System.Memory.Data/src/System/BinaryData.cs @@ -33,9 +33,9 @@ public class BinaryData /// provided byte array. /// /// The array to wrap. - public BinaryData(byte[] data) + public BinaryData(byte[] data!!) { - _bytes = data ?? throw new ArgumentNullException(nameof(data)); + _bytes = data; } /// @@ -70,13 +70,8 @@ public BinaryData(ReadOnlyMemory data) /// the string to bytes using the UTF-8 encoding. /// /// The string data. - public BinaryData(string data) + public BinaryData(string data!!) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - _bytes = Encoding.UTF8.GetBytes(data); } @@ -110,13 +105,8 @@ public BinaryData(string data) /// /// Stream containing the data. /// A value representing all of the data remaining in . - public static BinaryData FromStream(Stream stream) + public static BinaryData FromStream(Stream stream!!) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - return FromStreamAsync(stream, async: false).GetAwaiter().GetResult(); } @@ -127,13 +117,8 @@ public static BinaryData FromStream(Stream stream) /// Stream containing the data. /// A token that may be used to cancel the operation. /// A value representing all of the data remaining in . - public static Task FromStreamAsync(Stream stream, CancellationToken cancellationToken = default) + public static Task FromStreamAsync(Stream stream!!, CancellationToken cancellationToken = default) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - return FromStreamAsync(stream, async: true, cancellationToken); } diff --git a/src/libraries/System.Memory/src/System/Text/EncodingExtensions.cs b/src/libraries/System.Memory/src/System/Text/EncodingExtensions.cs index 11ec18302bd03b..72bbd7af7da6ac 100644 --- a/src/libraries/System.Memory/src/System/Text/EncodingExtensions.cs +++ b/src/libraries/System.Memory/src/System/Text/EncodingExtensions.cs @@ -31,18 +31,8 @@ public static class EncodingExtensions /// The buffer to which the encoded bytes will be written. /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static long GetBytes(this Encoding encoding, ReadOnlySpan chars, IBufferWriter writer) + public static long GetBytes(this Encoding encoding!!, ReadOnlySpan chars, IBufferWriter writer!!) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (chars.Length <= MaxInputElementsPerIteration) { // The input span is small enough where we can one-shot this. @@ -74,17 +64,8 @@ public static long GetBytes(this Encoding encoding, ReadOnlySpan chars, IB /// The number of bytes written to . /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static long GetBytes(this Encoding encoding, in ReadOnlySequence chars, IBufferWriter writer) + public static long GetBytes(this Encoding encoding!!, in ReadOnlySequence chars, IBufferWriter writer!!) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } // Delegate to the Span-based method if possible. // If that doesn't work, allocate the Encoder instance and run a loop. @@ -111,13 +92,8 @@ public static long GetBytes(this Encoding encoding, in ReadOnlySequence ch /// Thrown if is not large enough to contain the encoded form of . /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static int GetBytes(this Encoding encoding, in ReadOnlySequence chars, Span bytes) + public static int GetBytes(this Encoding encoding!!, in ReadOnlySequence chars, Span bytes) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - if (chars.IsSingleSegment) { // If the incoming sequence is single-segment, one-shot this. @@ -156,13 +132,8 @@ public static int GetBytes(this Encoding encoding, in ReadOnlySequence cha /// A array which represents the encoded contents of . /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static byte[] GetBytes(this Encoding encoding, in ReadOnlySequence chars) + public static byte[] GetBytes(this Encoding encoding!!, in ReadOnlySequence chars) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - if (chars.IsSingleSegment) { // If the incoming sequence is single-segment, one-shot this. @@ -242,18 +213,8 @@ public static byte[] GetBytes(this Encoding encoding, in ReadOnlySequence /// The number of chars written to . /// Thrown if contains data that cannot be decoded and is configured /// to throw an exception when such data is seen. - public static long GetChars(this Encoding encoding, ReadOnlySpan bytes, IBufferWriter writer) + public static long GetChars(this Encoding encoding!!, ReadOnlySpan bytes, IBufferWriter writer!!) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (bytes.Length <= MaxInputElementsPerIteration) { // The input span is small enough where we can one-shot this. @@ -285,18 +246,8 @@ public static long GetChars(this Encoding encoding, ReadOnlySpan bytes, IB /// The number of chars written to . /// Thrown if contains data that cannot be decoded and is configured /// to throw an exception when such data is seen. - public static long GetChars(this Encoding encoding, in ReadOnlySequence bytes, IBufferWriter writer) + public static long GetChars(this Encoding encoding!!, in ReadOnlySequence bytes, IBufferWriter writer!!) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } - // Delegate to the Span-based method if possible. // If that doesn't work, allocate the Encoder instance and run a loop. @@ -322,13 +273,8 @@ public static long GetChars(this Encoding encoding, in ReadOnlySequence by /// Thrown if is not large enough to contain the encoded form of . /// Thrown if contains data that cannot be decoded and is configured /// to throw an exception when such data is seen. - public static int GetChars(this Encoding encoding, in ReadOnlySequence bytes, Span chars) + public static int GetChars(this Encoding encoding!!, in ReadOnlySequence bytes, Span chars) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - if (bytes.IsSingleSegment) { // If the incoming sequence is single-segment, one-shot this. @@ -367,13 +313,8 @@ public static int GetChars(this Encoding encoding, in ReadOnlySequence byt /// A which represents the decoded contents of . /// Thrown if contains data that cannot be decoded and is configured /// to throw an exception when such data is seen. - public static string GetString(this Encoding encoding, in ReadOnlySequence bytes) + public static string GetString(this Encoding encoding!!, in ReadOnlySequence bytes) { - if (encoding is null) - { - throw new ArgumentNullException(nameof(encoding)); - } - if (bytes.IsSingleSegment) { // If the incoming sequence is single-segment, one-shot this. @@ -451,18 +392,8 @@ public static string GetString(this Encoding encoding, in ReadOnlySequence /// /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static void Convert(this Encoder encoder, ReadOnlySpan chars, IBufferWriter writer, bool flush, out long bytesUsed, out bool completed) + public static void Convert(this Encoder encoder!!, ReadOnlySpan chars, IBufferWriter writer!!, bool flush, out long bytesUsed, out bool completed) { - if (encoder is null) - { - throw new ArgumentNullException(nameof(encoder)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } - // We need to perform at least one iteration of the loop since the encoder could have internal state. long totalBytesWritten = 0; @@ -544,18 +475,8 @@ public static void Convert(this Encoder encoder, in ReadOnlySequence chars /// /// Thrown if contains data that cannot be encoded and is configured /// to throw an exception when such data is seen. - public static void Convert(this Decoder decoder, ReadOnlySpan bytes, IBufferWriter writer, bool flush, out long charsUsed, out bool completed) + public static void Convert(this Decoder decoder!!, ReadOnlySpan bytes, IBufferWriter writer!!, bool flush, out long charsUsed, out bool completed) { - if (decoder is null) - { - throw new ArgumentNullException(nameof(decoder)); - } - - if (writer is null) - { - throw new ArgumentNullException(nameof(writer)); - } - // We need to perform at least one iteration of the loop since the decoder could have internal state. long totalCharsWritten = 0; diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.cs index 66924779bc73d5..9ec475fdda12e1 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Get.cs @@ -16,93 +16,53 @@ namespace System.Net.Http.Json public static partial class HttpClientJsonExtensions { [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task GetFromJsonAsync(this HttpClient client, string? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, string? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, type, options, cancellationToken); } [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task GetFromJsonAsync(this HttpClient client, Uri? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, Uri? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, type, options, cancellationToken); } [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task GetFromJsonAsync(this HttpClient client, string? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, string? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, options, cancellationToken); } [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task GetFromJsonAsync(this HttpClient client, Uri? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, Uri? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, options, cancellationToken); } - public static Task GetFromJsonAsync(this HttpClient client, string? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, string? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, type, context, cancellationToken); } - public static Task GetFromJsonAsync(this HttpClient client, Uri? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, Uri? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, type, context, cancellationToken); } - public static Task GetFromJsonAsync(this HttpClient client, string? requestUri, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, string? requestUri, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, jsonTypeInfo, cancellationToken); } - public static Task GetFromJsonAsync(this HttpClient client, Uri? requestUri, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task GetFromJsonAsync(this HttpClient client!!, Uri? requestUri, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - Task taskResponse = client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken); return GetFromJsonAsyncCore(taskResponse, jsonTypeInfo, cancellationToken); } diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Patch.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Patch.cs index f11f81d068d480..93e9e91180ae7b 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Patch.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Patch.cs @@ -23,13 +23,8 @@ public static partial class HttpClientJsonExtensions /// The task object representing the asynchronous operation. /// The is null. [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PatchAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PatchAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PatchAsync(requestUri, content, cancellationToken); } @@ -46,13 +41,8 @@ public static Task PatchAsJsonAsync(this HttpClient /// The task object representing the asynchronous operation. /// The is null. [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PatchAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PatchAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PatchAsync(requestUri, content, cancellationToken); } @@ -96,13 +86,8 @@ public static Task PatchAsJsonAsync(this HttpClient /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// The task object representing the asynchronous operation. /// The is null. - public static Task PatchAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PatchAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PatchAsync(requestUri, content, cancellationToken); } @@ -118,13 +103,8 @@ public static Task PatchAsJsonAsync(this HttpClient /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// The task object representing the asynchronous operation. /// The is null. - public static Task PatchAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PatchAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PatchAsync(requestUri, content, cancellationToken); } diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Post.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Post.cs index 2ddbd37fc5af09..56514706d516a5 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Post.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Post.cs @@ -12,25 +12,15 @@ namespace System.Net.Http.Json public static partial class HttpClientJsonExtensions { [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PostAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PostAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PostAsync(requestUri, content, cancellationToken); } [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PostAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PostAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PostAsync(requestUri, content, cancellationToken); } @@ -43,24 +33,14 @@ public static Task PostAsJsonAsync(this HttpClient public static Task PostAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken) => client.PostAsJsonAsync(requestUri, value, options: null, cancellationToken); - public static Task PostAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PostAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PostAsync(requestUri, content, cancellationToken); } - public static Task PostAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PostAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PostAsync(requestUri, content, cancellationToken); } diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Put.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Put.cs index 6ddac02298f096..9f362999af3136 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Put.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpClientJsonExtensions.Put.cs @@ -12,25 +12,15 @@ namespace System.Net.Http.Json public static partial class HttpClientJsonExtensions { [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PutAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PutAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PutAsync(requestUri, content, cancellationToken); } [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] - public static Task PutAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task PutAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = JsonContent.Create(value, mediaType: null, options); return client.PutAsync(requestUri, content, cancellationToken); } @@ -43,24 +33,14 @@ public static Task PutAsJsonAsync(this HttpClient c public static Task PutAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken) => client.PutAsJsonAsync(requestUri, value, options: null, cancellationToken); - public static Task PutAsJsonAsync(this HttpClient client, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PutAsJsonAsync(this HttpClient client!!, string? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PutAsync(requestUri, content, cancellationToken); } - public static Task PutAsJsonAsync(this HttpClient client, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task PutAsJsonAsync(this HttpClient client!!, Uri? requestUri, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (client == null) - { - throw new ArgumentNullException(nameof(client)); - } - JsonContent content = new(value, jsonTypeInfo); return client.PutAsync(requestUri, content, cancellationToken); } diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpContentJsonExtensions.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpContentJsonExtensions.cs index ac771c9d158697..8f2d951f9c39ae 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpContentJsonExtensions.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/HttpContentJsonExtensions.cs @@ -17,26 +17,16 @@ public static partial class HttpContentJsonExtensions internal const string SerializationUnreferencedCodeMessage = "JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved."; [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static Task ReadFromJsonAsync(this HttpContent content, Type type, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task ReadFromJsonAsync(this HttpContent content!!, Type type, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - Encoding? sourceEncoding = JsonHelpers.GetEncoding(content.Headers.ContentType?.CharSet); return ReadFromJsonAsyncCore(content, type, sourceEncoding, options, cancellationToken); } [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static Task ReadFromJsonAsync(this HttpContent content, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) + public static Task ReadFromJsonAsync(this HttpContent content!!, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - Encoding? sourceEncoding = JsonHelpers.GetEncoding(content.Headers.ContentType?.CharSet); return ReadFromJsonAsyncCore(content, sourceEncoding, options, cancellationToken); @@ -74,25 +64,15 @@ public static partial class HttpContentJsonExtensions private static ValueTask DeserializeAsyncHelper(Stream contentStream, JsonSerializerOptions? options, CancellationToken cancellationToken) => JsonSerializer.DeserializeAsync(contentStream, options, cancellationToken); - public static Task ReadFromJsonAsync(this HttpContent content, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) + public static Task ReadFromJsonAsync(this HttpContent content!!, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - Encoding? sourceEncoding = JsonHelpers.GetEncoding(content.Headers.ContentType?.CharSet); return ReadFromJsonAsyncCore(content, type, sourceEncoding, context, cancellationToken); } - public static Task ReadFromJsonAsync(this HttpContent content, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) + public static Task ReadFromJsonAsync(this HttpContent content!!, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken = default) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - Encoding? sourceEncoding = JsonHelpers.GetEncoding(content.Headers.ContentType?.CharSet); return ReadFromJsonAsyncCore(content, sourceEncoding, jsonTypeInfo, cancellationToken); diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContent.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContent.cs index f1430c31ea58d5..f9a620e0db7334 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContent.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContent.cs @@ -23,15 +23,10 @@ public sealed partial class JsonContent : HttpContent [RequiresUnreferencedCode(HttpContentJsonExtensions.SerializationUnreferencedCodeMessage)] private JsonContent( object? inputValue, - Type inputType, + Type inputType!!, MediaTypeHeaderValue? mediaType, JsonSerializerOptions? options) { - if (inputType == null) - { - throw new ArgumentNullException(nameof(inputType)); - } - if (inputValue != null && !inputType.IsAssignableFrom(inputValue.GetType())) { throw new ArgumentException(SR.Format(SR.SerializeWrongType, inputType, inputValue.GetType())); diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContentOfT.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContentOfT.cs index a676e425c43dde..d5ac1fca28d2d8 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContentOfT.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/JsonContentOfT.cs @@ -19,9 +19,9 @@ internal sealed partial class JsonContent : HttpContent private readonly TValue _typedValue; - public JsonContent(TValue inputValue, JsonTypeInfo jsonTypeInfo) + public JsonContent(TValue inputValue, JsonTypeInfo jsonTypeInfo!!) { - _typeInfo = jsonTypeInfo ?? throw new ArgumentNullException(nameof(jsonTypeInfo)); + _typeInfo = jsonTypeInfo; _typedValue = inputValue; Headers.ContentType = JsonHelpers.GetDefaultMediaType(); } diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingReadStream.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingReadStream.cs index 976b40250a6c38..c46d1cce0f43c0 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingReadStream.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingReadStream.cs @@ -67,13 +67,8 @@ public override long Position public override int Read(byte[] buffer, int offset, int count) => throw new NotSupportedException(); - public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + public override Task ReadAsync(byte[] buffer!!, int offset, int count, CancellationToken cancellationToken) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingWriteStream.cs b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingWriteStream.cs index 2217baefb6ea40..1cc8bab3e48b26 100644 --- a/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingWriteStream.cs +++ b/src/libraries/System.Net.Http.Json/src/System/Net/Http/Json/TranscodingWriteStream.cs @@ -66,13 +66,8 @@ public override void SetLength(long value) public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException(); - public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + public override Task WriteAsync(byte[] buffer!!, int offset, int count, CancellationToken cancellationToken) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj b/src/libraries/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj index bacef00d3e5d03..41d016898b1a25 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj +++ b/src/libraries/System.Net.Http.WinHttpHandler/src/System.Net.Http.WinHttpHandler.csproj @@ -108,6 +108,11 @@ System.Net.Http.WinHttpHandler Condition="'$(TargetFrameworkIdentifier)' != '.NETCoreApp'" /> + + + + diff --git a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs index a081b7b4d00459..d6c46b18cc1476 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs @@ -568,14 +568,9 @@ protected override void Dispose(bool disposing) } protected override Task SendAsync( - HttpRequestMessage request, + HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - Uri? requestUri = request.RequestUri; if (requestUri is null || !requestUri.IsAbsoluteUri) { diff --git a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpRequestStream.cs b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpRequestStream.cs index 5e79072f44ba8b..68794b69b666e1 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpRequestStream.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpRequestStream.cs @@ -97,13 +97,8 @@ public override Task FlushAsync(CancellationToken cancellationToken) Task.CompletedTask; } - public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken token) + public override Task WriteAsync(byte[] buffer!!, int offset, int count, CancellationToken token) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseStream.cs b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseStream.cs index 74f0abbbb8050c..5670b305fa408f 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseStream.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpResponseStream.cs @@ -172,13 +172,8 @@ private async Task CopyToAsyncCore(Stream destination, byte[] buffer, Cancellati // request is made with a different buffer or when the state is cleared. } - public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken token) + public override Task ReadAsync(byte[] buffer!!, int offset, int count, CancellationToken token) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ClientCertificateTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ClientCertificateTest.cs index 9a7d6616f5f566..c88b81f9886cef 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ClientCertificateTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ClientCertificateTest.cs @@ -54,7 +54,7 @@ await LoopbackServer.CreateClientAndServerAsync( // Disabling it for full .Net Framework due to a missing ALPN API which leads to a protocol downgrade #if !NETFRAMEWORK - [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsWindows10Version2004Build19573OrGreater))] + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsWindows10Version19573OrGreater))] public async Task UseClientCertOnHttp2_OSSupportsIt_Success() { using X509Certificate2 clientCert = Test.Common.Configuration.Certificates.GetClientCertificate(); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/UnitTests/ClientCertificateHelper.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/UnitTests/ClientCertificateHelper.cs index b0e144992937c4..d59febe8bca931 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/UnitTests/ClientCertificateHelper.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/UnitTests/ClientCertificateHelper.cs @@ -13,6 +13,7 @@ public class ClientCertificateHelper private readonly X509Certificate2 _cert_KeyUsageIncludesDigitalSignature_EKUIncludesClientAuth_PrivateKey = new X509Certificate2( Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Unit test dummy certificate.")] @"MIIKTgIBAzCCCgoGCSqGSIb3DQEHAaCCCfsEggn3MIIJ8zCCBgwGCSqGSIb3DQEHAaCCBf0EggX5 MIIF9TCCBfEGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAiHDatvDr8QBQIC B9AEggTYv1r4ckwt7o6f6DCMHlb/zv4t7rPju+PP0PjoJ8kzPfj419aSeyPuE+65YH9WFDqafJed @@ -65,6 +66,7 @@ public class ClientCertificateHelper private readonly X509Certificate2 _cert_KeyUsageMissingDigitalSignature_EKUIncludesClientAuth_PrivateKey = new X509Certificate2( Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Unit test dummy certificate.")] @"MIIKTgIBAzCCCgoGCSqGSIb3DQEHAaCCCfsEggn3MIIJ8zCCBgwGCSqGSIb3DQEHAaCCBf0EggX5 MIIF9TCCBfEGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAiSNi65ZF5ZTQIC B9AEggTYRTivDtzHOWRR+MobtGFEUu6d1PiIlF1Ic84FWvmFCcJShkBmg3cBqDilqtamAkDkga4h @@ -117,6 +119,7 @@ public class ClientCertificateHelper private readonly X509Certificate2 _cert_KeyUsageIncludesDigitalSignature_EKUMissingClientAuth_PrivateKey = new X509Certificate2( Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] @"MIIKRgIBAzCCCgIGCSqGSIb3DQEHAaCCCfMEggnvMIIJ6zCCBgQGCSqGSIb3DQEHAaCCBfUEggXx MIIF7TCCBekGCyqGSIb3DQEMCgECoIIE9jCCBPIwHAYKKoZIhvcNAQwBAzAOBAhCUuNQ0RqfZQIC B9AEggTQHCQRSiCiNI7egTvUaI1Z3tfeLwFWvG7B/za5v9fb97MExoyVQSDmUyUDTlVEcg3gVqJZ @@ -169,6 +172,7 @@ public class ClientCertificateHelper private readonly X509Certificate2 _cert_KeyUsageIncludesDigitalSignature_NoEKU_PrivateKey = new X509Certificate2( Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] @"MIIKPgIBAzCCCfoGCSqGSIb3DQEHAaCCCesEggnnMIIJ4zCCBgwGCSqGSIb3DQEHAaCCBf0EggX5 MIIF9TCCBfEGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAijQh1kbOZOYQIC B9AEggTY+wDp3V31Lh7f8YrsqEsyGZ+GlYvFhLWvDASjisYJi5NlQ0ONbf0KOXHVSvBj3tVyuHm4 @@ -221,6 +225,7 @@ public class ClientCertificateHelper private readonly X509Certificate2 _cert_KeyUsageIncludesDigitalSignature_EKUIncludesClientAuth_NoPrivateKey = new X509Certificate2( Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] @"MIIDFjCCAf6gAwIBAgIQTm8+EF94L4FJ0nBFl5LICzANBgkqhkiG9w0BAQsFADAb MRkwFwYDVQQDDBB1c2VyQGV4YW1wbGUuY29tMCAXDTE1MTAwNTEwMDMwMFoYDzIx MTUxMDA1MTAwMzAwWjAbMRkwFwYDVQQDDBB1c2VyQGV4YW1wbGUuY29tMIIBIjAN diff --git a/src/libraries/System.Net.Http/src/ILLink/ILLink.Substitutions.mobile.xml b/src/libraries/System.Net.Http/src/ILLink/ILLink.Substitutions.mobile.xml index 5b705abeb24bda..208bba9a30af6c 100644 --- a/src/libraries/System.Net.Http/src/ILLink/ILLink.Substitutions.mobile.xml +++ b/src/libraries/System.Net.Http/src/ILLink/ILLink.Substitutions.mobile.xml @@ -2,6 +2,7 @@ + diff --git a/src/libraries/System.Net.Http/src/System.Net.Http.csproj b/src/libraries/System.Net.Http/src/System.Net.Http.csproj index bf7173a54c53ad..0792ba26c05514 100644 --- a/src/libraries/System.Net.Http/src/System.Net.Http.csproj +++ b/src/libraries/System.Net.Http/src/System.Net.Http.csproj @@ -137,6 +137,8 @@ + - - + SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected internal override async Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } CancellationTokenRegistration? abortRegistration = null; try { @@ -352,10 +348,10 @@ private sealed class WasmFetchResponse : IDisposable private readonly CancellationTokenRegistration _abortRegistration; private bool _isDisposed; - public WasmFetchResponse(JSObject fetchResponse, JSObject abortController, CancellationTokenRegistration abortRegistration) + public WasmFetchResponse(JSObject fetchResponse!!, JSObject abortController!!, CancellationTokenRegistration abortRegistration) { - _fetchResponse = fetchResponse ?? throw new ArgumentNullException(nameof(fetchResponse)); - _abortController = abortController ?? throw new ArgumentNullException(nameof(abortController)); + _fetchResponse = fetchResponse; + _abortController = abortController; _abortRegistration = abortRegistration; } @@ -396,9 +392,9 @@ private sealed class BrowserHttpContent : HttpContent private byte[]? _data; private readonly WasmFetchResponse _status; - public BrowserHttpContent(WasmFetchResponse status) + public BrowserHttpContent(WasmFetchResponse status!!) { - _status = status ?? throw new ArgumentNullException(nameof(status)); + _status = status; } private async Task GetResponseData(CancellationToken cancellationToken) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/ByteArrayContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/ByteArrayContent.cs index fd9e91ad4f4cba..92742ea64afbc5 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/ByteArrayContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/ByteArrayContent.cs @@ -14,23 +14,14 @@ public class ByteArrayContent : HttpContent private readonly int _offset; private readonly int _count; - public ByteArrayContent(byte[] content) + public ByteArrayContent(byte[] content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - _content = content; _count = content.Length; } - public ByteArrayContent(byte[] content, int offset, int count) + public ByteArrayContent(byte[] content!!, int offset, int count) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } if ((offset < 0) || (offset > content.Length)) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/DelegatingHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/DelegatingHandler.cs index ebc61f3922392c..c21c4d4db10d39 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/DelegatingHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/DelegatingHandler.cs @@ -25,10 +25,7 @@ public HttpMessageHandler? InnerHandler } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); CheckDisposedOrStarted(); if (NetEventSource.Log.IsEnabled()) NetEventSource.Associate(this, value); @@ -45,22 +42,14 @@ protected DelegatingHandler(HttpMessageHandler innerHandler) InnerHandler = innerHandler; } - protected internal override HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken) + protected internal override HttpResponseMessage Send(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } SetOperationStarted(); return _innerHandler!.Send(request, cancellationToken); } - protected internal override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected internal override Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } SetOperationStarted(); return _innerHandler!.SendAsync(request, cancellationToken); } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs index 75954afccab501..7c208012eaf18f 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandler.cs @@ -15,8 +15,8 @@ namespace System.Net.Http /// internal sealed class DiagnosticsHandler : HttpMessageHandlerStage { - private static readonly DiagnosticListener s_diagnosticListener = - new DiagnosticListener(DiagnosticsHandlerLoggingStrings.DiagnosticListenerName); + private static readonly DiagnosticListener s_diagnosticListener = new DiagnosticListener(DiagnosticsHandlerLoggingStrings.DiagnosticListenerName); + private static readonly ActivitySource s_activitySource = new ActivitySource(DiagnosticsHandlerLoggingStrings.Namespace); private readonly HttpMessageHandler _innerHandler; private readonly DistributedContextPropagator _propagator; @@ -47,8 +47,29 @@ public DiagnosticsHandler(HttpMessageHandler innerHandler, DistributedContextPro private static bool IsEnabled() { - // check if there is a parent Activity or if someone listens to HttpHandlerDiagnosticListener - return Activity.Current != null || s_diagnosticListener.IsEnabled(); + // check if there is a parent Activity or if someone listens to "System.Net.Http" ActivitySource or "HttpHandlerDiagnosticListener" DiagnosticListener. + return Activity.Current != null || + s_activitySource.HasListeners() || + s_diagnosticListener.IsEnabled(); + } + + private static Activity? CreateActivity(HttpRequestMessage requestMessage) + { + Activity? activity = null; + if (s_activitySource.HasListeners()) + { + activity = s_activitySource.CreateActivity(DiagnosticsHandlerLoggingStrings.ActivityName, ActivityKind.Client); + } + + if (activity is null) + { + if (Activity.Current is not null || s_diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.ActivityName, requestMessage)) + { + activity = new Activity(DiagnosticsHandlerLoggingStrings.ActivityName); + } + } + + return activity; } internal static bool IsGloballyEnabled() => GlobalHttpSettings.DiagnosticsHandler.EnableActivityPropagation; @@ -67,7 +88,7 @@ internal override ValueTask SendAsync(HttpRequestMessage re } } - private async ValueTask SendAsyncCore(HttpRequestMessage request, bool async, + private async ValueTask SendAsyncCore(HttpRequestMessage request!!, bool async, CancellationToken cancellationToken) { // HttpClientHandler is responsible to call static DiagnosticsHandler.IsEnabled() before forwarding request here. @@ -76,11 +97,6 @@ private async ValueTask SendAsyncCore(HttpRequestMessage re // So some requests happening right after subscription starts might not be instrumented. Similarly, // when consumer unsubscribes, extra requests might be instrumented - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - // Since we are reusing the request message instance on redirects, clear any existing headers // Do so before writing DiagnosticListener events as instrumentations use those to inject headers if (request.WasRedirected() && _propagatorFields is HeaderDescriptor[] fields) @@ -91,60 +107,38 @@ private async ValueTask SendAsyncCore(HttpRequestMessage re } } - Activity? activity = null; DiagnosticListener diagnosticListener = s_diagnosticListener; - // if there is no listener, but propagation is enabled (with previous IsEnabled() check) - // do not write any events just start/stop Activity and propagate Ids - if (!diagnosticListener.IsEnabled()) - { - activity = new Activity(DiagnosticsHandlerLoggingStrings.ActivityName); - activity.Start(); - InjectHeaders(activity, request); - - try - { - return async ? - await _innerHandler.SendAsync(request, cancellationToken).ConfigureAwait(false) : - _innerHandler.Send(request, cancellationToken); - } - finally - { - activity.Stop(); - } - } - Guid loggingRequestId = Guid.Empty; + Activity? activity = CreateActivity(request); - // There is a listener. Check if listener wants to be notified about HttpClient Activities - if (diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.ActivityName, request)) + // Start activity anyway if it was created. + if (activity is not null) { - activity = new Activity(DiagnosticsHandlerLoggingStrings.ActivityName); + activity.Start(); - // Only send start event to users who subscribed for it, but start activity anyway + // Only send start event to users who subscribed for it. if (diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.ActivityStartName)) { - StartActivity(diagnosticListener, activity, new ActivityStartData(request)); - } - else - { - activity.Start(); + Write(diagnosticListener, DiagnosticsHandlerLoggingStrings.ActivityStartName, new ActivityStartData(request)); } } - // try to write System.Net.Http.Request event (deprecated) + + // Try to write System.Net.Http.Request event (deprecated) if (diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.RequestWriteNameDeprecated)) { long timestamp = Stopwatch.GetTimestamp(); loggingRequestId = Guid.NewGuid(); Write(diagnosticListener, DiagnosticsHandlerLoggingStrings.RequestWriteNameDeprecated, - new RequestData(request, loggingRequestId, timestamp)); + new RequestData( + request, + loggingRequestId, + timestamp)); } - // If we are on at all, we propagate current activity information - Activity? currentActivity = Activity.Current; - if (currentActivity != null) + if (activity is not null) { - InjectHeaders(currentActivity, request); + InjectHeaders(activity, request); } HttpResponseMessage? response = null; @@ -178,17 +172,20 @@ await _innerHandler.SendAsync(request, cancellationToken).ConfigureAwait(false) } finally { - // always stop activity if it was started - if (activity != null) + // Always stop activity if it was started. + if (activity is not null) { - StopActivity(diagnosticListener, activity, new ActivityStopData( - response, - // If request is failed or cancelled, there is no response, therefore no information about request; - // pass the request in the payload, so consumers can have it in Stop for failed/canceled requests - // and not retain all requests in Start - request, - taskStatus)); + activity.SetEndTime(DateTime.UtcNow); + + // Only send stop event to users who subscribed for it. + if (diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.ActivityStopName)) + { + Write(diagnosticListener, DiagnosticsHandlerLoggingStrings.ActivityStopName, new ActivityStopData(response, request, taskStatus)); + } + + activity.Stop(); } + // Try to write System.Net.Http.Response event (deprecated) if (diagnosticListener.IsEnabled(DiagnosticsHandlerLoggingStrings.ResponseWriteNameDeprecated)) { @@ -335,27 +332,6 @@ key is not null && { diagnosticSource.Write(name, value); } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:UnrecognizedReflectionPattern", - Justification = "The args being passed into StartActivity have the commonly used properties being preserved with DynamicDependency.")] - private static Activity StartActivity<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>( - DiagnosticSource diagnosticSource, - Activity activity, - T? args) - { - return diagnosticSource.StartActivity(activity, args); - } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:UnrecognizedReflectionPattern", - Justification = "The args being passed into StopActivity have the commonly used properties being preserved with DynamicDependency.")] - private static void StopActivity<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] T>( - DiagnosticSource diagnosticSource, - Activity activity, - T? args) - { - diagnosticSource.StopActivity(activity, args); - } - #endregion } } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandlerLoggingStrings.cs b/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandlerLoggingStrings.cs index cd91daaed3cbcf..030310f4fdc81d 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandlerLoggingStrings.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/DiagnosticsHandlerLoggingStrings.cs @@ -8,12 +8,13 @@ namespace System.Net.Http /// internal static class DiagnosticsHandlerLoggingStrings { - public const string DiagnosticListenerName = "HttpHandlerDiagnosticListener"; - public const string RequestWriteNameDeprecated = "System.Net.Http.Request"; - public const string ResponseWriteNameDeprecated = "System.Net.Http.Response"; - - public const string ExceptionEventName = "System.Net.Http.Exception"; - public const string ActivityName = "System.Net.Http.HttpRequestOut"; - public const string ActivityStartName = "System.Net.Http.HttpRequestOut.Start"; + public const string DiagnosticListenerName = "HttpHandlerDiagnosticListener"; + public const string Namespace = "System.Net.Http"; + public const string RequestWriteNameDeprecated = Namespace + ".Request"; + public const string ResponseWriteNameDeprecated = Namespace + ".Response"; + public const string ExceptionEventName = Namespace + ".Exception"; + public const string ActivityName = Namespace + ".HttpRequestOut"; + public const string ActivityStartName = ActivityName + ".Start"; + public const string ActivityStopName = ActivityName + ".Stop"; } } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/FormUrlEncodedContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/FormUrlEncodedContent.cs index abf61ca7ee0516..43f5102201e7b4 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/FormUrlEncodedContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/FormUrlEncodedContent.cs @@ -23,13 +23,8 @@ public FormUrlEncodedContent( Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); } - private static byte[] GetContentByteArray(IEnumerable> nameValueCollection) + private static byte[] GetContentByteArray(IEnumerable> nameValueCollection!!) { - if (nameValueCollection == null) - { - throw new ArgumentNullException(nameof(nameValueCollection)); - } - // Encode and concatenate data StringBuilder builder = new StringBuilder(); foreach (KeyValuePair pair in nameValueCollection) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaderValueCollection.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaderValueCollection.cs index 97c458a6d6b855..7ae54578ed03db 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaderValueCollection.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaderValueCollection.cs @@ -78,12 +78,8 @@ public bool Contains(T item) return _store.ContainsParsedValue(_descriptor, item); } - public void CopyTo(T[] array, int arrayIndex) + public void CopyTo(T[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } // Allow arrayIndex == array.Length in case our own collection is empty if ((arrayIndex < 0) || (arrayIndex > array.Length)) { @@ -166,13 +162,8 @@ public override string ToString() return _store.GetHeaderString(_descriptor); } - private void CheckValue(T item) + private void CheckValue(T item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - if (_descriptor.Parser == GenericHeaderParser.TokenListParser) { // The collection expects valid HTTP tokens, which are typed as string. diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs index 266d471001835b..db68c4478bbfbf 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs @@ -94,13 +94,8 @@ internal void Add(HeaderDescriptor descriptor, string? value) public void Add(string name, IEnumerable values) => Add(GetHeaderDescriptor(name), values); - internal void Add(HeaderDescriptor descriptor, IEnumerable values) + internal void Add(HeaderDescriptor descriptor, IEnumerable values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - PrepareHeaderInfoForAdd(descriptor, out HeaderStoreItemInfo info, out bool addToStore); try @@ -165,13 +160,8 @@ public bool TryAddWithoutValidation(string name, IEnumerable values) => TryGetHeaderDescriptor(name, out HeaderDescriptor descriptor) && TryAddWithoutValidation(descriptor, values); - internal bool TryAddWithoutValidation(HeaderDescriptor descriptor, IEnumerable values) + internal bool TryAddWithoutValidation(HeaderDescriptor descriptor, IEnumerable values!!) { - if (values == null) - { - throw new ArgumentNullException(nameof(values)); - } - using IEnumerator enumerator = values.GetEnumerator(); if (enumerator.MoveNext()) { diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ObjectCollection.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ObjectCollection.cs index 3799eba085b148..713e94a64eb2a5 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ObjectCollection.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ObjectCollection.cs @@ -9,12 +9,8 @@ namespace System.Net.Http.Headers { internal sealed class UnvalidatedObjectCollection : ObjectCollection where T : class { - public override void Validate(T item) + public override void Validate(T item!!) { - if (item is null) - { - throw new ArgumentNullException(nameof(item)); - } } } @@ -196,7 +192,7 @@ internal sealed class DebugView { private readonly ObjectCollection _collection; - public DebugView(ObjectCollection collection) => _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + public DebugView(ObjectCollection collection!!) => _collection = collection; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public T[] Items diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ProductInfoHeaderValue.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ProductInfoHeaderValue.cs index 4c69dec3e80835..773d8658767a2b 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ProductInfoHeaderValue.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/ProductInfoHeaderValue.cs @@ -26,13 +26,8 @@ public ProductInfoHeaderValue(string productName, string? productVersion) { } - public ProductInfoHeaderValue(ProductHeaderValue product) + public ProductInfoHeaderValue(ProductHeaderValue product!!) { - if (product == null) - { - throw new ArgumentNullException(nameof(product)); - } - _product = product; } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/RangeConditionHeaderValue.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/RangeConditionHeaderValue.cs index 65677caac1d6d9..97e3a591cc2a87 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/RangeConditionHeaderValue.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/RangeConditionHeaderValue.cs @@ -26,13 +26,8 @@ public RangeConditionHeaderValue(DateTimeOffset date) _date = date; } - public RangeConditionHeaderValue(EntityTagHeaderValue entityTag) + public RangeConditionHeaderValue(EntityTagHeaderValue entityTag!!) { - if (entityTag == null) - { - throw new ArgumentNullException(nameof(entityTag)); - } - _entityTag = entityTag; } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.cs index 3b77aeafc0467b..89549312261080 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.cs @@ -39,7 +39,11 @@ public partial class HttpClient : HttpMessageInvoker public static IWebProxy DefaultProxy { get => LazyInitializer.EnsureInitialized(ref s_defaultProxy, () => SystemProxyInfo.Proxy); - set => s_defaultProxy = value ?? throw new ArgumentNullException(nameof(value)); + set + { + ArgumentNullException.ThrowIfNull(value); + s_defaultProxy = value; + } } public HttpRequestHeaders DefaultRequestHeaders => @@ -51,7 +55,8 @@ public Version DefaultRequestVersion set { CheckDisposedOrStarted(); - _defaultRequestVersion = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _defaultRequestVersion = value; } } @@ -553,13 +558,8 @@ async Task Core( } } - private void CheckRequestBeforeSend(HttpRequestMessage request) + private void CheckRequestBeforeSend(HttpRequestMessage request!!) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - CheckDisposed(); CheckRequestMessage(request); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.InvokeNativeHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.InvokeNativeHandler.cs index d14bbbf2799cfa..a1de275aef452c 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.InvokeNativeHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.InvokeNativeHandler.cs @@ -157,4 +157,4 @@ private HttpMessageHandler CreateNativeHandler() return (HttpMessageHandler)_nativeHandlerMethod!.Invoke(null, null)!; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.cs index 2284b33b80a719..53ae907c7bfe7f 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.AnyMobile.cs @@ -116,10 +116,7 @@ public CookieContainer CookieContainer } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (IsNativeHandlerEnabled) { @@ -792,4 +789,4 @@ private object InvokeNativeHandlerMethod(string name, params object?[] parameter "System.Net.Http.UseNativeHttpHandler", false); } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs index 1f11fbf9f6f735..623a7f02efe224 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs @@ -76,10 +76,7 @@ public CookieContainer CookieContainer get => _underlyingHandler.CookieContainer; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _underlyingHandler.CookieContainer = value; } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpContent.cs index 5c907ad6150b7a..9b1b9445a6deb6 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpContent.cs @@ -361,11 +361,7 @@ protected virtual Task SerializeToStreamAsync(Stream stream, TransportContext? c public void CopyTo(Stream stream, TransportContext? context, CancellationToken cancellationToken) { CheckDisposed(); - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - + ArgumentNullException.ThrowIfNull(stream); try { if (TryGetBuffer(out ArraySegment buffer)) @@ -395,11 +391,7 @@ public Task CopyToAsync(Stream stream, TransportContext? context) => public Task CopyToAsync(Stream stream, TransportContext? context, CancellationToken cancellationToken) { CheckDisposed(); - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - + ArgumentNullException.ThrowIfNull(stream); try { return WaitAsync(InternalCopyToAsync(stream, context, cancellationToken)); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs index 9b33c75b4b22d4..643d0f110f555f 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpMessageInvoker.cs @@ -20,13 +20,8 @@ public HttpMessageInvoker(HttpMessageHandler handler) { } - public HttpMessageInvoker(HttpMessageHandler handler, bool disposeHandler) + public HttpMessageInvoker(HttpMessageHandler handler!!, bool disposeHandler) { - if (handler == null) - { - throw new ArgumentNullException(nameof(handler)); - } - if (NetEventSource.Log.IsEnabled()) NetEventSource.Associate(this, handler); _handler = handler; @@ -34,12 +29,8 @@ public HttpMessageInvoker(HttpMessageHandler handler, bool disposeHandler) } [UnsupportedOSPlatformAttribute("browser")] - public virtual HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken) + public virtual HttpResponseMessage Send(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request)); - } CheckDisposed(); if (ShouldSendWithTelemetry(request)) @@ -66,12 +57,8 @@ public virtual HttpResponseMessage Send(HttpRequestMessage request, Cancellation } } - public virtual Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + public virtual Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request)); - } CheckDisposed(); if (ShouldSendWithTelemetry(request)) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpRequestMessage.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpRequestMessage.cs index 6c71b4c08633f1..3542cfc05d7449 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpRequestMessage.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpRequestMessage.cs @@ -35,10 +35,7 @@ public Version Version get { return _version; } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); CheckDisposed(); _version = value; @@ -88,10 +85,7 @@ public HttpMethod Method get { return _method; } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); CheckDisposed(); _method = value; @@ -125,12 +119,12 @@ public HttpRequestMessage() { } - public HttpRequestMessage(HttpMethod method, Uri? requestUri) + public HttpRequestMessage(HttpMethod method!!, Uri? requestUri) { // It's OK to have a 'null' request Uri. If HttpClient is used, the 'BaseAddress' will be added. // If there is no 'BaseAddress', sending this request message will throw. // Note that we also allow the string to be empty: null and empty are considered equivalent. - _method = method ?? throw new ArgumentNullException(nameof(method)); + _method = method; _requestUri = requestUri; _version = DefaultRequestVersion; _versionPolicy = DefaultVersionPolicy; diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs b/src/libraries/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs index 49f6a6f34a72ec..b968a7f966620f 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs @@ -28,10 +28,7 @@ public Version Version set { #if !PHONE - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); #endif CheckDisposed(); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/MessageProcessingHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/MessageProcessingHandler.cs index d0c3748d4943de..0d08eb6141115c 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/MessageProcessingHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/MessageProcessingHandler.cs @@ -27,14 +27,9 @@ protected abstract HttpRequestMessage ProcessRequest(HttpRequestMessage request, protected abstract HttpResponseMessage ProcessResponse(HttpResponseMessage response, CancellationToken cancellationToken); - protected internal sealed override HttpResponseMessage Send(HttpRequestMessage request, + protected internal sealed override HttpResponseMessage Send(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - // Since most of the SendAsync code is just Task handling, there's no reason to share the code. HttpRequestMessage newRequestMessage = ProcessRequest(request, cancellationToken); HttpResponseMessage response = base.Send(newRequestMessage, cancellationToken); @@ -42,14 +37,9 @@ protected internal sealed override HttpResponseMessage Send(HttpRequestMessage r return newResponseMessage; } - protected internal sealed override Task SendAsync(HttpRequestMessage request, + protected internal sealed override Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - // ProcessRequest() and ProcessResponse() are supposed to be fast, so we call ProcessRequest() on the same // thread SendAsync() was invoked to avoid context switches. However, if ProcessRequest() throws, we have // to catch the exception since the caller doesn't expect exceptions when calling SendAsync(): The diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/MultipartContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/MultipartContent.cs index 4ac7a34a126950..d9ed3613a1dca7 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/MultipartContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/MultipartContent.cs @@ -108,13 +108,8 @@ private static string GetDefaultBoundary() return Guid.NewGuid().ToString(); } - public virtual void Add(HttpContent content) + public virtual void Add(HttpContent content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - _nestedContent.Add(content); } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/MultipartFormDataContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/MultipartFormDataContent.cs index 2ea780aa3a65fa..e4206d4d65ef54 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/MultipartFormDataContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/MultipartFormDataContent.cs @@ -23,27 +23,15 @@ public MultipartFormDataContent(string boundary) { } - public override void Add(HttpContent content) + public override void Add(HttpContent content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - - if (content.Headers.ContentDisposition == null) - { - content.Headers.ContentDisposition = new ContentDispositionHeaderValue(formData); - } + content.Headers.ContentDisposition ??= new ContentDispositionHeaderValue(formData); base.Add(content); } - public void Add(HttpContent content, string name) + public void Add(HttpContent content!!, string name) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException(SR.net_http_argument_empty_string, nameof(name)); @@ -52,12 +40,8 @@ public void Add(HttpContent content, string name) AddInternal(content, name, null); } - public void Add(HttpContent content, string name, string fileName) + public void Add(HttpContent content!!, string name, string fileName) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException(SR.net_http_argument_empty_string, nameof(name)); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/AuthenticationHelper.NtAuth.tvOS.cs b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/AuthenticationHelper.NtAuth.tvOS.cs index 168f03e80bdf3e..2b5b5a4fe49f9d 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/AuthenticationHelper.NtAuth.tvOS.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/AuthenticationHelper.NtAuth.tvOS.cs @@ -27,4 +27,4 @@ public static Task SendWithNtConnectionAuthAsync(HttpReques return InnerSendAsync(request, request.RequestUri, async, credentials, isProxyAuth: false, connection, connectionPool, cancellationToken); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionResponseContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionResponseContent.cs index 72befb088edce5..17e9e7664658d6 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionResponseContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionResponseContent.cs @@ -33,14 +33,9 @@ private Stream ConsumeStream() return _stream; } - protected override void SerializeToStream(Stream stream, TransportContext? context, + protected override void SerializeToStream(Stream stream!!, TransportContext? context, CancellationToken cancellationToken) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - using (Stream contentStream = ConsumeStream()) { const int BufferSize = 8192; @@ -51,13 +46,8 @@ protected override void SerializeToStream(Stream stream, TransportContext? conte protected sealed override Task SerializeToStreamAsync(Stream stream, TransportContext? context) => SerializeToStreamAsync(stream, context, CancellationToken.None); - protected sealed override async Task SerializeToStreamAsync(Stream stream, TransportContext? context, CancellationToken cancellationToken) + protected sealed override async Task SerializeToStreamAsync(Stream stream!!, TransportContext? context, CancellationToken cancellationToken) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - using (Stream contentStream = ConsumeStream()) { const int BufferSize = 8192; diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/MacProxy.cs b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/MacProxy.cs index 61c22cc158e0dd..d907b352272133 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/MacProxy.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/MacProxy.cs @@ -111,11 +111,8 @@ private static Uri GetProxyUri(string scheme, CFProxy proxy) return null; } - public bool IsBypassed(Uri targetUri) + public bool IsBypassed(Uri targetUri!!) { - if (targetUri == null) - throw new ArgumentNullException(nameof(targetUri)); - Uri? proxyUri = GetProxy(targetUri); return Equals(proxyUri, targetUri) || proxyUri == null; } diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/SocketsHttpHandler.cs b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/SocketsHttpHandler.cs index 5be369967df859..9fc4bab05ff11f 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/SocketsHttpHandler.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/SocketsHttpHandler.cs @@ -531,14 +531,9 @@ private HttpMessageHandlerStage SetupHandlerChain() return _handler; } - protected internal override HttpResponseMessage Send(HttpRequestMessage request, + protected internal override HttpResponseMessage Send(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - if (request.Version.Major >= 2) { throw new NotSupportedException(SR.Format(SR.net_http_http2_sync_not_supported, GetType())); @@ -565,13 +560,8 @@ protected internal override HttpResponseMessage Send(HttpRequestMessage request, return handler.Send(request, cancellationToken); } - protected internal override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected internal override Task SendAsync(HttpRequestMessage request!!, CancellationToken cancellationToken) { - if (request == null) - { - throw new ArgumentNullException(nameof(request), SR.net_http_handler_norequest); - } - CheckDisposed(); if (cancellationToken.IsCancellationRequested) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/StreamContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/StreamContent.cs index 12fab2a7807a87..6a33a01b17ee64 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/StreamContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/StreamContent.cs @@ -17,23 +17,14 @@ public class StreamContent : HttpContent private bool _contentConsumed; private long _start; - public StreamContent(Stream content) + public StreamContent(Stream content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - // Indicate that we should use default buffer size by setting size to 0. InitializeContent(content, 0); } - public StreamContent(Stream content, int bufferSize) + public StreamContent(Stream content!!, int bufferSize) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize)); diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/StringContent.cs b/src/libraries/System.Net.Http/src/System/Net/Http/StringContent.cs index 05ec413dbdb533..da2fcf8d003aa3 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/StringContent.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/StringContent.cs @@ -36,19 +36,12 @@ public StringContent(string content, Encoding? encoding, string? mediaType) // A StringContent is essentially a ByteArrayContent. We serialize the string into a byte-array in the // constructor using encoding information provided by the caller (if any). When this content is sent, the // Content-Length can be retrieved easily (length of the array). - private static byte[] GetContentByteArray(string content, Encoding? encoding) + private static byte[] GetContentByteArray(string content!!, Encoding? encoding) { // In this case we treat 'null' strings different from string.Empty in order to be consistent with our // other *Content constructors: 'null' throws, empty values are allowed. - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - if (encoding == null) - { - encoding = HttpContent.DefaultStringEncoding; - } + encoding ??= HttpContent.DefaultStringEncoding; return encoding.GetBytes(content); } diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs index 49e4b0a384806d..a84459ac06ad72 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/DiagnosticsTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.Tracing; +using System.IO; using System.Linq; using System.Net.Http.Headers; using System.Net.Test.Common; @@ -802,43 +803,6 @@ public static IEnumerable UseSocketsHttpHandler_WithIdFormat_MemberDat yield return new object[] { false, ActivityIdFormat.W3C }; } - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotBrowser))] - [MemberData(nameof(UseSocketsHttpHandler_WithIdFormat_MemberData))] - public async Task SendAsync_ExpectedActivityPropagationWithoutListener(bool useSocketsHttpHandler, ActivityIdFormat idFormat) - { - Activity parent = new Activity("parent"); - parent.SetIdFormat(idFormat); - parent.Start(); - - await GetFactoryForVersion(UseVersion).CreateClientAndServerAsync( - async uri => - { - await GetAsync(UseVersion.ToString(), TestAsync.ToString(), uri, useSocketsHttpHandler: useSocketsHttpHandler); - }, - async server => - { - HttpRequestData requestData = await server.HandleRequestAsync(); - AssertHeadersAreInjected(requestData, parent); - }); - } - - [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsNotBrowser))] - [InlineData(true)] - [InlineData(false)] - public async Task SendAsync_ExpectedActivityPropagationWithoutListenerOrParentActivity(bool useSocketsHttpHandler) - { - await GetFactoryForVersion(UseVersion).CreateClientAndServerAsync( - async uri => - { - await GetAsync(UseVersion.ToString(), TestAsync.ToString(), uri, useSocketsHttpHandler: useSocketsHttpHandler); - }, - async server => - { - HttpRequestData requestData = await server.HandleRequestAsync(); - AssertNoHeadersAreInjected(requestData); - }); - } - [ConditionalTheory(nameof(EnableActivityPropagationEnvironmentVariableIsNotSetAndRemoteExecutorSupported))] [InlineData("true")] [InlineData("1")] @@ -998,6 +962,117 @@ await GetFactoryForVersion(UseVersion).CreateClientAndServerAsync( }); } + public static IEnumerable SocketsHttpHandler_ActivityCreation_MemberData() + { + foreach (var currentActivitySet in new bool[] { + true, // Activity was set + false }) // No Activity is set + { + foreach (var diagnosticListenerActivityEnabled in new bool?[] { + true, // DiagnosticListener requested an Activity + false, // DiagnosticListener does not want an Activity + null }) // There is no DiagnosticListener + { + foreach (var activitySourceCreatesActivity in new bool?[] { + true, // ActivitySource created an Activity + false, // ActivitySource chose not to create an Activity + null }) // ActivitySource had no listeners + { + yield return new object[] { currentActivitySet, diagnosticListenerActivityEnabled, activitySourceCreatesActivity }; + } + } + } + } + + [ConditionalTheory(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] + [MemberData(nameof(SocketsHttpHandler_ActivityCreation_MemberData))] + public void SendAsync_ActivityIsCreatedIfRequested(bool currentActivitySet, bool? diagnosticListenerActivityEnabled, bool? activitySourceCreatesActivity) + { + string parameters = $"{currentActivitySet},{diagnosticListenerActivityEnabled},{activitySourceCreatesActivity}"; + + RemoteExecutor.Invoke(async (useVersion, testAsync, parametersString) => + { + bool?[] parameters = parametersString.Split(',').Select(p => p.Length == 0 ? (bool?)null : bool.Parse(p)).ToArray(); + bool currentActivitySet = parameters[0].Value; + bool? diagnosticListenerActivityEnabled = parameters[1]; + bool? activitySourceCreatesActivity = parameters[2]; + + bool madeASamplingDecision = false; + if (activitySourceCreatesActivity.HasValue) + { + ActivitySource.AddActivityListener(new ActivityListener + { + ShouldListenTo = _ => true, + Sample = (ref ActivityCreationOptions _) => + { + madeASamplingDecision = true; + return activitySourceCreatesActivity.Value ? ActivitySamplingResult.AllData : ActivitySamplingResult.None; + } + }); + } + + bool listenerCallbackWasCalled = false; + IDisposable listenerSubscription = new MemoryStream(); // Dummy disposable + if (diagnosticListenerActivityEnabled.HasValue) + { + var diagnosticListenerObserver = new FakeDiagnosticListenerObserver(_ => listenerCallbackWasCalled = true); + + diagnosticListenerObserver.Enable(name => !name.Contains("HttpRequestOut") || diagnosticListenerActivityEnabled.Value); + + listenerSubscription = DiagnosticListener.AllListeners.Subscribe(diagnosticListenerObserver); + } + + Activity parent = currentActivitySet ? new Activity("parent").Start() : null; + Activity activity = parent; + + if (!currentActivitySet) + { + // Listen to new activity creations if an Activity was created without a parent + // (when a DiagnosticListener forced one to be created) + ActivitySource.AddActivityListener(new ActivityListener + { + ShouldListenTo = _ => true, + ActivityStarted = created => + { + Assert.Null(parent); + activity = created; + } + }); + } + + using (listenerSubscription) + { + await GetFactoryForVersion(useVersion).CreateClientAndServerAsync( + async uri => + { + await GetAsync(useVersion, testAsync, uri); + }, + async server => + { + HttpRequestData requestData = await server.AcceptConnectionSendResponseAndCloseAsync(); + + if (currentActivitySet || diagnosticListenerActivityEnabled == true || activitySourceCreatesActivity == true) + { + Assert.NotNull(activity); + AssertHeadersAreInjected(requestData, activity, parent is null); + } + else + { + AssertNoHeadersAreInjected(requestData); + + if (!currentActivitySet) + { + Assert.Null(activity); + } + } + }); + } + + Assert.Equal(activitySourceCreatesActivity.HasValue, madeASamplingDecision); + Assert.Equal(diagnosticListenerActivityEnabled.HasValue, listenerCallbackWasCalled); + }, UseVersion.ToString(), TestAsync.ToString(), parameters).Dispose(); + } + private static T GetProperty(object obj, string propertyName) { Type t = obj.GetType(); diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj b/src/libraries/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj index d057f21b00ff9a..1b4a5aa3769239 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/System.Net.Http.Functional.Tests.csproj @@ -32,6 +32,8 @@ + - - + true $(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser;$(NetCoreAppCurrent)-OSX;$(NetCoreAppCurrent)-MacCatalyst;$(NetCoreAppCurrent)-iOS;$(NetCoreAppCurrent)-tvOS;$(NetCoreAppCurrent)-Android annotations + true diff --git a/src/libraries/System.Net.HttpListener/src/System.Net.HttpListener.csproj b/src/libraries/System.Net.HttpListener/src/System.Net.HttpListener.csproj index fa03df3ba1a2f3..1da319175f0d29 100644 --- a/src/libraries/System.Net.HttpListener/src/System.Net.HttpListener.csproj +++ b/src/libraries/System.Net.HttpListener/src/System.Net.HttpListener.csproj @@ -55,6 +55,8 @@ + - - + array.Length) { throw new ArgumentOutOfRangeException(nameof(array), SR.net_array_too_small); @@ -60,10 +57,7 @@ public void CopyTo(Array array, int offset) public void CopyTo(string[] array, int offset) { _httpListener.CheckDisposed(); - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } + ArgumentNullException.ThrowIfNull(array); if (Count > array.Length) { throw new ArgumentOutOfRangeException(nameof(array), SR.net_array_too_small); diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerResponse.cs b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerResponse.cs index 1568b663337460..f7aa14bd8a20ce 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerResponse.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/HttpListenerResponse.cs @@ -175,10 +175,7 @@ public string StatusDescription set { CheckDisposed(); - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Need to verify the status description doesn't contain any control characters except HT. We mask off the high // byte since that's how it's encoded. @@ -207,12 +204,8 @@ public void AppendHeader(string name, string value) Headers.Add(name, value); } - public void AppendCookie(Cookie cookie) + public void AppendCookie(Cookie cookie!!) { - if (cookie == null) - { - throw new ArgumentNullException(nameof(cookie)); - } if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"cookie: {cookie}"); Cookies.Add(cookie); } @@ -274,13 +267,8 @@ public void Redirect(string url) StatusDescription = HttpStatusDescription.Get(StatusCode)!; } - public void SetCookie(Cookie cookie) + public void SetCookie(Cookie cookie!!) { - if (cookie == null) - { - throw new ArgumentNullException(nameof(cookie)); - } - Cookie newCookie = cookie.Clone(); int added = Cookies.InternalAdd(newCookie, true); diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/HttpResponseStream.cs b/src/libraries/System.Net.HttpListener/src/System/Net/HttpResponseStream.cs index f082d7cd944643..c0929c433606fb 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/HttpResponseStream.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/HttpResponseStream.cs @@ -67,10 +67,7 @@ public override void EndWrite(IAsyncResult asyncResult) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"asyncResult:{asyncResult}"); - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); EndWriteCore(asyncResult); } diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs index 40dbf3c94ceb46..be93b1248605da 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/ChunkedInputStream.cs @@ -149,11 +149,8 @@ private void OnRead(IAsyncResult base_ares) } } - public override int EndRead(IAsyncResult asyncResult) + public override int EndRead(IAsyncResult asyncResult!!) { - if (asyncResult == null) - throw new ArgumentNullException(nameof(asyncResult)); - HttpStreamAsyncResult? ares = asyncResult as HttpStreamAsyncResult; if (ares == null || !ReferenceEquals(this, ares._parent)) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs index 3839b27cff25b4..a709cf3dffbc39 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListener.Managed.cs @@ -305,10 +305,7 @@ public IAsyncResult BeginGetContext(AsyncCallback? callback, object? state) public HttpListenerContext EndGetContext(IAsyncResult asyncResult) { CheckDisposed(); - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); ListenerAsyncResult? ares = asyncResult as ListenerAsyncResult; if (ares == null || !ReferenceEquals(this, ares._parent)) diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs index 558570b28cfbd0..79f5013d264a2e 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerRequest.Managed.cs @@ -392,11 +392,8 @@ private IAsyncResult BeginGetClientCertificateCore(AsyncCallback? requestCallbac return asyncResult; } - public X509Certificate2? EndGetClientCertificate(IAsyncResult asyncResult) + public X509Certificate2? EndGetClientCertificate(IAsyncResult asyncResult!!) { - if (asyncResult == null) - throw new ArgumentNullException(nameof(asyncResult)); - GetClientCertificateAsyncResult? clientCertAsyncResult = asyncResult as GetClientCertificateAsyncResult; if (clientCertAsyncResult == null || clientCertAsyncResult.AsyncObject != this) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs index 2a8fc6efd38729..728e784c43816d 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpListenerResponse.Managed.cs @@ -64,10 +64,7 @@ public Version ProtocolVersion set { CheckDisposed(); - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Major != 1 || (value.Minor != 0 && value.Minor != 1)) { throw new ArgumentException(SR.net_wrongversion, nameof(value)); @@ -119,10 +116,7 @@ public void Close(byte[] responseEntity, bool willBlock) { CheckDisposed(); - if (responseEntity == null) - { - throw new ArgumentNullException(nameof(responseEntity)); - } + ArgumentNullException.ThrowIfNull(responseEntity); if (!SentHeaders && _boundaryType != BoundaryType.Chunked) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs index bdfb7f3f8c869e..ce6056af78a872 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpRequestStream.Managed.cs @@ -161,11 +161,8 @@ protected virtual IAsyncResult BeginReadCore(byte[] buffer, int offset, int size return _stream.BeginRead(buffer, offset, size, cback, state); } - public override int EndRead(IAsyncResult asyncResult) + public override int EndRead(IAsyncResult asyncResult!!) { - if (asyncResult == null) - throw new ArgumentNullException(nameof(asyncResult)); - if (asyncResult is HttpStreamAsyncResult r) { if (!ReferenceEquals(this, r._parent)) diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListener.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListener.Windows.cs index 5e2dedd9fd78fe..577afdbf025718 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListener.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListener.Windows.cs @@ -659,10 +659,7 @@ public HttpListenerContext EndGetContext(IAsyncResult asyncResult) try { CheckDisposed(); - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"asyncResult: {asyncResult}"); if (!(asyncResult is ListenerAsyncResult castedAsyncResult) || !(castedAsyncResult.AsyncObject is HttpListenerSession session) || session.Listener != this) { @@ -1023,7 +1020,7 @@ public HttpListenerContext EndGetContext(IAsyncResult asyncResult) { if (userContext != null) { - userContext.Close(); + userContext.Dispose(); } } } diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs index 0e21c34681fe8c..c48b34667ce527 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerRequest.Windows.cs @@ -252,14 +252,9 @@ internal void SetClientCertificateError(int clientCertificateError) _clientCertificateError = clientCertificateError; } - public X509Certificate2? EndGetClientCertificate(IAsyncResult asyncResult) + public X509Certificate2? EndGetClientCertificate(IAsyncResult asyncResult!!) { X509Certificate2? clientCertificate = null; - - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } ListenerClientCertAsyncResult? clientCertAsyncResult = asyncResult as ListenerClientCertAsyncResult; if (clientCertAsyncResult == null || clientCertAsyncResult.AsyncObject != this) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs index 0c4b36af8efc75..35c4adde7144ce 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpListenerResponse.Windows.cs @@ -82,10 +82,7 @@ public Version ProtocolVersion set { CheckDisposed(); - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Major != 1 || (value.Minor != 0 && value.Minor != 1)) { throw new ArgumentException(SR.net_wrongversion, nameof(value)); @@ -121,10 +118,7 @@ public void Close() public void Close(byte[] responseEntity, bool willBlock) { CheckDisposed(); - if (responseEntity == null) - { - throw new ArgumentNullException(nameof(responseEntity)); - } + ArgumentNullException.ThrowIfNull(responseEntity); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"ResponseState:{_responseState}, BoundaryType:{_boundaryType}, ContentLength:{_contentLength}"); if (!SentHeaders && _boundaryType != BoundaryType.Chunked) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpRequestStream.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpRequestStream.Windows.cs index 214416962eba75..52167a955eefff 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpRequestStream.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/HttpRequestStream.Windows.cs @@ -219,10 +219,7 @@ public override int EndRead(IAsyncResult asyncResult) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"asyncResult: {asyncResult}"); - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); HttpRequestStreamAsyncResult? castedAsyncResult = asyncResult as HttpRequestStreamAsyncResult; if (castedAsyncResult == null || castedAsyncResult.AsyncObject != this) { diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/WebSockets/HttpWebSocket.Windows.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/WebSockets/HttpWebSocket.Windows.cs index 9b9c501746de26..76da09f7976701 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/WebSockets/HttpWebSocket.Windows.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/WebSockets/HttpWebSocket.Windows.cs @@ -162,13 +162,8 @@ private static unsafe ulong SendWebSocketHeaders(HttpListenerResponse response) true); } - internal static void ValidateInnerStream(Stream innerStream) + internal static void ValidateInnerStream(Stream innerStream!!) { - if (innerStream == null) - { - throw new ArgumentNullException(nameof(innerStream)); - } - if (!innerStream.CanRead) { throw new ArgumentException(SR.net_writeonlystream, nameof(innerStream)); diff --git a/src/libraries/System.Net.Mail/src/System.Net.Mail.csproj b/src/libraries/System.Net.Mail/src/System.Net.Mail.csproj index e47a78d8cadefa..c80216d012cb21 100644 --- a/src/libraries/System.Net.Mail/src/System.Net.Mail.csproj +++ b/src/libraries/System.Net.Mail/src/System.Net.Mail.csproj @@ -66,6 +66,8 @@ + - - + _encoder.GetEncodedString(); - public override int EndRead(IAsyncResult asyncResult) + public override int EndRead(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - return ReadAsyncResult.End(asyncResult); } - public override void EndWrite(IAsyncResult asyncResult) + public override void EndWrite(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - WriteAsyncResult.End(asyncResult); } diff --git a/src/libraries/System.Net.Mail/src/System/Net/DelegatedStream.cs b/src/libraries/System.Net.Mail/src/System/Net/DelegatedStream.cs index d253ef78f36481..c5533daf552485 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/DelegatedStream.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/DelegatedStream.cs @@ -11,11 +11,8 @@ internal abstract class DelegatedStream : Stream { private readonly Stream _stream; - protected DelegatedStream(Stream stream) + protected DelegatedStream(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - _stream = stream; } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/AlternateViewCollection.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/AlternateViewCollection.cs index eae7b633d3969d..40f064e8794271 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/AlternateViewCollection.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/AlternateViewCollection.cs @@ -45,24 +45,14 @@ protected override void ClearItems() protected override void SetItem(int index, AlternateView item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.SetItem(index, item); } protected override void InsertItem(int index, AlternateView item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.InsertItem(index, item); } } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/Attachment.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/Attachment.cs index 4fc0954e945210..a8c67d806ac942 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/Attachment.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/Attachment.cs @@ -82,17 +82,9 @@ internal void SetContentFromFile(string fileName, string? mediaType) _part.SetContent(stream, null, mediaType); } - internal void SetContentFromString(string content, ContentType? contentType) + internal void SetContentFromString(string content!!, ContentType? contentType) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - - if (_part.Stream != null) - { - _part.Stream.Close(); - } + _part.Stream?.Close(); Encoding encoding; @@ -124,17 +116,9 @@ internal void SetContentFromString(string content, ContentType? contentType) } } - internal void SetContentFromString(string content, Encoding? encoding, string? mediaType) + internal void SetContentFromString(string content!!, Encoding? encoding, string? mediaType) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - - if (_part.Stream != null) - { - _part.Stream.Close(); - } + _part.Stream?.Close(); if (string.IsNullOrEmpty(mediaType)) { diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/AttachmentCollection.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/AttachmentCollection.cs index 96be60c1fdcfb5..64c9d3c283c5cb 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/AttachmentCollection.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/AttachmentCollection.cs @@ -45,24 +45,14 @@ protected override void ClearItems() protected override void SetItem(int index, Attachment item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.SetItem(index, item); } protected override void InsertItem(int index, Attachment item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.InsertItem(index, item); } } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/LinkedResourceCollection.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/LinkedResourceCollection.cs index c32b21197e91cf..5e76e927f2ba84 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/LinkedResourceCollection.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/LinkedResourceCollection.cs @@ -44,24 +44,14 @@ protected override void ClearItems() protected override void SetItem(int index, LinkedResource item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.SetItem(index, item); } protected override void InsertItem(int index, LinkedResource item) { ObjectDisposedException.ThrowIf(_disposed, this); - - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - + ArgumentNullException.ThrowIfNull(item); base.InsertItem(index, item); } } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddressCollection.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddressCollection.cs index 41d3ba32a70219..d3ccf39ae51643 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddressCollection.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddressCollection.cs @@ -23,23 +23,13 @@ public void Add(string addresses) ParseValue(addresses); } - protected override void SetItem(int index, MailAddress item) + protected override void SetItem(int index, MailAddress item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.SetItem(index, item); } - protected override void InsertItem(int index, MailAddress item) + protected override void InsertItem(int index, MailAddress item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.InsertItem(index, item); } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailMessage.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailMessage.cs index dfa63b9641f7ca..cb4c835eb4556e 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailMessage.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailMessage.cs @@ -52,14 +52,8 @@ public MailMessage(string from, string to, string? subject, string? body) : this } - public MailMessage(MailAddress from, MailAddress to) + public MailMessage(MailAddress from!!, MailAddress to!!) { - if (from == null) - throw new ArgumentNullException(nameof(from)); - - if (to == null) - throw new ArgumentNullException(nameof(to)); - _message = new Message(from, to); } @@ -72,10 +66,7 @@ public MailAddress? From } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _message.From = value; } } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailPriority.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailPriority.cs index e6536a48e2b456..89544c98ebfd89 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailPriority.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailPriority.cs @@ -85,10 +85,7 @@ internal MailAddress? From } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _from = value; } } @@ -234,11 +231,7 @@ internal MimeBasePart? Content } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _content = value; } } @@ -303,13 +296,8 @@ internal IAsyncResult BeginSend(BaseWriter writer, bool sendEnvelope, bool allow } } - internal void EndSend(IAsyncResult asyncResult) + internal void EndSend(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - if (Content != null) { Content.EndSend(asyncResult); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailWriter.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailWriter.cs index f41b6992e6563c..914087cee23f87 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailWriter.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailWriter.cs @@ -22,11 +22,8 @@ internal MailWriter(Stream stream, bool encodeForTransport) { } - internal override void WriteHeaders(NameValueCollection headers, bool allowUnicode) + internal override void WriteHeaders(NameValueCollection headers!!, bool allowUnicode) { - if (headers == null) - throw new ArgumentNullException(nameof(headers)); - foreach (string key in headers) { string[] values = headers!.GetValues(key)!; diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpAuthenticationManager.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpAuthenticationManager.cs index e9550139b62861..d9b82ea30390df 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpAuthenticationManager.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpAuthenticationManager.cs @@ -18,11 +18,8 @@ static SmtpAuthenticationManager() Register(new SmtpLoginAuthenticationModule()); } - internal static void Register(ISmtpAuthenticationModule module) + internal static void Register(ISmtpAuthenticationModule module!!) { - if (module == null) - throw new ArgumentNullException(nameof(module)); - lock (s_modules) { s_modules.Add(module); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs index 71f0af271d14b2..769d973d397810 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpClient.cs @@ -413,7 +413,7 @@ public void Send(string from, string recipients, string? subject, string? body) Send(mailMessage); } - public void Send(MailMessage message) + public void Send(MailMessage message!!) { ObjectDisposedException.ThrowIf(_disposed, this); @@ -430,11 +430,6 @@ public void Send(MailMessage message) throw new InvalidOperationException(SR.net_inasync); } - if (message == null) - { - throw new ArgumentNullException(nameof(message)); - } - if (DeliveryMethod == SmtpDeliveryMethod.Network) CheckHostAndPort(); @@ -563,7 +558,6 @@ public void SendAsync(MailMessage message, object? userToken) { ObjectDisposedException.ThrowIf(_disposed, this); - try { if (InCall) @@ -571,10 +565,7 @@ public void SendAsync(MailMessage message, object? userToken) throw new InvalidOperationException(SR.net_inasync); } - if (message == null) - { - throw new ArgumentNullException(nameof(message)); - } + ArgumentNullException.ThrowIfNull(message); if (DeliveryMethod == SmtpDeliveryMethod.Network) CheckHostAndPort(); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpFailedRecipientsException.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpFailedRecipientsException.cs index 8307087837400f..a9f115a72e1e9c 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpFailedRecipientsException.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpFailedRecipientsException.cs @@ -34,28 +34,17 @@ protected SmtpFailedRecipientsException(SerializationInfo info, StreamingContext _innerExceptions = (SmtpFailedRecipientException[])info.GetValue("innerExceptions", typeof(SmtpFailedRecipientException[]))!; } - public SmtpFailedRecipientsException(string? message, SmtpFailedRecipientException[] innerExceptions) : - base(message, innerExceptions != null && innerExceptions.Length > 0 ? innerExceptions[0].FailedRecipient : null, - innerExceptions != null && innerExceptions.Length > 0 ? innerExceptions[0] : null) + public SmtpFailedRecipientsException(string? message, SmtpFailedRecipientException[] innerExceptions!!) : + base(message, innerExceptions.Length > 0 ? innerExceptions[0].FailedRecipient : null, innerExceptions.Length > 0 ? innerExceptions[0] : null) { - if (innerExceptions == null) - { - throw new ArgumentNullException(nameof(innerExceptions)); - } - _innerExceptions = innerExceptions == null ? Array.Empty() : innerExceptions; } - internal SmtpFailedRecipientsException(List innerExceptions, bool allFailed) : + internal SmtpFailedRecipientsException(List innerExceptions!!, bool allFailed) : base(allFailed ? SR.SmtpAllRecipientsFailed : SR.SmtpRecipientFailed, - innerExceptions != null && innerExceptions.Count > 0 ? innerExceptions[0].FailedRecipient : null, - innerExceptions != null && innerExceptions.Count > 0 ? innerExceptions[0] : null) + innerExceptions.Count > 0 ? innerExceptions[0].FailedRecipient : null, + innerExceptions.Count > 0 ? innerExceptions[0] : null) { - if (innerExceptions == null) - { - throw new ArgumentNullException(nameof(innerExceptions)); - } - _innerExceptions = innerExceptions.ToArray(); } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs index 623bff7d5755d1..529a385e2a7b04 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/SmtpTransport.cs @@ -29,15 +29,9 @@ internal SmtpTransport(SmtpClient client) : this(client, SmtpAuthenticationManag { } - internal SmtpTransport(SmtpClient client, ISmtpAuthenticationModule[] authenticationModules) + internal SmtpTransport(SmtpClient client, ISmtpAuthenticationModule[] authenticationModules!!) { _client = client; - - if (authenticationModules == null) - { - throw new ArgumentNullException(nameof(authenticationModules)); - } - _authenticationModules = authenticationModules; } @@ -150,19 +144,9 @@ internal void EndGetConnection(IAsyncResult result) _connection!.EndGetConnection(result); } - internal IAsyncResult BeginSendMail(MailAddress sender, MailAddressCollection recipients, + internal IAsyncResult BeginSendMail(MailAddress sender!!, MailAddressCollection recipients!!, string deliveryNotify, bool allowUnicode, AsyncCallback? callback, object? state) { - if (sender == null) - { - throw new ArgumentNullException(nameof(sender)); - } - - if (recipients == null) - { - throw new ArgumentNullException(nameof(recipients)); - } - SendMailAsyncResult result = new SendMailAsyncResult(_connection!, sender, recipients, allowUnicode, _connection!.DSNEnabled ? deliveryNotify : null, callback, state); @@ -201,19 +185,9 @@ internal MailWriter EndSendMail(IAsyncResult result) } } - internal MailWriter SendMail(MailAddress sender, MailAddressCollection recipients, string deliveryNotify, + internal MailWriter SendMail(MailAddress sender!!, MailAddressCollection recipients!!, string deliveryNotify, bool allowUnicode, out SmtpFailedRecipientException? exception) { - if (sender == null) - { - throw new ArgumentNullException(nameof(sender)); - } - - if (recipients == null) - { - throw new ArgumentNullException(nameof(recipients)); - } - MailCommand.Send(_connection!, SmtpCommands.Mail, sender, allowUnicode); _failedRecipientExceptions.Clear(); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mime/BaseWriter.cs b/src/libraries/System.Net.Mail/src/System/Net/Mime/BaseWriter.cs index 1b7ace1d86e9fd..04193f45d7c6e8 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mime/BaseWriter.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mime/BaseWriter.cs @@ -26,13 +26,8 @@ internal abstract class BaseWriter protected Stream _contentStream = null!; // set to null on dispose protected bool _isInContent; - protected BaseWriter(Stream stream, bool shouldEncodeLeadingDots) + protected BaseWriter(Stream stream!!, bool shouldEncodeLeadingDots) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - _stream = stream; _shouldEncodeLeadingDots = shouldEncodeLeadingDots; _onCloseHandler = new EventHandler(OnClose); @@ -44,16 +39,8 @@ protected BaseWriter(Stream stream, bool shouldEncodeLeadingDots) internal abstract void WriteHeaders(NameValueCollection headers, bool allowUnicode); - internal void WriteHeader(string name, string value, bool allowUnicode) + internal void WriteHeader(string name!!, string value!!, bool allowUnicode) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (_isInContent) { throw new InvalidOperationException(SR.MailWriterIsInContent); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mime/ContentDisposition.cs b/src/libraries/System.Net.Mail/src/System/Net/Mime/ContentDisposition.cs index 028e9456ce3d1e..a9deebd85519a3 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mime/ContentDisposition.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mime/ContentDisposition.cs @@ -54,12 +54,8 @@ public ContentDisposition() // no need to parse disposition since there's nothing to parse } - public ContentDisposition(string disposition) + public ContentDisposition(string disposition!!) { - if (disposition == null) - { - throw new ArgumentNullException(nameof(disposition)); - } _isChanged = true; _disposition = disposition; ParseValue(); diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeBasePart.cs b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeBasePart.cs index be3092fa306299..e3c1c36c4d6b3c 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeBasePart.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeBasePart.cs @@ -109,13 +109,8 @@ internal static string DecodeHeaderValue(string? value) return Encoding.GetEncoding(charSet); } - internal static bool IsAscii(string value, bool permitCROrLF) + internal static bool IsAscii(string value!!, bool permitCROrLF) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - foreach (char c in value) { if (c > 0x7f) @@ -192,10 +187,7 @@ internal ContentType ContentType get { return _contentType ??= new ContentType(); } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _contentType = value; _contentType.PersistIfNeeded((HeaderCollection)Headers, true); @@ -225,13 +217,8 @@ internal virtual IAsyncResult BeginSend(BaseWriter writer, AsyncCallback? callba throw new NotImplementedException(); } - internal void EndSend(IAsyncResult asyncResult) + internal void EndSend(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - LazyAsyncResult? castedAsyncResult = asyncResult as MimePartAsyncResult; if (castedAsyncResult == null || castedAsyncResult.AsyncObject != this) diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimePart.cs b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimePart.cs index 84fe52f5f48b9a..81de2524732243 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimePart.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimePart.cs @@ -101,13 +101,8 @@ internal TransferEncoding TransferEncoding } } - internal void SetContent(Stream stream) + internal void SetContent(Stream stream!!) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - if (_streamSet) { _stream!.Close(); @@ -119,13 +114,8 @@ internal void SetContent(Stream stream) TransferEncoding = TransferEncoding.Base64; } - internal void SetContent(Stream stream, string? name, string? mimeType) + internal void SetContent(Stream stream!!, string? name, string? mimeType) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - if (mimeType != null && mimeType != string.Empty) { _contentType = new ContentType(mimeType); @@ -137,12 +127,8 @@ internal void SetContent(Stream stream, string? name, string? mimeType) SetContent(stream); } - internal void SetContent(Stream stream, ContentType? contentType) + internal void SetContent(Stream stream!!, ContentType? contentType) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } _contentType = contentType; SetContent(stream); } diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeWriter.cs b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeWriter.cs index 8439cfa8f48f47..19b444795cdc05 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeWriter.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mime/MimeWriter.cs @@ -19,20 +19,14 @@ internal sealed class MimeWriter : BaseWriter private readonly byte[] _boundaryBytes; private bool _writeBoundary = true; - internal MimeWriter(Stream stream, string boundary) + internal MimeWriter(Stream stream, string boundary!!) : base(stream, false) // Unnecessary, the underlying MailWriter stream already encodes dots { - if (boundary == null) - throw new ArgumentNullException(nameof(boundary)); - _boundaryBytes = Encoding.ASCII.GetBytes(boundary); } - internal override void WriteHeaders(NameValueCollection headers, bool allowUnicode) + internal override void WriteHeaders(NameValueCollection headers!!, bool allowUnicode) { - if (headers == null) - throw new ArgumentNullException(nameof(headers)); - foreach (string key in headers) WriteHeader(key, headers[key]!, allowUnicode); } diff --git a/src/libraries/System.Net.Mail/tests/Unit/System.Net.Mail.Unit.Tests.csproj b/src/libraries/System.Net.Mail/tests/Unit/System.Net.Mail.Unit.Tests.csproj index 07166801690678..400d614c0dfa5c 100644 --- a/src/libraries/System.Net.Mail/tests/Unit/System.Net.Mail.Unit.Tests.csproj +++ b/src/libraries/System.Net.Mail/tests/Unit/System.Net.Mail.Unit.Tests.csproj @@ -112,6 +112,8 @@ Link="ProductionCode\MailHeaderInfo.cs" /> + - - + /// /// An instance that contains the address information about the host specified in . /// - public static IPHostEntry GetHostEntry(string hostNameOrAddress, AddressFamily family) + public static IPHostEntry GetHostEntry(string hostNameOrAddress!!, AddressFamily family) { - if (hostNameOrAddress is null) - { - throw new ArgumentNullException(nameof(hostNameOrAddress)); - } - // See if it's an IP Address. IPHostEntry ipHostEntry; if (IPAddress.TryParse(hostNameOrAddress, out IPAddress? address)) @@ -153,13 +143,8 @@ public static Task GetHostEntryAsync(string hostNameOrAddress, Addr } } - public static Task GetHostEntryAsync(IPAddress address) + public static Task GetHostEntryAsync(IPAddress address!!) { - if (address is null) - { - throw new ArgumentNullException(nameof(address)); - } - if (address.Equals(IPAddress.Any) || address.Equals(IPAddress.IPv6Any)) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(address, $"Invalid address '{address}'"); @@ -179,8 +164,8 @@ public static IAsyncResult BeginGetHostEntry(IPAddress address, AsyncCallback? r public static IAsyncResult BeginGetHostEntry(string hostNameOrAddress, AsyncCallback? requestCallback, object? stateObject) => TaskToApm.Begin(GetHostEntryAsync(hostNameOrAddress), requestCallback, stateObject); - public static IPHostEntry EndGetHostEntry(IAsyncResult asyncResult) => - TaskToApm.End(asyncResult ?? throw new ArgumentNullException(nameof(asyncResult))); + public static IPHostEntry EndGetHostEntry(IAsyncResult asyncResult!!) => + TaskToApm.End(asyncResult); public static IPAddress[] GetHostAddresses(string hostNameOrAddress) => GetHostAddresses(hostNameOrAddress, AddressFamily.Unspecified); @@ -193,13 +178,8 @@ public static IPAddress[] GetHostAddresses(string hostNameOrAddress) /// /// An array of type that holds the IP addresses for the host that is specified by the parameter. /// - public static IPAddress[] GetHostAddresses(string hostNameOrAddress, AddressFamily family) + public static IPAddress[] GetHostAddresses(string hostNameOrAddress!!, AddressFamily family) { - if (hostNameOrAddress is null) - { - throw new ArgumentNullException(nameof(hostNameOrAddress)); - } - // See if it's an IP Address. IPAddress[] addresses; if (IPAddress.TryParse(hostNameOrAddress, out IPAddress? address)) @@ -252,17 +232,12 @@ public static Task GetHostAddressesAsync(string hostNameOrAddress, public static IAsyncResult BeginGetHostAddresses(string hostNameOrAddress, AsyncCallback? requestCallback, object? state) => TaskToApm.Begin(GetHostAddressesAsync(hostNameOrAddress), requestCallback, state); - public static IPAddress[] EndGetHostAddresses(IAsyncResult asyncResult) => - TaskToApm.End(asyncResult ?? throw new ArgumentNullException(nameof(asyncResult))); + public static IPAddress[] EndGetHostAddresses(IAsyncResult asyncResult!!) => + TaskToApm.End(asyncResult); [Obsolete("GetHostByName has been deprecated. Use GetHostEntry instead.")] - public static IPHostEntry GetHostByName(string hostName) + public static IPHostEntry GetHostByName(string hostName!!) { - if (hostName is null) - { - throw new ArgumentNullException(nameof(hostName)); - } - if (IPAddress.TryParse(hostName, out IPAddress? address)) { return CreateHostEntryForAddress(address); @@ -276,17 +251,12 @@ public static IAsyncResult BeginGetHostByName(string hostName, AsyncCallback? re TaskToApm.Begin(GetHostEntryCoreAsync(hostName, justReturnParsedIp: true, throwOnIIPAny: true, AddressFamily.Unspecified, CancellationToken.None), requestCallback, stateObject); [Obsolete("EndGetHostByName has been deprecated. Use EndGetHostEntry instead.")] - public static IPHostEntry EndGetHostByName(IAsyncResult asyncResult) => - TaskToApm.End(asyncResult ?? throw new ArgumentNullException(nameof(asyncResult))); + public static IPHostEntry EndGetHostByName(IAsyncResult asyncResult!!) => + TaskToApm.End(asyncResult); [Obsolete("GetHostByAddress has been deprecated. Use GetHostEntry instead.")] - public static IPHostEntry GetHostByAddress(string address) + public static IPHostEntry GetHostByAddress(string address!!) { - if (address is null) - { - throw new ArgumentNullException(nameof(address)); - } - IPHostEntry ipHostEntry = GetHostEntryCore(IPAddress.Parse(address), AddressFamily.Unspecified); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(address, ipHostEntry); @@ -294,13 +264,8 @@ public static IPHostEntry GetHostByAddress(string address) } [Obsolete("GetHostByAddress has been deprecated. Use GetHostEntry instead.")] - public static IPHostEntry GetHostByAddress(IPAddress address) + public static IPHostEntry GetHostByAddress(IPAddress address!!) { - if (address is null) - { - throw new ArgumentNullException(nameof(address)); - } - IPHostEntry ipHostEntry = GetHostEntryCore(address, AddressFamily.Unspecified); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(address, ipHostEntry); @@ -308,13 +273,8 @@ public static IPHostEntry GetHostByAddress(IPAddress address) } [Obsolete("Resolve has been deprecated. Use GetHostEntry instead.")] - public static IPHostEntry Resolve(string hostName) + public static IPHostEntry Resolve(string hostName!!) { - if (hostName is null) - { - throw new ArgumentNullException(nameof(hostName)); - } - // See if it's an IP Address. IPHostEntry ipHostEntry; if (IPAddress.TryParse(hostName, out IPAddress? address) && @@ -509,13 +469,8 @@ private static Task GetHostEntryCoreAsync(string hostName, bool jus (Task)GetHostEntryOrAddressesCoreAsync(hostName, justReturnParsedIp, throwOnIIPAny, justAddresses: false, family, cancellationToken); // If hostName is an IPString and justReturnParsedIP==true then no reverse lookup will be attempted, but the original address is returned. - private static Task GetHostEntryOrAddressesCoreAsync(string hostName, bool justReturnParsedIp, bool throwOnIIPAny, bool justAddresses, AddressFamily family, CancellationToken cancellationToken) + private static Task GetHostEntryOrAddressesCoreAsync(string hostName!!, bool justReturnParsedIp, bool throwOnIIPAny, bool justAddresses, AddressFamily family, CancellationToken cancellationToken) { - if (hostName is null) - { - throw new ArgumentNullException(nameof(hostName)); - } - if (cancellationToken.IsCancellationRequested) { return justAddresses ? (Task) diff --git a/src/libraries/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj b/src/libraries/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj index 13a17550284e0d..66bcfce21b428a 100644 --- a/src/libraries/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj +++ b/src/libraries/System.Net.NetworkInformation/src/System.Net.NetworkInformation.csproj @@ -44,6 +44,8 @@ + diff --git a/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/SystemIcmpV6Statistics.cs b/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/SystemIcmpV6Statistics.cs index 778a925afc5a5c..4bca899f3afb05 100644 --- a/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/SystemIcmpV6Statistics.cs +++ b/src/libraries/System.Net.NetworkInformation/src/System/Net/NetworkInformation/SystemIcmpV6Statistics.cs @@ -24,7 +24,7 @@ internal enum IcmpV6StatType } // ICMP statistics for Ipv6. - internal sealed class SystemIcmpV6Statistics : IcmpV6Statistics + internal sealed unsafe class SystemIcmpV6Statistics : IcmpV6Statistics { private readonly Interop.IpHlpApi.MibIcmpInfoEx _stats; diff --git a/src/libraries/System.Net.Ping/src/System.Net.Ping.csproj b/src/libraries/System.Net.Ping/src/System.Net.Ping.csproj index 63e45d7e1cbd8e..206fe170799c15 100644 --- a/src/libraries/System.Net.Ping/src/System.Net.Ping.csproj +++ b/src/libraries/System.Net.Ping/src/System.Net.Ping.csproj @@ -16,6 +16,9 @@ + + diff --git a/src/libraries/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs b/src/libraries/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs index 51bde54c68e3a1..125f793c98c962 100644 --- a/src/libraries/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs +++ b/src/libraries/System.Net.Ping/src/System/Net/NetworkInformation/Ping.cs @@ -42,10 +42,7 @@ public Ping() private void CheckArgs(int timeout, byte[] buffer, PingOptions? options) { CheckDisposed(); - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (buffer.Length > MaxBufferSize) { @@ -62,10 +59,7 @@ private void CheckArgs(IPAddress address, int timeout, byte[] buffer, PingOption { CheckArgs(timeout, buffer, options); - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } + ArgumentNullException.ThrowIfNull(address); // Check if address family is installed. TestIsIpSupported(address); diff --git a/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs b/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs index 57a0a33c44609a..f0c049f8575367 100644 --- a/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs +++ b/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs @@ -45,10 +45,10 @@ public PingTest(ITestOutputHelper output) private void PingResultValidator(PingReply pingReply, IPAddress localIpAddress) { - PingResultValidator(pingReply, new IPAddress[] { localIpAddress }, _output); + PingResultValidator(pingReply, new IPAddress[] { localIpAddress }, _output); } - private void PingResultValidator(PingReply pingReply, IPAddress[] localIpAddresses) => PingResultValidator(pingReply, localIpAddresses, null); + private void PingResultValidator(PingReply pingReply, IPAddress[] localIpAddresses) => PingResultValidator(pingReply, localIpAddresses, null); private static void PingResultValidator(PingReply pingReply, IPAddress[] localIpAddresses, ITestOutputHelper output) { @@ -78,9 +78,10 @@ private static byte[] GetPingPayload(AddressFamily addressFamily) ? TestSettings.PayloadAsBytes : Array.Empty(); - public static bool DoesNotUsePingUtility => !UsesPingUtility; - - public static bool UsesPingUtility => OperatingSystem.IsLinux() && !Capability.CanUseRawSockets(TestSettings.GetLocalIPAddress().AddressFamily); + public static bool DoesNotUsePingUtility => OperatingSystem.IsWindows() || + OperatingSystem.IsMacOS() || OperatingSystem.IsMacCatalyst() || OperatingSystem.IsWatchOS() || OperatingSystem.IsIOS() || OperatingSystem.IsTvOS() || + Capability.CanUseRawSockets(TestSettings.GetLocalIPAddress().AddressFamily); + public static bool UsesPingUtility => !DoesNotUsePingUtility; [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))] public async Task SendPingAsync_InvalidArgs() @@ -395,6 +396,7 @@ await SendBatchPingAsync( } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64963", TestPlatforms.OSX)] public void SendPingWithHostAndTimeoutAndBuffer() { IPAddress localIpAddress = TestSettings.GetLocalIPAddress(); @@ -410,6 +412,7 @@ public void SendPingWithHostAndTimeoutAndBuffer() } [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64963", TestPlatforms.OSX)] public async Task SendPingAsyncWithHostAndTimeoutAndBuffer() { IPAddress localIpAddress = await TestSettings.GetLocalIPAddressAsync(); @@ -425,6 +428,7 @@ await SendBatchPingAsync( } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64963", TestPlatforms.OSX)] public void SendPingWithHostAndTimeoutAndBufferAndPingOptions() { IPAddress localIpAddress = TestSettings.GetLocalIPAddress(); @@ -440,6 +444,7 @@ public void SendPingWithHostAndTimeoutAndBufferAndPingOptions() } [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64963", TestPlatforms.OSX)] public async Task SendPingAsyncWithHostAndTimeoutAndBufferAndPingOptions() { IPAddress localIpAddress = await TestSettings.GetLocalIPAddressAsync(); @@ -649,7 +654,7 @@ public async Task SendPingAsyncWithHostAndTtlAndFragmentPingOptions(bool fragmen byte[] buffer = GetPingPayload(localIpAddresses[0].AddressFamily); - PingOptions options = new PingOptions(); + PingOptions options = new PingOptions(); options.Ttl = 32; options.DontFragment = fragment; @@ -670,10 +675,12 @@ public async Task SendPingToExternalHostWithLowTtlTest() PingOptions options = new PingOptions(); bool reachable = false; + byte[] payload = UsesPingUtility ? Array.Empty() : TestSettings.PayloadAsBytesShort; + Ping ping = new Ping(); for (int i = 0; i < s_pingcount; i++) { - pingReply = await ping.SendPingAsync(host, TestSettings.PingTimeout, TestSettings.PayloadAsBytesShort); + pingReply = await ping.SendPingAsync(host, TestSettings.PingTimeout, payload); if (pingReply.Status == IPStatus.Success) { reachable = true; @@ -687,7 +694,7 @@ public async Task SendPingToExternalHostWithLowTtlTest() options.Ttl = 1; // This should always fail unless host is one IP hop away. - pingReply = await ping.SendPingAsync(host, TestSettings.PingTimeout, TestSettings.PayloadAsBytesShort, options); + pingReply = await ping.SendPingAsync(host, TestSettings.PingTimeout, payload, options); Assert.True(pingReply.Status == IPStatus.TimeExceeded || pingReply.Status == IPStatus.TtlExpired); Assert.NotEqual(IPAddress.Any, pingReply.Address); } @@ -757,7 +764,7 @@ public void SendPingWithIPAddressAndTimeoutAndBufferAndPingOptions_ElevatedUnix( _output.WriteLine($"pinging '{localIpAddress}'"); - RemoteExecutor.Invoke(address => + RemoteExecutor.Invoke(address => { byte[] buffer = TestSettings.PayloadAsBytes; SendBatchPing( diff --git a/src/libraries/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj b/src/libraries/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj index 52825142299cd6..b141b5ed3aab1d 100644 --- a/src/libraries/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj +++ b/src/libraries/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj @@ -15,6 +15,9 @@ + + diff --git a/src/libraries/System.Net.Primitives/src/System/Net/CookieCollection.cs b/src/libraries/System.Net.Primitives/src/System/Net/CookieCollection.cs index edfe5ce52551ae..ae305f43ff052b 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/CookieCollection.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/CookieCollection.cs @@ -65,12 +65,8 @@ private void OnSerializing(StreamingContext context) m_version = m_list.Count; } - public void Add(Cookie cookie) + public void Add(Cookie cookie!!) { - if (cookie == null) - { - throw new ArgumentNullException(nameof(cookie)); - } int idx = IndexOf(cookie); if (idx == -1) { @@ -82,12 +78,8 @@ public void Add(Cookie cookie) } } - public void Add(CookieCollection cookies) + public void Add(CookieCollection cookies!!) { - if (cookies == null) - { - throw new ArgumentNullException(nameof(cookies)); - } foreach (Cookie? cookie in cookies.m_list) { Add(cookie!); diff --git a/src/libraries/System.Net.Primitives/src/System/Net/CookieContainer.cs b/src/libraries/System.Net.Primitives/src/System/Net/CookieContainer.cs index 68229958f88a72..1a3c86649d5744 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/CookieContainer.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/CookieContainer.cs @@ -216,13 +216,8 @@ public int PerDomainCapacity } // This method will construct a faked URI: the Domain property is required for param. - public void Add(Cookie cookie) + public void Add(Cookie cookie!!) { - if (cookie == null) - { - throw new ArgumentNullException(nameof(cookie)); - } - if (cookie.Domain.Length == 0) { throw new ArgumentException( @@ -580,12 +575,8 @@ private int ExpireCollection(CookieCollection cc) } } - public void Add(CookieCollection cookies) + public void Add(CookieCollection cookies!!) { - if (cookies == null) - { - throw new ArgumentNullException(nameof(cookies)); - } foreach (Cookie c in (ICollection)cookies) { Add(c); @@ -660,33 +651,17 @@ internal bool IsLocalDomain(string host) return false; } - public void Add(Uri uri, Cookie cookie) + public void Add(Uri uri!!, Cookie cookie!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (cookie == null) - { - throw new ArgumentNullException(nameof(cookie)); - } + Cookie new_cookie = cookie.Clone(); new_cookie.VerifySetDefaults(new_cookie.Variant, uri, IsLocalDomain(uri.Host), m_fqdnMyDomain, true, true); Add(new_cookie, true); } - public void Add(Uri uri, CookieCollection cookies) + public void Add(Uri uri!!, CookieCollection cookies!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (cookies == null) - { - throw new ArgumentNullException(nameof(cookies)); - } - bool isLocalDomain = IsLocalDomain(uri.Host); foreach (Cookie c in cookies) { @@ -778,12 +753,8 @@ internal CookieCollection CookieCutter(Uri uri, string? headerName, string setCo return cookies; } - public CookieCollection GetCookies(Uri uri) + public CookieCollection GetCookies(Uri uri!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } return InternalGetCookies(uri) ?? new CookieCollection(); } @@ -1014,13 +985,8 @@ private void MergeUpdateCollections(ref CookieCollection? destination, CookieCol } } - public string GetCookieHeader(Uri uri) + public string GetCookieHeader(Uri uri!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - return GetCookieHeader(uri, out _); } @@ -1053,16 +1019,9 @@ internal string GetCookieHeader(Uri uri, out string optCookie2) return StringBuilderCache.GetStringAndRelease(builder); } - public void SetCookies(Uri uri, string cookieHeader) + public void SetCookies(Uri uri!!, string cookieHeader!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (cookieHeader == null) - { - throw new ArgumentNullException(nameof(cookieHeader)); - } + CookieCutter(uri, null, cookieHeader, true); // Will throw on error } } diff --git a/src/libraries/System.Net.Primitives/src/System/Net/CredentialCache.cs b/src/libraries/System.Net.Primitives/src/System/Net/CredentialCache.cs index d12a7b9d0751b3..af7f89cce55abd 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/CredentialCache.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/CredentialCache.cs @@ -21,17 +21,8 @@ public CredentialCache() { } - public void Add(Uri uriPrefix, string authType, NetworkCredential cred) + public void Add(Uri uriPrefix!!, string authType!!, NetworkCredential cred) { - if (uriPrefix == null) - { - throw new ArgumentNullException(nameof(uriPrefix)); - } - if (authType == null) - { - throw new ArgumentNullException(nameof(authType)); - } - if ((cred is SystemNetworkCredential) && !((string.Equals(authType, NegotiationInfoClass.NTLM, StringComparison.OrdinalIgnoreCase)) || (string.Equals(authType, NegotiationInfoClass.Kerberos, StringComparison.OrdinalIgnoreCase)) @@ -141,17 +132,8 @@ public void Remove(string? host, int port, string? authenticationType) _cacheForHosts.Remove(key); } - public NetworkCredential? GetCredential(Uri uriPrefix, string authType) + public NetworkCredential? GetCredential(Uri uriPrefix!!, string authType!!) { - if (uriPrefix == null) - { - throw new ArgumentNullException(nameof(uriPrefix)); - } - if (authType == null) - { - throw new ArgumentNullException(nameof(authType)); - } - if (_cache == null) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, "CredentialCache::GetCredential short-circuiting because the dictionary is null."); diff --git a/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs b/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs index 44784173f25dd7..1fbefb9da962ab 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs @@ -117,8 +117,8 @@ public IPAddress(long newAddress) /// Constructor for an IPv6 Address with a specified Scope. /// /// - public IPAddress(byte[] address, long scopeid) : - this(new ReadOnlySpan(address ?? ThrowAddressNullException()), scopeid) + public IPAddress(byte[] address!!, long scopeid) : + this(new ReadOnlySpan(address), scopeid) { } @@ -175,8 +175,8 @@ private IPAddress(ushort[] numbers, uint scopeid) /// Constructor for IPv4 and IPv6 Address. /// /// - public IPAddress(byte[] address) : - this(new ReadOnlySpan(address ?? ThrowAddressNullException())) + public IPAddress(byte[] address!!) : + this(new ReadOnlySpan(address)) { } @@ -231,13 +231,8 @@ public static bool TryParse(ReadOnlySpan ipSpan, [NotNullWhen(true)] out I return (address != null); } - public static IPAddress Parse(string ipString) + public static IPAddress Parse(string ipString!!) { - if (ipString == null) - { - throw new ArgumentNullException(nameof(ipString)); - } - return IPAddressParser.Parse(ipString.AsSpan(), tryParse: false)!; } @@ -414,13 +409,8 @@ public static short NetworkToHostOrder(short network) return HostToNetworkOrder(network); } - public static bool IsLoopback(IPAddress address) + public static bool IsLoopback(IPAddress address!!) { - if (address == null) - { - ThrowAddressNullException(); - } - if (address.IsIPv6) { // Do Equals test for IPv6 addresses @@ -639,9 +629,6 @@ public IPAddress MapToIPv4() return new IPAddress((uint)HostToNetworkOrder(unchecked((int)address))); } - [DoesNotReturn] - private static byte[] ThrowAddressNullException() => throw new ArgumentNullException("address"); - private sealed class ReadOnlyIPAddress : IPAddress { public ReadOnlyIPAddress(ReadOnlySpan newAddress) : base(newAddress) diff --git a/src/libraries/System.Net.Primitives/src/System/Net/IPEndPoint.cs b/src/libraries/System.Net.Primitives/src/System/Net/IPEndPoint.cs index f5d7637fc1e999..04bdfec675b967 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/IPEndPoint.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/IPEndPoint.cs @@ -44,12 +44,8 @@ public IPEndPoint(long address, int port) /// /// Creates a new instance of the IPEndPoint class with the specified address and port. /// - public IPEndPoint(IPAddress address, int port) + public IPEndPoint(IPAddress address!!, int port) { - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -65,7 +61,11 @@ public IPEndPoint(IPAddress address, int port) public IPAddress Address { get => _address; - set => _address = value ?? throw new ArgumentNullException(nameof(value)); + set + { + ArgumentNullException.ThrowIfNull(value); + _address = value; + } } /// @@ -125,13 +125,8 @@ public static bool TryParse(ReadOnlySpan s, [NotNullWhen(true)] out IPEndP return false; } - public static IPEndPoint Parse(string s) + public static IPEndPoint Parse(string s!!) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } - return Parse(s.AsSpan()); } @@ -153,12 +148,8 @@ public override string ToString() public override SocketAddress Serialize() => new SocketAddress(Address, Port); - public override EndPoint Create(SocketAddress socketAddress) + public override EndPoint Create(SocketAddress socketAddress!!) { - if (socketAddress == null) - { - throw new ArgumentNullException(nameof(socketAddress)); - } if (socketAddress.Family != AddressFamily) { throw new ArgumentException(SR.Format(SR.net_InvalidAddressFamily, socketAddress.Family.ToString(), GetType().FullName, AddressFamily.ToString()), nameof(socketAddress)); diff --git a/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj b/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj index 8069716509de41..31e565288099df 100644 --- a/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj +++ b/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj @@ -27,6 +27,9 @@ + + Common\DisableRuntimeMarshalling.cs + @@ -104,7 +107,7 @@ diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockConnection.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockConnection.cs index 902cc8f9ddf77a..5ccb653f7b9938 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockConnection.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockConnection.cs @@ -48,13 +48,8 @@ internal long? ConnectionError internal override X509Certificate? RemoteCertificate => null; // Constructor for outbound connections - internal MockConnection(EndPoint? remoteEndPoint, SslClientAuthenticationOptions? sslClientAuthenticationOptions, IPEndPoint? localEndPoint = null, int maxUnidirectionalStreams = 100, int maxBidirectionalStreams = 100) + internal MockConnection(EndPoint remoteEndPoint!!, SslClientAuthenticationOptions? sslClientAuthenticationOptions, IPEndPoint? localEndPoint = null, int maxUnidirectionalStreams = 100, int maxBidirectionalStreams = 100) { - if (remoteEndPoint is null) - { - throw new ArgumentNullException(nameof(remoteEndPoint)); - } - IPEndPoint ipEndPoint = GetIPEndPoint(remoteEndPoint); if (ipEndPoint.Address != IPAddress.Loopback) { diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockImplementationProvider.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockImplementationProvider.cs index a46b1691bed6e8..d43fad609913d2 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockImplementationProvider.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockImplementationProvider.cs @@ -16,7 +16,7 @@ internal override QuicListenerProvider CreateListener(QuicListenerOptions option internal override QuicConnectionProvider CreateConnection(QuicClientConnectionOptions options) { - return new MockConnection(options.RemoteEndPoint, + return new MockConnection(options.RemoteEndPoint!, options.ClientAuthenticationOptions, options.LocalEndPoint, options.MaxUnidirectionalStreams, diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/Interop/MsQuicTraceHelper.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/Interop/MsQuicTraceHelper.cs index 33ef7b948c9b61..cd7b4ba9a64f07 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/Interop/MsQuicTraceHelper.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/Interop/MsQuicTraceHelper.cs @@ -27,4 +27,4 @@ private static string GetIntPtrHex(SafeHandle handle) return handle.DangerousGetHandle().ToString("X11"); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicConnection.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicConnection.cs index 66e594c34fca56..421ce00f13a1c2 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicConnection.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicConnection.cs @@ -172,10 +172,7 @@ public MsQuicConnection(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, MsQ // constructor for outbound connections public MsQuicConnection(QuicClientConnectionOptions options) { - if (options.RemoteEndPoint == null) - { - throw new ArgumentNullException(nameof(options.RemoteEndPoint)); - } + ArgumentNullException.ThrowIfNull(options.RemoteEndPoint, nameof(options.RemoteEndPoint)); _remoteEndPoint = options.RemoteEndPoint; _configuration = SafeMsQuicConfigurationHandle.Create(options); diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicListener.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicListener.cs index 7eaf052bfb4d9b..aadd9f1e247582 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicListener.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/MsQuicListener.cs @@ -81,10 +81,7 @@ public State(QuicListenerOptions options) internal MsQuicListener(QuicListenerOptions options) { - if (options.ListenEndPoint == null) - { - throw new ArgumentNullException(nameof(options.ListenEndPoint)); - } + ArgumentNullException.ThrowIfNull(options.ListenEndPoint, nameof(options.ListenEndPoint)); _state = new State(options); _stateHandle = GCHandle.Alloc(_state); diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/ThrowHelper.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/ThrowHelper.cs index bc8379d62587d1..b64cda77b355dd 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/ThrowHelper.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/MsQuic/ThrowHelper.cs @@ -23,4 +23,4 @@ internal static Exception GetStreamAbortedException(long errorCode) }; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/MsQuicTests.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/MsQuicTests.cs index 18d8b909af07de..be36ad9c39fda2 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/MsQuicTests.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/MsQuicTests.cs @@ -105,6 +105,7 @@ public async Task ConnectWithCertificateChain() } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64944", TestPlatforms.Windows)] public async Task UntrustedClientCertificateFails() { var listenerOptions = new QuicListenerOptions(); @@ -332,6 +333,7 @@ public async Task ConnectWithCertificateForLoopbackIP_IndicatesExpectedError(str [Theory] [InlineData(true)] // [InlineData(false)] [ActiveIssue("https://github.com/dotnet/runtime/issues/57308")] + [ActiveIssue("https://github.com/dotnet/runtime/issues/64944", TestPlatforms.Windows)] public async Task ConnectWithClientCertificate(bool sendCerttificate) { bool clientCertificateOK = false; diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs index 7bf38b0812980b..39e6be421905a3 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs @@ -167,6 +167,7 @@ internal QuicListener CreateQuicListener(IPEndPoint endpoint) if (retry == 0) { Debug.Fail($"ConnectAsync to {clientConnection.RemoteEndPoint} failed with {ex.Message}"); + throw ex; } } } diff --git a/src/libraries/System.Net.Requests/src/System/Net/AuthenticationManager.cs b/src/libraries/System.Net.Requests/src/System/Net/AuthenticationManager.cs index 5c014043519138..dc25c363e4a0f0 100644 --- a/src/libraries/System.Net.Requests/src/System/Net/AuthenticationManager.cs +++ b/src/libraries/System.Net.Requests/src/System/Net/AuthenticationManager.cs @@ -22,28 +22,16 @@ private AuthenticationManager() { } public static Authorization? PreAuthenticate(WebRequest request, ICredentials credentials) => throw new PlatformNotSupportedException(); - public static void Register(IAuthenticationModule authenticationModule) + public static void Register(IAuthenticationModule authenticationModule!!) { - if (authenticationModule is null) - { - throw new ArgumentNullException(nameof(authenticationModule)); - } } - public static void Unregister(IAuthenticationModule authenticationModule) + public static void Unregister(IAuthenticationModule authenticationModule!!) { - if (authenticationModule is null) - { - throw new ArgumentNullException(nameof(authenticationModule)); - } } - public static void Unregister(string authenticationScheme) + public static void Unregister(string authenticationScheme!!) { - if (authenticationScheme is null) - { - throw new ArgumentNullException(nameof(authenticationScheme)); - } } public static IEnumerator RegisteredModules => Array.Empty().GetEnumerator(); diff --git a/src/libraries/System.Net.Requests/src/System/Net/FtpWebRequest.cs b/src/libraries/System.Net.Requests/src/System/Net/FtpWebRequest.cs index b0f8f6a7fb6c3a..dbc99ae0a295c9 100644 --- a/src/libraries/System.Net.Requests/src/System/Net/FtpWebRequest.cs +++ b/src/libraries/System.Net.Requests/src/System/Net/FtpWebRequest.cs @@ -325,10 +325,7 @@ public override ICredentials? Credentials { throw new InvalidOperationException(SR.net_reqsubmitted); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value == CredentialCache.DefaultNetworkCredentials) { throw new ArgumentException(SR.net_ftp_no_defaultcreds, nameof(value)); @@ -686,15 +683,11 @@ public override IAsyncResult BeginGetResponse(AsyncCallback? callback, object? s /// /// Returns result of query for the Response of an FTP request [async version] /// - public override WebResponse EndGetResponse(IAsyncResult asyncResult) + public override WebResponse EndGetResponse(IAsyncResult asyncResult!!) { try { // parameter validation - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } LazyAsyncResult? castedAsyncResult = asyncResult as LazyAsyncResult; if (castedAsyncResult == null) { @@ -810,16 +803,11 @@ public override IAsyncResult BeginGetRequestStream(AsyncCallback? callback, obje return asyncResult; } - public override Stream EndGetRequestStream(IAsyncResult asyncResult) + public override Stream EndGetRequestStream(IAsyncResult asyncResult!!) { Stream? requestStream; try { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - LazyAsyncResult? castedAsyncResult = asyncResult as LazyAsyncResult; if (castedAsyncResult == null) @@ -1561,10 +1549,7 @@ public X509CertificateCollection ClientCertificates } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _clientCertificates = value; } } diff --git a/src/libraries/System.Net.Requests/src/System/Net/HttpWebRequest.cs b/src/libraries/System.Net.Requests/src/System/Net/HttpWebRequest.cs index c92ea9f28d5d24..733646d4de2062 100644 --- a/src/libraries/System.Net.Requests/src/System/Net/HttpWebRequest.cs +++ b/src/libraries/System.Net.Requests/src/System/Net/HttpWebRequest.cs @@ -361,10 +361,7 @@ public string Host { throw new InvalidOperationException(SR.net_writestarted); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); Uri? hostUri; if ((value.Contains('/')) || (!TryGetHostUri(value, out hostUri))) @@ -784,7 +781,11 @@ public HttpContinueDelegate? ContinueDelegate public X509CertificateCollection ClientCertificates { get => _clientCertificates ??= new X509CertificateCollection(); - set => _clientCertificates = value ?? throw new ArgumentNullException(nameof(value)); + set + { + ArgumentNullException.ThrowIfNull(value); + _clientCertificates = value; + } } // HTTP Version @@ -1427,16 +1428,8 @@ public void AddRange(string rangeSpecifier, int from, int to) AddRange(rangeSpecifier, (long)from, (long)to); } - public void AddRange(string rangeSpecifier, long from, long to) + public void AddRange(string rangeSpecifier!!, long from, long to) { - // - // Do some range checking before assembling the header - // - - if (rangeSpecifier == null) - { - throw new ArgumentNullException(nameof(rangeSpecifier)); - } if ((from < 0) || (to < 0)) { throw new ArgumentOutOfRangeException(from < 0 ? nameof(from) : nameof(to), SR.net_rangetoosmall); @@ -1460,12 +1453,8 @@ public void AddRange(string rangeSpecifier, int range) AddRange(rangeSpecifier, (long)range); } - public void AddRange(string rangeSpecifier, long range) + public void AddRange(string rangeSpecifier!!, long range) { - if (rangeSpecifier == null) - { - throw new ArgumentNullException(nameof(rangeSpecifier)); - } if (!HttpValidationHelpers.IsValidToken(rangeSpecifier)) { throw new ArgumentException(SR.net_nottoken, nameof(rangeSpecifier)); diff --git a/src/libraries/System.Net.Requests/src/System/Net/WebRequest.cs b/src/libraries/System.Net.Requests/src/System/Net/WebRequest.cs index 0614718c2b95ce..bd9df29bfaa250 100644 --- a/src/libraries/System.Net.Requests/src/System/Net/WebRequest.cs +++ b/src/libraries/System.Net.Requests/src/System/Net/WebRequest.cs @@ -143,13 +143,8 @@ private static WebRequest Create(Uri requestUri, bool useUriBase) // Returns: // Newly created WebRequest. [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static WebRequest Create(string requestUriString) + public static WebRequest Create(string requestUriString!!) { - if (requestUriString == null) - { - throw new ArgumentNullException(nameof(requestUriString)); - } - return Create(new Uri(requestUriString), false); } @@ -164,13 +159,8 @@ public static WebRequest Create(string requestUriString) // Returns: // Newly created WebRequest. [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static WebRequest Create(Uri requestUri) + public static WebRequest Create(Uri requestUri!!) { - if (requestUri == null) - { - throw new ArgumentNullException(nameof(requestUri)); - } - return Create(requestUri, false); } @@ -186,33 +176,20 @@ public static WebRequest Create(Uri requestUri) // Returns: // Newly created WebRequest. [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static WebRequest CreateDefault(Uri requestUri) + public static WebRequest CreateDefault(Uri requestUri!!) { - if (requestUri == null) - { - throw new ArgumentNullException(nameof(requestUri)); - } - return Create(requestUri, true); } [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static HttpWebRequest CreateHttp(string requestUriString) + public static HttpWebRequest CreateHttp(string requestUriString!!) { - if (requestUriString == null) - { - throw new ArgumentNullException(nameof(requestUriString)); - } return CreateHttp(new Uri(requestUriString)); } [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static HttpWebRequest CreateHttp(Uri requestUri) + public static HttpWebRequest CreateHttp(Uri requestUri!!) { - if (requestUri == null) - { - throw new ArgumentNullException(nameof(requestUri)); - } if ((requestUri.Scheme != "http") && (requestUri.Scheme != "https")) { throw new NotSupportedException(SR.net_unknown_prefix); @@ -237,21 +214,12 @@ public static HttpWebRequest CreateHttp(Uri requestUri) // // Returns: // True if the registration worked, false otherwise. - public static bool RegisterPrefix(string prefix, IWebRequestCreate creator) + public static bool RegisterPrefix(string prefix!!, IWebRequestCreate creator!!) { bool Error = false; int i; WebRequestPrefixElement Current; - if (prefix == null) - { - throw new ArgumentNullException(nameof(prefix)); - } - if (creator == null) - { - throw new ArgumentNullException(nameof(creator)); - } - // Lock this object, then walk down PrefixList looking for a place to // to insert this prefix. lock (s_internalSyncObject) diff --git a/src/libraries/System.Net.Security/src/System.Net.Security.csproj b/src/libraries/System.Net.Security/src/System.Net.Security.csproj index d665d21b9ba06f..a71d01bc0b7943 100644 --- a/src/libraries/System.Net.Security/src/System.Net.Security.csproj +++ b/src/libraries/System.Net.Security/src/System.Net.Security.csproj @@ -52,6 +52,9 @@ + + @@ -62,10 +65,8 @@ - - + Common\System\Net\ArrayBuffer.cs diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/CipherSuitesPolicy.cs b/src/libraries/System.Net.Security/src/System/Net/Security/CipherSuitesPolicy.cs index b077c9856dc7a7..d5a7477870cbac 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/CipherSuitesPolicy.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/CipherSuitesPolicy.cs @@ -13,13 +13,8 @@ public sealed partial class CipherSuitesPolicy internal CipherSuitesPolicyPal Pal { get; private set; } [CLSCompliant(false)] - public CipherSuitesPolicy(IEnumerable allowedCipherSuites) + public CipherSuitesPolicy(IEnumerable allowedCipherSuites!!) { - if (allowedCipherSuites == null) - { - throw new ArgumentNullException(nameof(allowedCipherSuites)); - } - Pal = new CipherSuitesPolicyPal(allowedCipherSuites); } diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/NegotiateStream.cs b/src/libraries/System.Net.Security/src/System/Net/Security/NegotiateStream.cs index 63fa927bf6fdbb..03be81907a3bc5 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/NegotiateStream.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/NegotiateStream.cs @@ -602,15 +602,8 @@ private void ValidateCreateContext( throw new InvalidOperationException(SR.net_auth_reauth); } - if (credential == null) - { - throw new ArgumentNullException(nameof(credential)); - } - - if (servicePrincipalName == null) - { - throw new ArgumentNullException(nameof(servicePrincipalName)); - } + ArgumentNullException.ThrowIfNull(credential); + ArgumentNullException.ThrowIfNull(servicePrincipalName); NegotiateStreamPal.ValidateImpersonationLevel(impersonationLevel); if (_context != null && IsServer != isServer) diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/SecureChannel.cs b/src/libraries/System.Net.Security/src/System/Net/Security/SecureChannel.cs index e3363ddc1c34a2..c9b67dda132ca8 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/SecureChannel.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/SecureChannel.cs @@ -17,9 +17,6 @@ namespace System.Net.Security // Provides an additional abstraction layer over SSPI for SslStream. internal sealed class SecureChannel { - // When reading a frame from the wire first read this many bytes for the header. - internal const int ReadHeaderSize = 5; - private SafeFreeCredentials? _credentialsHandle; private SafeDeleteSslContext? _securityContext; diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/SslApplicationProtocol.cs b/src/libraries/System.Net.Security/src/System/Net/Security/SslApplicationProtocol.cs index f218ce2875128f..6ab268953ad55a 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/SslApplicationProtocol.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/SslApplicationProtocol.cs @@ -39,13 +39,13 @@ internal SslApplicationProtocol(byte[] protocol, bool copy) protocol; } - public SslApplicationProtocol(byte[] protocol) : - this(protocol ?? throw new ArgumentNullException(nameof(protocol)), copy: true) + public SslApplicationProtocol(byte[] protocol!!) : + this(protocol, copy: true) { } - public SslApplicationProtocol(string protocol) : - this(s_utf8.GetBytes(protocol ?? throw new ArgumentNullException(nameof(protocol))), copy: false) + public SslApplicationProtocol(string protocol!!) : + this(s_utf8.GetBytes(protocol), copy: false) { } diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Implementation.cs b/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Implementation.cs index 58156e3d76a94d..57f0718b20f8b9 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Implementation.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.Implementation.cs @@ -26,12 +26,6 @@ public partial class SslStream private object _handshakeLock => _sslAuthenticationOptions!; private volatile TaskCompletionSource? _handshakeWaiter; - // FrameOverhead = 5 byte header + HMAC trailer + padding (if block cipher) - // HMAC: 32 bytes for SHA-256 or 20 bytes for SHA-1 or 16 bytes for the MD5 - private const int FrameOverhead = 64; - private const int ReadBufferSize = 4096 * 4 + FrameOverhead; // We read in 16K chunks + headers. - private const int InitialHandshakeBufferSize = 4096 + FrameOverhead; // try to fit at least 4K ServerCertificate - private ArrayBuffer _handshakeBuffer; private bool _receivedEOF; // Used by Telemetry to ensure we log connection close exactly once @@ -54,10 +48,7 @@ private void ValidateCreateContext(SslClientAuthenticationOptions sslClientAuthe throw new InvalidOperationException(SR.net_auth_client_server); } - if (sslClientAuthenticationOptions.TargetHost == null) - { - throw new ArgumentNullException(nameof(sslClientAuthenticationOptions.TargetHost)); - } + ArgumentNullException.ThrowIfNull(sslClientAuthenticationOptions.TargetHost, nameof(sslClientAuthenticationOptions.TargetHost)); _exception = null; try @@ -130,19 +121,12 @@ private void CloseInternal() // subsequent Reads first check if the context is still available. if (Interlocked.CompareExchange(ref _nestedRead, 1, 0) == 0) { - byte[]? buffer = _internalBuffer; - if (buffer != null) - { - _internalBuffer = null; - _internalBufferCount = 0; - _internalOffset = 0; - ArrayPool.Shared.Return(buffer); - } + _buffer.ReturnBuffer(); } - if (_internalBuffer == null) + if (!_buffer.IsValid) { - // Suppress finalizer if the read buffer was returned. + // Suppress finalizer since the read buffer was returned. GC.SuppressFinalize(this); } @@ -258,7 +242,7 @@ private async Task RenegotiateAsync(TIOAdapter adapter) try { - if ((_decryptedBytesCount | _internalBufferCount) != 0) + if (_buffer.ActiveLength > 0) { throw new InvalidOperationException(SR.net_ssl_renegotiate_buffer); } @@ -286,7 +270,8 @@ private async Task RenegotiateAsync(TIOAdapter adapter) throw SslStreamPal.GetException(status); } - _handshakeBuffer = new ArrayBuffer(InitialHandshakeBufferSize); + _buffer.EnsureAvailableSpace(InitialHandshakeBufferSize); + ProtocolToken message = null!; do { message = await ReceiveBlobAsync(adapter).ConfigureAwait(false); @@ -297,18 +282,15 @@ private async Task RenegotiateAsync(TIOAdapter adapter) } } while (message.Status.ErrorCode == SecurityStatusPalErrorCode.ContinueNeeded); - if (_handshakeBuffer.ActiveLength > 0) - { - // If we read more than we needed for handshake, move it to input buffer for further processing. - ResetReadBuffer(); - _handshakeBuffer.ActiveSpan.CopyTo(_internalBuffer); - _internalBufferCount = _handshakeBuffer.ActiveLength; - } - CompleteHandshake(_sslAuthenticationOptions!); } finally { + if (_buffer.ActiveLength == 0) + { + _buffer.ReturnBuffer(); + } + _nestedRead = 0; _nestedWrite = 0; _isRenego = false; @@ -360,8 +342,7 @@ private async Task ForceAuthenticationAsync(TIOAdapter adapter, bool if (!handshakeCompleted) { - // get ready to receive first frame - _handshakeBuffer = new ArrayBuffer(InitialHandshakeBufferSize); + _buffer.EnsureAvailableSpace(InitialHandshakeBufferSize); } while (!handshakeCompleted) @@ -412,19 +393,10 @@ private async Task ForceAuthenticationAsync(TIOAdapter adapter, bool } } - if (_handshakeBuffer.ActiveLength > 0) - { - // If we read more than we needed for handshake, move it to input buffer for further processing. - ResetReadBuffer(); - _handshakeBuffer.ActiveSpan.CopyTo(_internalBuffer); - _internalBufferCount = _handshakeBuffer.ActiveLength; - } - CompleteHandshake(_sslAuthenticationOptions!); } finally { - _handshakeBuffer.Dispose(); if (reAuthenticationData == null) { _nestedAuth = 0; @@ -447,34 +419,25 @@ private async Task ForceAuthenticationAsync(TIOAdapter adapter, bool private async ValueTask ReceiveBlobAsync(TIOAdapter adapter) where TIOAdapter : IReadWriteAdapter { - await FillHandshakeBufferAsync(adapter, SecureChannel.ReadHeaderSize).ConfigureAwait(false); - TlsFrameHelper.TryGetFrameHeader(_handshakeBuffer.ActiveReadOnlySpan, ref _lastFrame.Header); + int frameSize = await EnsureFullTlsFrameAsync(adapter).ConfigureAwait(false); - if (_lastFrame.Header.Length < 0) + if (frameSize == 0) { - if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, "invalid TLS frame size"); - throw new AuthenticationException(SR.net_frame_read_size); - } - - // Header length is content only so we must add header size as well. - int frameSize = _lastFrame.Header.Length + TlsFrameHelper.HeaderSize; - - if (_handshakeBuffer.ActiveLength < frameSize) - { - await FillHandshakeBufferAsync(adapter, frameSize).ConfigureAwait(false); + // We expect to receive at least one frame + throw new IOException(SR.net_io_eof); } // At this point, we have at least one TLS frame. switch (_lastFrame.Header.Type) { case TlsContentType.Alert: - if (TlsFrameHelper.TryGetFrameInfo(_handshakeBuffer.ActiveReadOnlySpan, ref _lastFrame)) + if (TlsFrameHelper.TryGetFrameInfo(_buffer.EncryptedReadOnlySpan, ref _lastFrame)) { if (NetEventSource.Log.IsEnabled() && _lastFrame.AlertDescription != TlsAlertDescription.CloseNotify) NetEventSource.Error(this, $"Received TLS alert {_lastFrame.AlertDescription}"); } break; case TlsContentType.Handshake: - if (!_isRenego && _handshakeBuffer.ActiveReadOnlySpan[TlsFrameHelper.HeaderSize] == (byte)TlsHandshakeType.ClientHello && + if (!_isRenego && _buffer.EncryptedReadOnlySpan[TlsFrameHelper.HeaderSize] == (byte)TlsHandshakeType.ClientHello && _sslAuthenticationOptions!.IsServer) // guard against malicious endpoints. We should not see ClientHello on client. { TlsFrameHelper.ProcessingOptions options = NetEventSource.Log.IsEnabled() ? @@ -482,7 +445,7 @@ private async ValueTask ReceiveBlobAsync(TIOAdapter a TlsFrameHelper.ProcessingOptions.ServerName; // Process SNI from Client Hello message - if (!TlsFrameHelper.TryGetFrameInfo(_handshakeBuffer.ActiveReadOnlySpan, ref _lastFrame, options)) + if (!TlsFrameHelper.TryGetFrameInfo(_buffer.EncryptedReadOnlySpan, ref _lastFrame, options)) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, $"Failed to parse TLS hello."); } @@ -528,31 +491,33 @@ private ProtocolToken ProcessBlob(int frameSize) { int chunkSize = frameSize; - ReadOnlySpan availableData = _handshakeBuffer.ActiveReadOnlySpan; - // Discard() does not touch data, it just increases start index so next - // ActiveSpan will exclude the "discarded" data. - _handshakeBuffer.Discard(frameSize); + ReadOnlySpan availableData = _buffer.EncryptedReadOnlySpan; + // DiscardEncrypted() does not touch data, it just increases start index so next + // EncryptedSpan will exclude the "discarded" data. + _buffer.DiscardEncrypted(frameSize); // Often more TLS messages fit into same packet. Get as many complete frames as we can. - while (_handshakeBuffer.ActiveLength > TlsFrameHelper.HeaderSize) + while (_buffer.EncryptedLength > TlsFrameHelper.HeaderSize) { TlsFrameHeader nextHeader = default; - if (!TlsFrameHelper.TryGetFrameHeader(_handshakeBuffer.ActiveReadOnlySpan, ref nextHeader)) + if (!TlsFrameHelper.TryGetFrameHeader(_buffer.EncryptedReadOnlySpan, ref nextHeader)) { break; } frameSize = nextHeader.Length + TlsFrameHelper.HeaderSize; - // Can process more handshake frames in single step, but we should avoid processing too much so as to preserve API boundary between handshake and I/O. - if ((nextHeader.Type != TlsContentType.Handshake && nextHeader.Type != TlsContentType.ChangeCipherSpec) || frameSize > _handshakeBuffer.ActiveLength) + + // Can process more handshake frames in single step or during TLS1.3 post-handshake auth, but we should + // avoid processing too much so as to preserve API boundary between handshake and I/O. + if ((nextHeader.Type != TlsContentType.Handshake && nextHeader.Type != TlsContentType.ChangeCipherSpec) && !_isRenego || frameSize > _buffer.EncryptedLength) { // We don't have full frame left or we already have app data which needs to be processed by decrypt. break; } chunkSize += frameSize; - _handshakeBuffer.Discard(frameSize); + _buffer.DiscardEncrypted(frameSize); } return _context!.NextMessage(availableData.Slice(0, chunkSize)); @@ -751,34 +716,24 @@ async ValueTask CompleteWriteAsync(ValueTask writeTask, byte[] bufferToReturn) Dispose(disposing: false); } - // We will only free the read buffer if it - // actually contains no decrypted or encrypted bytes private void ReturnReadBufferIfEmpty() { - if (_internalBuffer is byte[] internalBuffer && _decryptedBytesCount == 0 && _internalBufferCount == 0) + if (_buffer.ActiveLength == 0) { - _internalBuffer = null; - _internalOffset = 0; - _decryptedBytesOffset = 0; - ArrayPool.Shared.Return(internalBuffer); - } - else if (_decryptedBytesCount == 0) - { - _decryptedBytesOffset = 0; + _buffer.ReturnBuffer(); } } - private bool HaveFullTlsFrame(out int frameSize) { - if (_internalBufferCount < SecureChannel.ReadHeaderSize) + if (_buffer.EncryptedLength < TlsFrameHelper.HeaderSize) { frameSize = int.MaxValue; return false; } - frameSize = GetFrameSize(_internalBuffer.AsSpan(_internalOffset)); - return _internalBufferCount >= frameSize; + frameSize = GetFrameSize(_buffer.EncryptedReadOnlySpan); + return _buffer.EncryptedLength >= frameSize; } @@ -791,19 +746,16 @@ private async ValueTask EnsureFullTlsFrameAsync(TIOAdapter adap return frameSize; } - // We may have enough space to complete frame, but we may still do extra IO if the frame is small. - // So we will attempt larger read - that is trade of with extra copy. - // This may be updated at some point based on size of existing chunk, rented buffer and size of 'buffer'. - ResetReadBuffer(); - - // _internalOffset is 0 after ResetReadBuffer and we use _internalBufferCount to determined where to read. - while (_internalBufferCount < frameSize) + while (_buffer.EncryptedLength < frameSize) { + // there should be space left to read into + Debug.Assert(_buffer.AvailableLength > 0, "_buffer.AvailableBytes > 0"); + // We either don't have full frame or we don't have enough data to even determine the size. - int bytesRead = await adapter.ReadAsync(_internalBuffer.AsMemory(_internalBufferCount)).ConfigureAwait(false); + int bytesRead = await adapter.ReadAsync(_buffer.AvailableMemory).ConfigureAwait(false); if (bytesRead == 0) { - if (_internalBufferCount != 0) + if (_buffer.EncryptedLength != 0) { // we got EOF in middle of TLS frame. Treat that as error. throw new IOException(SR.net_io_eof); @@ -812,11 +764,12 @@ private async ValueTask EnsureFullTlsFrameAsync(TIOAdapter adap return 0; } - _internalBufferCount += bytesRead; - if (frameSize == int.MaxValue && _internalBufferCount > SecureChannel.ReadHeaderSize) + _buffer.Commit(bytesRead); + if (frameSize == int.MaxValue && _buffer.EncryptedLength > TlsFrameHelper.HeaderSize) { // recalculate frame size if needed e.g. we could not get it before. - frameSize = GetFrameSize(_internalBuffer.AsSpan(_internalOffset)); + frameSize = GetFrameSize(_buffer.EncryptedReadOnlySpan); + _buffer.EnsureAvailableSpace(frameSize - _buffer.EncryptedLength); } } @@ -825,23 +778,15 @@ private async ValueTask EnsureFullTlsFrameAsync(TIOAdapter adap private SecurityStatusPal DecryptData(int frameSize) { - Debug.Assert(_decryptedBytesCount == 0); - - // Set _decryptedBytesOffset/Count to the current frame we have (including header) - // DecryptData will decrypt in-place and modify these to point to the actual decrypted data, which may be smaller. - _decryptedBytesOffset = _internalOffset; - _decryptedBytesCount = frameSize; SecurityStatusPal status; lock (_handshakeLock) { ThrowIfExceptionalOrNotAuthenticated(); - status = _context!.Decrypt(new Span(_internalBuffer, _internalOffset, frameSize), out int decryptedOffset, out int decryptedCount); - _decryptedBytesCount = decryptedCount; - if (decryptedCount > 0) - { - _decryptedBytesOffset = _internalOffset + decryptedOffset; - } + + // Decrypt will decrypt in-place and modify these to point to the actual decrypted data, which may be smaller. + status = _context!.Decrypt(_buffer.EncryptedSpanSliced(frameSize), out int decryptedOffset, out int decryptedCount); + _buffer.OnDecrypted(decryptedOffset, decryptedCount, frameSize); if (status.ErrorCode == SecurityStatusPalErrorCode.Renegotiate) { @@ -857,7 +802,6 @@ private SecurityStatusPal DecryptData(int frameSize) // If that happen before EncryptData() runs, _handshakeWaiter will be set to null // and EncryptData() will work normally e.g. no waiting, just exclusion with DecryptData() - if (_sslAuthenticationOptions!.AllowRenegotiation || SslProtocol == SslProtocols.Tls13 || _nestedAuth != 0) { // create TCS only if we plan to proceed. If not, we will throw later outside of the lock. @@ -869,9 +813,6 @@ private SecurityStatusPal DecryptData(int frameSize) } } - // Treat the bytes we just decrypted as consumed - ConsumeBufferedBytes(frameSize); - return status; } @@ -885,13 +826,12 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M ThrowIfExceptionalOrNotAuthenticated(); - Debug.Assert(_internalBuffer is null || _internalBufferCount > 0 || _decryptedBytesCount > 0, "_internalBuffer allocated when no data is buffered."); int processedLength = 0; int payloadBytes = 0; try { - if (_decryptedBytesCount != 0) + if (_buffer.DecryptedLength != 0) { processedLength = CopyDecryptedData(buffer); if (processedLength == buffer.Length || !HaveFullTlsFrame(out payloadBytes)) @@ -905,12 +845,12 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M if (_receivedEOF) { - Debug.Assert(_internalBufferCount == 0); + Debug.Assert(_buffer.EncryptedLength == 0); // We received EOF during previous read but had buffered data to return. return 0; } - if (buffer.Length == 0 && _internalBuffer is null) + if (buffer.Length == 0 && _buffer.ActiveLength == 0) { // User requested a zero-byte read, and we have no data available in the buffer for processing. // This zero-byte read indicates their desire to trade off the extra cost of a zero-byte read @@ -922,8 +862,9 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M await adapter.ReadAsync(Memory.Empty).ConfigureAwait(false); } - Debug.Assert(_decryptedBytesCount == 0); - Debug.Assert(_decryptedBytesOffset == 0); + Debug.Assert(_buffer.DecryptedLength == 0); + + _buffer.EnsureAvailableSpace(ReadBufferSize - _buffer.ActiveLength); while (true) { @@ -938,12 +879,12 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M if (status.ErrorCode != SecurityStatusPalErrorCode.OK) { byte[]? extraBuffer = null; - if (_decryptedBytesCount != 0) + if (_buffer.DecryptedLength != 0) { - extraBuffer = new byte[_decryptedBytesCount]; - Buffer.BlockCopy(_internalBuffer!, _decryptedBytesOffset, extraBuffer, 0, _decryptedBytesCount); + extraBuffer = new byte[_buffer.DecryptedLength]; + _buffer.DecryptedSpan.CopyTo(extraBuffer); - _decryptedBytesCount = 0; + _buffer.Discard(_buffer.DecryptedLength); } if (NetEventSource.Log.IsEnabled()) @@ -970,7 +911,7 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M throw new IOException(SR.net_io_decrypt, SslStreamPal.GetException(status)); } - if (_decryptedBytesCount > 0) + if (_buffer.DecryptedLength > 0) { // This will either copy data from rented buffer or adjust final buffer as needed. // In both cases _decryptedBytesOffset and _decryptedBytesCount will be updated as needed. @@ -997,7 +938,7 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M break; } - TlsFrameHelper.TryGetFrameHeader(_internalBuffer.AsSpan(_internalOffset), ref _lastFrame.Header); + TlsFrameHelper.TryGetFrameHeader(_buffer.EncryptedReadOnlySpan, ref _lastFrame.Header); if (_lastFrame.Header.Type != TlsContentType.AppData) { // Alerts, handshake and anything else will be processed separately. @@ -1024,59 +965,6 @@ private async ValueTask ReadAsyncInternal(TIOAdapter adapter, M } } - // This function tries to make sure buffer has at least minSize bytes available. - // If we have enough data, it returns synchronously. If not, it will try to read - // remaining bytes from given stream. It will throw if unable to fulfill minSize. - private ValueTask FillHandshakeBufferAsync(TIOAdapter adapter, int minSize) - where TIOAdapter : IReadWriteAdapter - { - if (_handshakeBuffer.ActiveLength >= minSize) - { - return ValueTask.CompletedTask; - } - - int bytesNeeded = minSize - _handshakeBuffer.ActiveLength; - _handshakeBuffer.EnsureAvailableSpace(bytesNeeded); - - while (_handshakeBuffer.ActiveLength < minSize) - { - ValueTask t = adapter.ReadAsync(_handshakeBuffer.AvailableMemory); - if (!t.IsCompletedSuccessfully) - { - return InternalFillHandshakeBufferAsync(adapter, t, minSize); - } - int bytesRead = t.Result; - if (bytesRead == 0) - { - throw new IOException(SR.net_io_eof); - } - - _handshakeBuffer.Commit(bytesRead); - } - - return ValueTask.CompletedTask; - - async ValueTask InternalFillHandshakeBufferAsync(TIOAdapter adap, ValueTask task, int minSize) - { - while (true) - { - int bytesRead = await task.ConfigureAwait(false); - if (bytesRead == 0) - { - throw new IOException(SR.net_io_eof); - } - - _handshakeBuffer.Commit(bytesRead); - if (_handshakeBuffer.ActiveLength >= minSize) - { - return; - } - - task = adap.ReadAsync(_handshakeBuffer.AvailableMemory); - } - } - } - private async ValueTask WriteAsyncInternal(TIOAdapter writeAdapter, ReadOnlyMemory buffer) where TIOAdapter : struct, IReadWriteAdapter { @@ -1115,69 +1003,35 @@ private async ValueTask WriteAsyncInternal(TIOAdapter writeAdapter, } } - private void ConsumeBufferedBytes(int byteCount) - { - Debug.Assert(byteCount >= 0); - Debug.Assert(byteCount <= _internalBufferCount); - - _internalOffset += byteCount; - _internalBufferCount -= byteCount; - if (_internalBufferCount == 0) - { - _internalOffset = 0; - } - } - private int CopyDecryptedData(Memory buffer) { - Debug.Assert(_decryptedBytesCount > 0); + Debug.Assert(_buffer.DecryptedLength > 0); - int copyBytes = Math.Min(_decryptedBytesCount, buffer.Length); + int copyBytes = Math.Min(_buffer.DecryptedLength, buffer.Length); if (copyBytes != 0) { - new ReadOnlySpan(_internalBuffer, _decryptedBytesOffset, copyBytes).CopyTo(buffer.Span); - - _decryptedBytesOffset += copyBytes; - _decryptedBytesCount -= copyBytes; - } - - if (_decryptedBytesCount == 0) - { - _decryptedBytesOffset = 0; + _buffer.DecryptedReadOnlySpanSliced(copyBytes).CopyTo(buffer.Span); + _buffer.Discard(copyBytes); } return copyBytes; } - private void ResetReadBuffer() - { - Debug.Assert(_decryptedBytesCount == 0); - - if (_internalBuffer == null) - { - _internalBuffer = ArrayPool.Shared.Rent(ReadBufferSize); - Debug.Assert(_internalOffset == 0); - Debug.Assert(_internalBufferCount == 0); - } - else if (_internalOffset > 0) - { - // We have buffered data at a non-zero offset. - // To maximize the buffer space available for the next read, - // copy the existing data down to the beginning of the buffer. - Buffer.BlockCopy(_internalBuffer, _internalOffset, _internalBuffer, 0, _internalBufferCount); - _internalOffset = 0; - } - } - // Returns TLS Frame size including header size. private int GetFrameSize(ReadOnlySpan buffer) { - if (buffer.Length < SecureChannel.ReadHeaderSize) + if (!TlsFrameHelper.TryGetFrameHeader(buffer, ref _lastFrame.Header)) { throw new IOException(SR.net_ssl_io_frame); } - return ((buffer[3] << 8) | buffer[4]) + SecureChannel.ReadHeaderSize; + if (_lastFrame.Header.Length < 0) + { + if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, "invalid TLS frame size"); + throw new AuthenticationException(SR.net_frame_read_size); + } + + return _lastFrame.Header.Length + TlsFrameHelper.HeaderSize; } } } diff --git a/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.cs b/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.cs index ad4398b2ab41b2..95acf46deea818 100644 --- a/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.cs +++ b/src/libraries/System.Net.Security/src/System/Net/Security/SslStream.cs @@ -57,12 +57,132 @@ public partial class SslStream : AuthenticatedStream private bool _shutdown; private bool _handshakeCompleted; - // Never updated directly, special properties are used. This is the read buffer. - internal byte[]? _internalBuffer; - internal int _internalOffset; - internal int _internalBufferCount; - internal int _decryptedBytesOffset; - internal int _decryptedBytesCount; + // FrameOverhead = 5 byte header + HMAC trailer + padding (if block cipher) + // HMAC: 32 bytes for SHA-256 or 20 bytes for SHA-1 or 16 bytes for the MD5 + private const int FrameOverhead = 64; + private const int InitialHandshakeBufferSize = 4096 + FrameOverhead; // try to fit at least 4K ServerCertificate + private const int ReadBufferSize = 4096 * 4 + FrameOverhead; // We read in 16K chunks + headers. + + private SslBuffer _buffer; + + // internal buffer for storing incoming data. Wrapper around ArrayBuffer which adds + // separation between decrypted and still encrypted part of the active region. + // - Encrypted: Contains incoming TLS frames, the last such frame may be incomplete + // - Decrypted: Contains decrypted data from *one* TLS frame which have not been read by the user yet. + private struct SslBuffer + { + private ArrayBuffer _buffer; + private int _decryptedLength; + + // padding between decrypted part of the active memory and following undecrypted TLS frame. + private int _decryptedPadding; + + private bool _isValid; + + public SslBuffer(int initialSize) + { + _buffer = new ArrayBuffer(initialSize, true); + _decryptedLength = 0; + _decryptedPadding = 0; + _isValid = true; + } + + public bool IsValid => _isValid; + + public Span DecryptedSpan => _buffer.ActiveSpan.Slice(0, _decryptedLength); + + public ReadOnlySpan DecryptedReadOnlySpanSliced(int length) + { + Debug.Assert(length <= DecryptedLength, "length <= DecryptedLength"); + return _buffer.ActiveSpan.Slice(0, length); + } + + public int DecryptedLength => _decryptedLength; + + public int ActiveLength => _buffer.ActiveLength; + + public Span EncryptedSpanSliced(int length) => _buffer.ActiveSpan.Slice(_decryptedLength + _decryptedPadding, length); + + public ReadOnlySpan EncryptedReadOnlySpan => _buffer.ActiveSpan.Slice(_decryptedLength + _decryptedPadding); + + public int EncryptedLength => _buffer.ActiveLength - _decryptedPadding - _decryptedLength; + + public Memory AvailableMemory => _buffer.AvailableMemory; + + public int AvailableLength => _buffer.AvailableLength; + + public int Capacity => _buffer.Capacity; + + public void Commit(int byteCount) => _buffer.Commit(byteCount); + + public void EnsureAvailableSpace(int byteCount) + { + if (_isValid) + { + _buffer.EnsureAvailableSpace(byteCount); + } + else + { + _isValid = true; + _buffer = new ArrayBuffer(byteCount, true); + } + } + + public void Discard(int byteCount) + { + Debug.Assert(byteCount <= _decryptedLength, "byteCount <= _decryptedBytes"); + + _buffer.Discard(byteCount); + _decryptedLength -= byteCount; + + // if drained all decrypted data, discard also the tail of the frame so that only + // encrypted part of the active memory of the _buffer remains + if (_decryptedLength == 0) + { + _buffer.Discard(_decryptedPadding); + _decryptedPadding = 0; + } + } + + public void DiscardEncrypted(int byteCount) + { + // should be called only during handshake -> no pending decrypted data + Debug.Assert(_decryptedLength == 0, "_decryptedBytes == 0"); + Debug.Assert(_decryptedPadding == 0, "_encryptedOffset == 0"); + + _buffer.Discard(byteCount); + } + + public void OnDecrypted(int decryptedOffset, int decryptedCount, int frameSize) + { + Debug.Assert(_decryptedLength == 0, "_decryptedBytes == 0"); + Debug.Assert(_decryptedPadding == 0, "_encryptedOffset == 0"); + + if (decryptedCount > 0) + { + // discard padding before decrypted contents + _buffer.Discard(decryptedOffset); + + _decryptedPadding = frameSize - decryptedOffset - decryptedCount; + _decryptedLength = decryptedCount; + } + else + { + // No user data available, discard entire frame + _buffer.Discard(frameSize); + } + } + + public void ReturnBuffer() + { + _buffer.Dispose(); + _decryptedLength = 0; + _decryptedPadding = 0; + _isValid = false; + } + } + + private int _nestedWrite; private int _nestedRead; @@ -152,13 +272,18 @@ private X509Certificate UserCertSelectionCallbackWrapper(string targetHost, X509 private SslAuthenticationOptions CreateAuthenticationOptions(SslServerAuthenticationOptions sslServerAuthenticationOptions) { - if (sslServerAuthenticationOptions.ServerCertificate == null && sslServerAuthenticationOptions.ServerCertificateContext == null && - sslServerAuthenticationOptions.ServerCertificateSelectionCallback == null && _certSelectionDelegate == null) + if (sslServerAuthenticationOptions.ServerCertificate == null && + sslServerAuthenticationOptions.ServerCertificateContext == null && + sslServerAuthenticationOptions.ServerCertificateSelectionCallback == null && + _certSelectionDelegate == null) { throw new ArgumentNullException(nameof(sslServerAuthenticationOptions.ServerCertificate)); } - if ((sslServerAuthenticationOptions.ServerCertificate != null || sslServerAuthenticationOptions.ServerCertificateContext != null || _certSelectionDelegate != null) && sslServerAuthenticationOptions.ServerCertificateSelectionCallback != null) + if ((sslServerAuthenticationOptions.ServerCertificate != null || + sslServerAuthenticationOptions.ServerCertificateContext != null || + _certSelectionDelegate != null) && + sslServerAuthenticationOptions.ServerCertificateSelectionCallback != null) { throw new InvalidOperationException(SR.Format(SR.net_conflicting_options, nameof(ServerCertificateSelectionCallback))); } @@ -282,13 +407,8 @@ public virtual void AuthenticateAsClient(string targetHost, X509CertificateColle AuthenticateAsClient(options); } - public void AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions) + public void AuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions!!) { - if (sslClientAuthenticationOptions == null) - { - throw new ArgumentNullException(nameof(sslClientAuthenticationOptions)); - } - SetAndVerifyValidationCallback(sslClientAuthenticationOptions.RemoteCertificateValidationCallback); SetAndVerifySelectionCallback(sslClientAuthenticationOptions.LocalCertificateSelectionCallback); @@ -320,13 +440,8 @@ public virtual void AuthenticateAsServer(X509Certificate serverCertificate, bool AuthenticateAsServer(options); } - public void AuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions) + public void AuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions!!) { - if (sslServerAuthenticationOptions == null) - { - throw new ArgumentNullException(nameof(sslServerAuthenticationOptions)); - } - SetAndVerifyValidationCallback(sslServerAuthenticationOptions.RemoteCertificateValidationCallback); ValidateCreateContext(CreateAuthenticationOptions(sslServerAuthenticationOptions)); @@ -353,13 +468,8 @@ public virtual Task AuthenticateAsClientAsync(string targetHost, X509Certificate return AuthenticateAsClientAsync(options); } - public Task AuthenticateAsClientAsync(SslClientAuthenticationOptions sslClientAuthenticationOptions, CancellationToken cancellationToken = default) + public Task AuthenticateAsClientAsync(SslClientAuthenticationOptions sslClientAuthenticationOptions!!, CancellationToken cancellationToken = default) { - if (sslClientAuthenticationOptions == null) - { - throw new ArgumentNullException(nameof(sslClientAuthenticationOptions)); - } - SetAndVerifyValidationCallback(sslClientAuthenticationOptions.RemoteCertificateValidationCallback); SetAndVerifySelectionCallback(sslClientAuthenticationOptions.LocalCertificateSelectionCallback); @@ -408,13 +518,8 @@ public virtual Task AuthenticateAsServerAsync(X509Certificate serverCertificate, return AuthenticateAsServerAsync(options); } - public Task AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken = default) + public Task AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions!!, CancellationToken cancellationToken = default) { - if (sslServerAuthenticationOptions == null) - { - throw new ArgumentNullException(nameof(sslServerAuthenticationOptions)); - } - SetAndVerifyValidationCallback(sslServerAuthenticationOptions.RemoteCertificateValidationCallback); ValidateCreateContext(CreateAuthenticationOptions(sslServerAuthenticationOptions)); @@ -735,10 +840,10 @@ public override int ReadByte() // If there's any data in the buffer, take one byte, and we're done. try { - if (_decryptedBytesCount > 0) + if (_buffer.DecryptedLength > 0) { - int b = _internalBuffer![_decryptedBytesOffset++]; - _decryptedBytesCount--; + int b = _buffer.DecryptedSpan[0]; + _buffer.Discard(1); ReturnReadBufferIfEmpty(); return b; } diff --git a/src/libraries/System.Net.Security/src/System/Net/StreamFramer.cs b/src/libraries/System.Net.Security/src/System/Net/StreamFramer.cs index 9d7f648d87205f..64da83709bc025 100644 --- a/src/libraries/System.Net.Security/src/System/Net/StreamFramer.cs +++ b/src/libraries/System.Net.Security/src/System/Net/StreamFramer.cs @@ -73,13 +73,8 @@ internal sealed class StreamFramer return buffer; } - public async Task WriteMessageAsync(TAdapter adapter, byte[] message) where TAdapter : IReadWriteAdapter + public async Task WriteMessageAsync(TAdapter adapter, byte[] message!!) where TAdapter : IReadWriteAdapter { - if (message == null) - { - throw new ArgumentNullException(nameof(message)); - } - _writeHeader.PayloadSize = message.Length; _writeHeader.CopyTo(_writeHeaderBuffer, 0); diff --git a/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ExtendedProtectionPolicy.cs b/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ExtendedProtectionPolicy.cs index 6a59d81957a4ab..7fcb88eda48737 100644 --- a/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ExtendedProtectionPolicy.cs +++ b/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ExtendedProtectionPolicy.cs @@ -53,11 +53,7 @@ public ExtendedProtectionPolicy(PolicyEnforcement policyEnforcement, { throw new ArgumentException(SR.security_ExtendedProtectionPolicy_UseDifferentConstructorForNever, nameof(policyEnforcement)); } - - if (customChannelBinding == null) - { - throw new ArgumentNullException(nameof(customChannelBinding)); - } + ArgumentNullException.ThrowIfNull(customChannelBinding); _policyEnforcement = policyEnforcement; _protectionScenario = ProtectionScenario.TransportSelected; diff --git a/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs b/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs index 88d8087c42c355..fcf018951d725c 100644 --- a/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs +++ b/src/libraries/System.Net.Security/src/System/Security/Authentication/ExtendedProtection/ServiceNameCollection.cs @@ -12,13 +12,8 @@ namespace System.Security.Authentication.ExtendedProtection { public class ServiceNameCollection : ReadOnlyCollectionBase { - public ServiceNameCollection(ICollection items) + public ServiceNameCollection(ICollection items!!) { - if (items == null) - { - throw new ArgumentNullException(nameof(items)); - } - // Normalize and filter for duplicates. AddIfNew(items, expectStrings: true); } diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs index 43022c6b531eb4..022a57c0ca2b89 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/CertificateValidationRemoteServer.cs @@ -17,7 +17,7 @@ namespace System.Net.Security.Tests public class CertificateValidationRemoteServer { [OuterLoop("Uses external servers")] - [ConditionalTheory] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.SupportsTls12))] // external server does not support TLS1.1 and below [InlineData(false)] [InlineData(true)] public async Task CertificateValidationRemoteServer_EndToEnd_Ok(bool useAsync) diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs index 1e01be34ca3ded..1a452e8f893093 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/ServerAsyncAuthenticateTest.cs @@ -423,7 +423,7 @@ private async Task ServerAsyncSslHelper( await clientAuthentication.WaitAsync(TestConfiguration.PassingTestTimeout); _logVerbose.WriteLine("ServerAsyncAuthenticateTest.clientAuthentication complete."); } - catch (Exception ex) + catch (AuthenticationException ex) { // Ignore client-side errors: we're only interested in server-side behavior. _log.WriteLine("Client exception : " + ex); diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamNetworkStreamTest.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamNetworkStreamTest.cs index aec32cd84a418a..44dbc87d84b265 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamNetworkStreamTest.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamNetworkStreamTest.cs @@ -472,9 +472,9 @@ await TestConfiguration.WhenAllOrAnyFailedWithTimeout( } [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.SupportsTls13))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/58927", TestPlatforms.Windows)] [InlineData(true)] [InlineData(false)] - [PlatformSpecific(TestPlatforms.Windows)] public async Task SslStream_NegotiateClientCertificateAsyncTls13_Succeeds(bool sendClientCertificate) { if (PlatformDetection.IsWindows10Version22000OrGreater) diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs index b05fbc6f53bc44..4db8e9c34ebd96 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs @@ -73,7 +73,7 @@ public static IEnumerable SslStream_StreamToStream_Authentication_Succ public async Task SslStream_StreamToStream_Authentication_Success(X509Certificate serverCert = null, X509Certificate clientCert = null) { - if (PlatformDetection.IsWindows10Version22000OrGreater) + if (PlatformDetection.IsWindows10Version20348OrGreater) { // [ActiveIssue("https://github.com/dotnet/runtime/issues/58927")] throw new SkipTestException("Unstable on Windows 11"); diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamSystemDefaultsTest.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamSystemDefaultsTest.cs index 8e6b2176f62cbc..9175833c8e4702 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamSystemDefaultsTest.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/SslStreamSystemDefaultsTest.cs @@ -76,7 +76,7 @@ public static IEnumerable OneOrBothUseDefaulData() [MemberData(nameof(OneOrBothUseDefaulData))] public async Task ClientAndServer_OneOrBothUseDefault_Ok(SslProtocols? clientProtocols, SslProtocols? serverProtocols) { - if (PlatformDetection.IsWindows10Version22000OrGreater) + if (PlatformDetection.IsWindows10Version20348OrGreater) { // [ActiveIssue("https://github.com/dotnet/runtime/issues/58927")] throw new SkipTestException("Unstable on Windows 11"); diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/TelemetryTest.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/TelemetryTest.cs index 48a9b61fa1fb01..67188c1c3bbf39 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/TelemetryTest.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/TelemetryTest.cs @@ -8,6 +8,7 @@ using System.Security.Authentication; using System.Threading.Tasks; using Microsoft.DotNet.RemoteExecutor; +using Microsoft.DotNet.XUnitExtensions; using Xunit; namespace System.Net.Security.Tests @@ -28,61 +29,69 @@ public static void EventSource_ExistsWithCorrectId() [OuterLoop] [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] + [SkipOnPlatform(TestPlatforms.iOS | TestPlatforms.tvOS, "X509 certificate store is not supported on iOS or tvOS.")] // Match SslStream_StreamToStream_Authentication_Success public static void EventSource_SuccessfulHandshake_LogsStartStop() { RemoteExecutor.Invoke(async () => { - using var listener = new TestEventListener("System.Net.Security", EventLevel.Verbose, eventCounterInterval: 0.1d); - listener.AddActivityTracking(); - - var events = new ConcurrentQueue<(EventWrittenEventArgs Event, Guid ActivityId)>(); - await listener.RunWithCallbackAsync(e => + try { - events.Enqueue((e, e.ActivityId)); + using var listener = new TestEventListener("System.Net.Security", EventLevel.Verbose, eventCounterInterval: 0.1d); + listener.AddActivityTracking(); - if (e.EventName == "HandshakeStart") + var events = new ConcurrentQueue<(EventWrittenEventArgs Event, Guid ActivityId)>(); + await listener.RunWithCallbackAsync(e => { - // Wait for a new counter group so that current-tls-handshakes is guaranteed a non-zero value - WaitForEventCountersAsync(events).GetAwaiter().GetResult(); - } - }, - async () => - { - // Invoke tests that'll cause some events to be generated - var test = new SslStreamStreamToStreamTest_Async(); - await test.SslStream_StreamToStream_Authentication_Success(); - await WaitForEventCountersAsync(events); - }); - Assert.DoesNotContain(events, ev => ev.Event.EventId == 0); // errors from the EventSource itself + events.Enqueue((e, e.ActivityId)); + + if (e.EventName == "HandshakeStart") + { + // Wait for a new counter group so that current-tls-handshakes is guaranteed a non-zero value + WaitForEventCountersAsync(events).GetAwaiter().GetResult(); + } + }, + async () => + { + // Invoke tests that'll cause some events to be generated + var test = new SslStreamStreamToStreamTest_Async(); + await test.SslStream_StreamToStream_Authentication_Success(); + await WaitForEventCountersAsync(events); + }); + Assert.DoesNotContain(events, ev => ev.Event.EventId == 0); // errors from the EventSource itself - (EventWrittenEventArgs Event, Guid ActivityId)[] starts = events.Where(e => e.Event.EventName == "HandshakeStart").ToArray(); - Assert.Equal(2, starts.Length); - Assert.All(starts, s => Assert.Equal(2, s.Event.Payload.Count)); - Assert.All(starts, s => Assert.NotEqual(Guid.Empty, s.ActivityId)); + (EventWrittenEventArgs Event, Guid ActivityId)[] starts = events.Where(e => e.Event.EventName == "HandshakeStart").ToArray(); + Assert.Equal(2, starts.Length); + Assert.All(starts, s => Assert.Equal(2, s.Event.Payload.Count)); + Assert.All(starts, s => Assert.NotEqual(Guid.Empty, s.ActivityId)); - // isServer - (EventWrittenEventArgs Event, Guid ActivityId) serverStart = Assert.Single(starts, s => (bool)s.Event.Payload[0]); - (EventWrittenEventArgs Event, Guid ActivityId) clientStart = Assert.Single(starts, s => !(bool)s.Event.Payload[0]); + // isServer + (EventWrittenEventArgs Event, Guid ActivityId) serverStart = Assert.Single(starts, s => (bool)s.Event.Payload[0]); + (EventWrittenEventArgs Event, Guid ActivityId) clientStart = Assert.Single(starts, s => !(bool)s.Event.Payload[0]); - // targetHost - Assert.Empty(Assert.IsType(serverStart.Event.Payload[1])); - Assert.NotEmpty(Assert.IsType(clientStart.Event.Payload[1])); + // targetHost + Assert.Empty(Assert.IsType(serverStart.Event.Payload[1])); + Assert.NotEmpty(Assert.IsType(clientStart.Event.Payload[1])); - Assert.NotEqual(serverStart.ActivityId, clientStart.ActivityId); + Assert.NotEqual(serverStart.ActivityId, clientStart.ActivityId); - (EventWrittenEventArgs Event, Guid ActivityId)[] stops = events.Where(e => e.Event.EventName == "HandshakeStop").ToArray(); - Assert.Equal(2, stops.Length); + (EventWrittenEventArgs Event, Guid ActivityId)[] stops = events.Where(e => e.Event.EventName == "HandshakeStop").ToArray(); + Assert.Equal(2, stops.Length); - EventWrittenEventArgs serverStop = Assert.Single(stops, s => s.ActivityId == serverStart.ActivityId).Event; - EventWrittenEventArgs clientStop = Assert.Single(stops, s => s.ActivityId == clientStart.ActivityId).Event; + EventWrittenEventArgs serverStop = Assert.Single(stops, s => s.ActivityId == serverStart.ActivityId).Event; + EventWrittenEventArgs clientStop = Assert.Single(stops, s => s.ActivityId == clientStart.ActivityId).Event; - SslProtocols serverProtocol = ValidateHandshakeStopEventPayload(serverStop); - SslProtocols clientProtocol = ValidateHandshakeStopEventPayload(clientStop); - Assert.Equal(serverProtocol, clientProtocol); + SslProtocols serverProtocol = ValidateHandshakeStopEventPayload(serverStop); + SslProtocols clientProtocol = ValidateHandshakeStopEventPayload(clientStop); + Assert.Equal(serverProtocol, clientProtocol); - Assert.DoesNotContain(events, e => e.Event.EventName == "HandshakeFailed"); + Assert.DoesNotContain(events, e => e.Event.EventName == "HandshakeFailed"); - VerifyEventCounters(events, shouldHaveFailures: false); + VerifyEventCounters(events, shouldHaveFailures: false); + } + catch (SkipTestException) + { + // Don't throw inside RemoteExecutor if SslStream_StreamToStream_Authentication_Success chose to skip the test + } }).Dispose(); } diff --git a/src/libraries/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs b/src/libraries/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs index 4b4dcaf9b6ae98..21e5385bdb9c28 100644 --- a/src/libraries/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs +++ b/src/libraries/System.Net.Security/tests/FunctionalTests/TestConfiguration.cs @@ -13,7 +13,7 @@ namespace System.Net.Security.Tests { internal static class TestConfiguration { - public const int PassingTestTimeoutMilliseconds = 4 * 60 * 1000; + public const int PassingTestTimeoutMilliseconds = 1 * 60 * 1000; public static TimeSpan PassingTestTimeout => TimeSpan.FromMilliseconds(PassingTestTimeoutMilliseconds); public const string Realm = "TEST.COREFX.NET"; diff --git a/src/libraries/System.Net.Security/tests/UnitTests/Fakes/FakeSslStream.Implementation.cs b/src/libraries/System.Net.Security/tests/UnitTests/Fakes/FakeSslStream.Implementation.cs index ae34301a26c2d4..9298542f607673 100644 --- a/src/libraries/System.Net.Security/tests/UnitTests/Fakes/FakeSslStream.Implementation.cs +++ b/src/libraries/System.Net.Security/tests/UnitTests/Fakes/FakeSslStream.Implementation.cs @@ -28,9 +28,6 @@ private void ValidateCreateContext(SslClientAuthenticationOptions sslClientAuthe } _context = null; _exception = null; - _internalBuffer = null; - _internalBufferCount = 0; - _internalOffset = 0; _nestedWrite = 0; _handshakeCompleted = false; } @@ -56,7 +53,7 @@ private void CloseInternal() // private Task ProcessAuthenticationAsync(bool isAsync = false, bool isApm = false, CancellationToken cancellationToken = default) { - return Task.Run(() => {}); + return Task.Run(() => { }); } private Task RenegotiateAsync(AsyncReadWriteAdapter adapter) => throw new PlatformNotSupportedException(); diff --git a/src/libraries/System.Net.Security/tests/UnitTests/System.Net.Security.Unit.Tests.csproj b/src/libraries/System.Net.Security/tests/UnitTests/System.Net.Security.Unit.Tests.csproj index 28b3f81b02b3d7..46056c9b64f285 100644 --- a/src/libraries/System.Net.Security/tests/UnitTests/System.Net.Security.Unit.Tests.csproj +++ b/src/libraries/System.Net.Security/tests/UnitTests/System.Net.Security.Unit.Tests.csproj @@ -79,5 +79,8 @@ Link="ProductionCode\Common\System\Net\Logging\NetEventSource.Common.cs" /> + + diff --git a/src/libraries/System.Net.ServicePoint/src/System/Net/ServicePointManager.cs b/src/libraries/System.Net.ServicePoint/src/System/Net/ServicePointManager.cs index eb278644472e5f..4d244976958777 100644 --- a/src/libraries/System.Net.ServicePoint/src/System/Net/ServicePointManager.cs +++ b/src/libraries/System.Net.ServicePoint/src/System/Net/ServicePointManager.cs @@ -113,13 +113,8 @@ public static int DnsRefreshTimeout public static ServicePoint FindServicePoint(string uriString, IWebProxy? proxy) => FindServicePoint(new Uri(uriString), proxy); [Obsolete(Obsoletions.WebRequestMessage, DiagnosticId = Obsoletions.WebRequestDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static ServicePoint FindServicePoint(Uri address, IWebProxy? proxy) + public static ServicePoint FindServicePoint(Uri address!!, IWebProxy? proxy) { - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } - // If there's a proxy for this address, get the "real" address. bool isProxyServicePoint = ProxyAddressIfNecessary(ref address, proxy); diff --git a/src/libraries/System.Net.Sockets/src/System.Net.Sockets.csproj b/src/libraries/System.Net.Sockets/src/System.Net.Sockets.csproj index 0a2f6aac79ea96..a437542c5ffe1f 100644 --- a/src/libraries/System.Net.Sockets/src/System.Net.Sockets.csproj +++ b/src/libraries/System.Net.Sockets/src/System.Net.Sockets.csproj @@ -44,6 +44,9 @@ + + diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/DynamicWinsockMethods.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/DynamicWinsockMethods.cs index 923277fbb82209..1cd0530a9d22dd 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/DynamicWinsockMethods.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/DynamicWinsockMethods.cs @@ -54,7 +54,7 @@ private DynamicWinsockMethods(AddressFamily addressFamily, SocketType socketType _protocolType = protocolType; } - private static T CreateDelegate([NotNull] ref T? cache, SafeSocketHandle socketHandle, string guidString) where T: Delegate + private static T CreateDelegate(Func functionPointerWrapper, [NotNull] ref T? cache, SafeSocketHandle socketHandle, string guidString) where T: Delegate { Guid guid = new Guid(guidString); IntPtr ptr; @@ -79,30 +79,243 @@ private static T CreateDelegate([NotNull] ref T? cache, SafeSocketHandle sock throw new SocketException(); } - Interlocked.CompareExchange(ref cache, Marshal.GetDelegateForFunctionPointer(ptr), null); + Interlocked.CompareExchange(ref cache, functionPointerWrapper(ptr), null); return cache; } - internal AcceptExDelegate GetAcceptExDelegate(SafeSocketHandle socketHandle) - => _acceptEx ?? CreateDelegate(ref _acceptEx, socketHandle, "b5367df1cbac11cf95ca00805f48a192"); + internal unsafe AcceptExDelegate GetAcceptExDelegate(SafeSocketHandle socketHandle) + => _acceptEx ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).AcceptEx, ref _acceptEx, socketHandle, "b5367df1cbac11cf95ca00805f48a192"); - internal GetAcceptExSockaddrsDelegate GetGetAcceptExSockaddrsDelegate(SafeSocketHandle socketHandle) - => _getAcceptExSockaddrs ?? CreateDelegate(ref _getAcceptExSockaddrs, socketHandle, "b5367df2cbac11cf95ca00805f48a192"); + internal unsafe GetAcceptExSockaddrsDelegate GetGetAcceptExSockaddrsDelegate(SafeSocketHandle socketHandle) + => _getAcceptExSockaddrs ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).GetAcceptExSockaddrs, ref _getAcceptExSockaddrs, socketHandle, "b5367df2cbac11cf95ca00805f48a192"); - internal ConnectExDelegate GetConnectExDelegate(SafeSocketHandle socketHandle) - => _connectEx ?? CreateDelegate(ref _connectEx, socketHandle, "25a207b9ddf346608ee976e58c74063e"); + internal unsafe ConnectExDelegate GetConnectExDelegate(SafeSocketHandle socketHandle) + => _connectEx ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).ConnectEx, ref _connectEx, socketHandle, "25a207b9ddf346608ee976e58c74063e"); - internal DisconnectExDelegate GetDisconnectExDelegate(SafeSocketHandle socketHandle) - => _disconnectEx ?? CreateDelegate(ref _disconnectEx, socketHandle, "7fda2e118630436fa031f536a6eec157"); + internal unsafe DisconnectExDelegate GetDisconnectExDelegate(SafeSocketHandle socketHandle) + => _disconnectEx ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).DisconnectEx, ref _disconnectEx, socketHandle, "7fda2e118630436fa031f536a6eec157"); - internal WSARecvMsgDelegate GetWSARecvMsgDelegate(SafeSocketHandle socketHandle) - => _recvMsg ?? CreateDelegate(ref _recvMsg, socketHandle, "f689d7c86f1f436b8a53e54fe351c322"); + internal unsafe WSARecvMsgDelegate GetWSARecvMsgDelegate(SafeSocketHandle socketHandle) + => _recvMsg ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).WSARecvMsg, ref _recvMsg, socketHandle, "f689d7c86f1f436b8a53e54fe351c322"); - internal TransmitPacketsDelegate GetTransmitPacketsDelegate(SafeSocketHandle socketHandle) - => _transmitPackets ?? CreateDelegate(ref _transmitPackets, socketHandle, "d9689da01f9011d3997100c04f68c876"); + internal unsafe TransmitPacketsDelegate GetTransmitPacketsDelegate(SafeSocketHandle socketHandle) + => _transmitPackets ?? CreateDelegate(ptr => new SocketDelegateHelper(ptr).TransmitPackets, ref _transmitPackets, socketHandle, "d9689da01f9011d3997100c04f68c876"); + + /// + /// The SocketDelegateHelper implements manual marshalling wrappers for the various delegates used for the dynamic Winsock methods. + /// These wrappers were generated with DllImportGenerator and then manually converted to use function pointers as the target instead of a P/Invoke. + /// + private struct SocketDelegateHelper + { + private readonly IntPtr _target; + + public SocketDelegateHelper(IntPtr target) + { + _target = target; + } + + internal unsafe bool AcceptEx(SafeSocketHandle listenSocketHandle, SafeSocketHandle acceptSocketHandle, IntPtr buffer, int len, int localAddressLength, int remoteAddressLength, out int bytesReceived, NativeOverlapped* overlapped) + { + IntPtr __listenSocketHandle_gen_native = default; + IntPtr __acceptSocketHandle_gen_native = default; + bytesReceived = default; + bool __retVal; + int __retVal_gen_native = default; + // + // Setup + // + bool listenSocketHandle__addRefd = false; + bool acceptSocketHandle__addRefd = false; + try + { + // + // Marshal + // + listenSocketHandle.DangerousAddRef(ref listenSocketHandle__addRefd); + __listenSocketHandle_gen_native = listenSocketHandle.DangerousGetHandle(); + acceptSocketHandle.DangerousAddRef(ref acceptSocketHandle__addRefd); + __acceptSocketHandle_gen_native = acceptSocketHandle.DangerousGetHandle(); + fixed (int* __bytesReceived_gen_native = &bytesReceived) + { + __retVal_gen_native = ((delegate* unmanaged)_target)(__listenSocketHandle_gen_native, __acceptSocketHandle_gen_native, buffer, len, localAddressLength, remoteAddressLength, __bytesReceived_gen_native, overlapped); + } + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + // + // Unmarshal + // + __retVal = __retVal_gen_native != 0; + } + finally + { + // + // Cleanup + // + if (listenSocketHandle__addRefd) + listenSocketHandle.DangerousRelease(); + if (acceptSocketHandle__addRefd) + acceptSocketHandle.DangerousRelease(); + } + + return __retVal; + } + internal unsafe void GetAcceptExSockaddrs(IntPtr buffer, int receiveDataLength, int localAddressLength, int remoteAddressLength, out IntPtr localSocketAddress, out int localSocketAddressLength, out IntPtr remoteSocketAddress, out int remoteSocketAddressLength) + { + localSocketAddress = default; + localSocketAddressLength = default; + remoteSocketAddress = default; + remoteSocketAddressLength = default; + fixed (IntPtr* __localSocketAddress_gen_native = &localSocketAddress) + fixed (int* __localSocketAddressLength_gen_native = &localSocketAddressLength) + fixed (IntPtr* __remoteSocketAddress_gen_native = &remoteSocketAddress) + fixed (int* __remoteSocketAddressLength_gen_native = &remoteSocketAddressLength) + { + ((delegate* unmanaged)_target)(buffer, receiveDataLength, localAddressLength, remoteAddressLength, __localSocketAddress_gen_native, __localSocketAddressLength_gen_native, __remoteSocketAddress_gen_native, __remoteSocketAddressLength_gen_native); + } + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + + } + internal unsafe bool ConnectEx(SafeSocketHandle socketHandle, IntPtr socketAddress, int socketAddressSize, IntPtr buffer, int dataLength, out int bytesSent, NativeOverlapped* overlapped) + { + IntPtr __socketHandle_gen_native = default; + bytesSent = default; + bool __retVal; + int __retVal_gen_native = default; + // + // Setup + // + bool socketHandle__addRefd = false; + try + { + // + // Marshal + // + socketHandle.DangerousAddRef(ref socketHandle__addRefd); + __socketHandle_gen_native = socketHandle.DangerousGetHandle(); + fixed (int* __bytesSent_gen_native = &bytesSent) + { + __retVal_gen_native = ((delegate* unmanaged)_target)(__socketHandle_gen_native, socketAddress, socketAddressSize, buffer, dataLength, __bytesSent_gen_native, overlapped); + } + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + // + // Unmarshal + // + __retVal = __retVal_gen_native != 0; + } + finally + { + // + // Cleanup + // + if (socketHandle__addRefd) + socketHandle.DangerousRelease(); + } + + return __retVal; + } + internal unsafe bool DisconnectEx(SafeSocketHandle socketHandle, NativeOverlapped* overlapped, int flags, int reserved) + { + IntPtr __socketHandle_gen_native; + bool __retVal; + int __retVal_gen_native; + // + // Setup + // + bool socketHandle__addRefd = false; + try + { + // + // Marshal + // + socketHandle.DangerousAddRef(ref socketHandle__addRefd); + __socketHandle_gen_native = socketHandle.DangerousGetHandle(); + __retVal_gen_native = ((delegate* unmanaged)_target)(__socketHandle_gen_native, overlapped, flags, reserved); + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + // + // Unmarshal + // + __retVal = __retVal_gen_native != 0; + } + finally + { + // + // Cleanup + // + if (socketHandle__addRefd) + socketHandle.DangerousRelease(); + } + + return __retVal; + } + internal unsafe SocketError WSARecvMsg(SafeSocketHandle socketHandle, IntPtr msg, out int bytesTransferred, NativeOverlapped* overlapped, IntPtr completionRoutine) + { + IntPtr __socketHandle_gen_native = default; + bytesTransferred = default; + SocketError __retVal; + // + // Setup + // + bool socketHandle__addRefd = false; + try + { + // + // Marshal + // + socketHandle.DangerousAddRef(ref socketHandle__addRefd); + __socketHandle_gen_native = socketHandle.DangerousGetHandle(); + fixed (int* __bytesTransferred_gen_native = &bytesTransferred) + { + __retVal = ((delegate* unmanaged)_target)(__socketHandle_gen_native, msg, __bytesTransferred_gen_native, overlapped, completionRoutine); + } + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + } + finally + { + // + // Cleanup + // + if (socketHandle__addRefd) + socketHandle.DangerousRelease(); + } + + return __retVal; + } + internal unsafe bool TransmitPackets(SafeSocketHandle socketHandle, IntPtr packetArray, int elementCount, int sendSize, NativeOverlapped* overlapped, TransmitFileOptions flags) + { + IntPtr __socketHandle_gen_native; + bool __retVal; + int __retVal_gen_native; + // + // Setup + // + bool socketHandle__addRefd = false; + try + { + // + // Marshal + // + socketHandle.DangerousAddRef(ref socketHandle__addRefd); + __socketHandle_gen_native = socketHandle.DangerousGetHandle(); + __retVal_gen_native = ((delegate* unmanaged)_target)(__socketHandle_gen_native, packetArray, elementCount, sendSize, overlapped, flags); + Marshal.SetLastPInvokeError(Marshal.GetLastSystemError()); + // + // Unmarshal + // + __retVal = __retVal_gen_native != 0; + } + finally + { + // + // Cleanup + // + if (socketHandle__addRefd) + socketHandle.DangerousRelease(); + } + + return __retVal; + } + } } - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal unsafe delegate bool AcceptExDelegate( SafeSocketHandle listenSocketHandle, SafeSocketHandle acceptSocketHandle, @@ -113,7 +326,6 @@ internal unsafe delegate bool AcceptExDelegate( out int bytesReceived, NativeOverlapped* overlapped); - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal delegate void GetAcceptExSockaddrsDelegate( IntPtr buffer, int receiveDataLength, @@ -124,8 +336,6 @@ internal delegate void GetAcceptExSockaddrsDelegate( out IntPtr remoteSocketAddress, out int remoteSocketAddressLength); - - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal unsafe delegate bool ConnectExDelegate( SafeSocketHandle socketHandle, IntPtr socketAddress, @@ -135,14 +345,12 @@ internal unsafe delegate bool ConnectExDelegate( out int bytesSent, NativeOverlapped* overlapped); - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal unsafe delegate bool DisconnectExDelegate( SafeSocketHandle socketHandle, NativeOverlapped* overlapped, int flags, int reserved); - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal unsafe delegate SocketError WSARecvMsgDelegate( SafeSocketHandle socketHandle, IntPtr msg, @@ -150,7 +358,6 @@ internal unsafe delegate SocketError WSARecvMsgDelegate( NativeOverlapped* overlapped, IntPtr completionRoutine); - [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)] internal unsafe delegate bool TransmitPacketsDelegate( SafeSocketHandle socketHandle, IntPtr packetArray, diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/MulticastOption.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/MulticastOption.cs index 19e8b5ef80dff9..3229ac80db62f1 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/MulticastOption.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/MulticastOption.cs @@ -12,29 +12,14 @@ public class MulticastOption // Creates a new instance of the MulticastOption class with the specified IP address // group and local address. - public MulticastOption(IPAddress group, IPAddress mcint) + public MulticastOption(IPAddress group!!, IPAddress mcint!!) { - if (group == null) - { - throw new ArgumentNullException(nameof(group)); - } - - if (mcint == null) - { - throw new ArgumentNullException(nameof(mcint)); - } - _group = group; LocalAddress = mcint; } - public MulticastOption(IPAddress group, int interfaceIndex) + public MulticastOption(IPAddress group!!, int interfaceIndex) { - if (group == null) - { - throw new ArgumentNullException(nameof(group)); - } - if (interfaceIndex < 0 || interfaceIndex > 0x00FFFFFF) { throw new ArgumentOutOfRangeException(nameof(interfaceIndex)); @@ -45,13 +30,8 @@ public MulticastOption(IPAddress group, int interfaceIndex) } // Creates a new version of the MulticastOption class for the specified group. - public MulticastOption(IPAddress group) + public MulticastOption(IPAddress group!!) { - if (group == null) - { - throw new ArgumentNullException(nameof(group)); - } - _group = group; LocalAddress = IPAddress.Any; @@ -60,23 +40,18 @@ public MulticastOption(IPAddress group) // Sets the IP address of a multicast group. public IPAddress Group { - get - { - return _group; - } + get => _group; set { - _group = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _group = value; } } // Sets the local address of a multicast group. public IPAddress? LocalAddress { - get - { - return _localAddress; - } + get => _localAddress; set { _ifIndex = 0; @@ -86,10 +61,7 @@ public IPAddress? LocalAddress public int InterfaceIndex { - get - { - return _ifIndex; - } + get => _ifIndex; set { if (value < 0 || value > 0x00FFFFFF) @@ -111,13 +83,8 @@ public class IPv6MulticastOption // Creates a new instance of the MulticaseOption class with the specified IP // address group and local address. - public IPv6MulticastOption(IPAddress group, long ifindex) + public IPv6MulticastOption(IPAddress group!!, long ifindex) { - if (group == null) - { - throw new ArgumentNullException(nameof(group)); - } - if (ifindex < 0 || ifindex > 0x00000000FFFFFFFF) { throw new ArgumentOutOfRangeException(nameof(ifindex)); @@ -129,13 +96,8 @@ public IPv6MulticastOption(IPAddress group, long ifindex) // Creates a new version of the MulticastOption class for the specified // group. - public IPv6MulticastOption(IPAddress group) + public IPv6MulticastOption(IPAddress group!!) { - if (group == null) - { - throw new ArgumentNullException(nameof(group)); - } - _group = group; InterfaceIndex = 0; } @@ -143,23 +105,18 @@ public IPv6MulticastOption(IPAddress group) // Sets the IP address of a multicast group. public IPAddress Group { - get - { - return _group; - } + get => _group; set { - _group = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _group = value; } } // Sets the interface index. public long InterfaceIndex { - get - { - return _interface; - } + get => _interface; set { if (value < 0 || value > 0x00000000FFFFFFFF) diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs index e7b8b4e8745300..6e57472a199f08 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/NetworkStream.cs @@ -41,12 +41,8 @@ public NetworkStream(Socket socket, FileAccess access) { } - public NetworkStream(Socket socket, FileAccess access, bool ownsSocket) + public NetworkStream(Socket socket!!, FileAccess access, bool ownsSocket) { - if (socket == null) - { - throw new ArgumentNullException(nameof(socket)); - } if (!socket.Blocking) { // Stream.Read*/Write* are incompatible with the semantics of non-blocking sockets, and @@ -422,12 +418,7 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy public override int EndRead(IAsyncResult asyncResult) { ThrowIfDisposed(); - - // Validate input parameters. - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); try { @@ -486,12 +477,7 @@ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, As public override void EndWrite(IAsyncResult asyncResult) { ThrowIfDisposed(); - - // Validate input parameters. - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); try { diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SendPacketsElement.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SendPacketsElement.cs index f528bf0f789e33..1346fc48756b67 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SendPacketsElement.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SendPacketsElement.cs @@ -25,13 +25,8 @@ public SendPacketsElement(string filepath, long offset, int count) : this(filepath, offset, count, false) { } - public SendPacketsElement(string filepath, long offset, int count, bool endOfPacket) + public SendPacketsElement(string filepath!!, long offset, int count, bool endOfPacket) { - // We will validate if the file exists on send. - if (filepath == null) - { - throw new ArgumentNullException(nameof(filepath)); - } // The native API will validate the file length on send. if (offset < 0) { @@ -54,13 +49,8 @@ public SendPacketsElement(FileStream fileStream, long offset, int count) : this(fileStream, offset, count, false) { } - public SendPacketsElement(FileStream fileStream, long offset, int count, bool endOfPacket) + public SendPacketsElement(FileStream fileStream!!, long offset, int count, bool endOfPacket) { - // We will validate if the fileStream exists on send. - if (fileStream == null) - { - throw new ArgumentNullException(nameof(fileStream)); - } if (!fileStream.IsAsync) { throw new ArgumentException(SR.net_sockets_sendpackelement_FileStreamMustBeAsync, nameof(fileStream)); @@ -87,12 +77,8 @@ public SendPacketsElement(byte[] buffer, int offset, int count) : this(buffer, offset, count, false) { } - public SendPacketsElement(byte[] buffer, int offset, int count, bool endOfPacket) + public SendPacketsElement(byte[] buffer!!, int offset, int count, bool endOfPacket) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if ((uint)offset > (uint)buffer.Length) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs index cb04d92d744c23..4b8dd5d73e623c 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs @@ -162,10 +162,7 @@ public ValueTask ConnectAsync(IPAddress[] addresses, int port, CancellationToken { ThrowIfDisposed(); - if (addresses == null) - { - throw new ArgumentNullException(nameof(addresses)); - } + ArgumentNullException.ThrowIfNull(addresses); if (addresses.Length == 0) { @@ -238,13 +235,8 @@ async ValueTask Core(IPAddress[] addresses, int port, CancellationToken cancella /// The port on the remote host to connect to. /// A cancellation token that can be used to cancel the asynchronous operation. /// An asynchronous task that completes when the connection is established. - public ValueTask ConnectAsync(string host, int port, CancellationToken cancellationToken) + public ValueTask ConnectAsync(string host!!, int port, CancellationToken cancellationToken) { - if (host == null) - { - throw new ArgumentNullException(nameof(host)); - } - EndPoint ep = IPAddress.TryParse(host, out IPAddress? parsedAddress) ? (EndPoint) new IPEndPoint(parsedAddress, port) : new DnsEndPoint(host, port); @@ -626,13 +618,8 @@ public ValueTask SendToAsync(ReadOnlyMemory buffer, EndPoint remoteEP /// The remote host to which to send the data. /// A cancellation token that can be used to cancel the asynchronous operation. /// An asynchronous task that completes with the number of bytes sent. - public ValueTask SendToAsync(ReadOnlyMemory buffer, SocketFlags socketFlags, EndPoint remoteEP, CancellationToken cancellationToken = default) + public ValueTask SendToAsync(ReadOnlyMemory buffer, SocketFlags socketFlags, EndPoint remoteEP!!, CancellationToken cancellationToken = default) { - if (remoteEP is null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } - if (cancellationToken.IsCancellationRequested) { return ValueTask.FromCanceled(cancellationToken); @@ -739,12 +726,8 @@ public ValueTask SendFileAsync(string? fileName, ReadOnlyMemory preBuffer, return saea.SendPacketsAsync(this, cancellationToken); } - private static void ValidateBufferArguments(byte[] buffer, int offset, int size) + private static void ValidateBufferArguments(byte[] buffer!!, int offset, int size) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if ((uint)offset > (uint)buffer.Length) { throw new ArgumentOutOfRangeException(nameof(offset)); @@ -758,10 +741,7 @@ private static void ValidateBufferArguments(byte[] buffer, int offset, int size) /// Validates the supplied array segment, throwing if its array or indices are null or out-of-bounds, respectively. private static void ValidateBuffer(ArraySegment buffer) { - if (buffer.Array == null) - { - throw new ArgumentNullException(nameof(buffer.Array)); - } + ArgumentNullException.ThrowIfNull(buffer.Array, nameof(buffer.Array)); if ((uint)buffer.Offset > (uint)buffer.Array.Length) { throw new ArgumentOutOfRangeException(nameof(buffer.Offset)); @@ -773,12 +753,8 @@ private static void ValidateBuffer(ArraySegment buffer) } /// Validates the supplied buffer list, throwing if it's null or empty. - private static void ValidateBuffersList(IList> buffers) + private static void ValidateBuffersList(IList> buffers!!) { - if (buffers == null) - { - throw new ArgumentNullException(nameof(buffers)); - } if (buffers.Count == 0) { throw new ArgumentException(SR.Format(SR.net_sockets_zerolist, nameof(buffers)), nameof(buffers)); diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs index f3ecb8e64a9f05..ea137810083a8e 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs @@ -232,8 +232,7 @@ private unsafe Socket(SafeSocketHandle handle, bool loadPropertiesFromHandle) } } - private static SafeSocketHandle ValidateHandle(SafeSocketHandle handle) => - handle is null ? throw new ArgumentNullException(nameof(handle)) : + private static SafeSocketHandle ValidateHandle(SafeSocketHandle handle!!) => handle.IsInvalid ? throw new ArgumentException(SR.Arg_InvalidHandle, nameof(handle)) : handle; @@ -747,12 +746,7 @@ public void Bind(EndPoint localEP) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, localEP); ThrowIfDisposed(); - - // Validate input parameters. - if (localEP == null) - { - throw new ArgumentNullException(nameof(localEP)); - } + ArgumentNullException.ThrowIfNull(localEP); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"localEP:{localEP}"); @@ -793,12 +787,7 @@ private void DoBind(EndPoint endPointSnapshot, Internals.SocketAddress socketAdd public void Connect(EndPoint remoteEP) { ThrowIfDisposed(); - - // Validate input parameters. - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } + ArgumentNullException.ThrowIfNull(remoteEP); if (_isDisconnected) { @@ -845,11 +834,7 @@ public void Connect(EndPoint remoteEP) public void Connect(IPAddress address, int port) { ThrowIfDisposed(); - - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } + ArgumentNullException.ThrowIfNull(address); if (!TcpValidationHelpers.ValidatePortNumber(port)) { @@ -875,11 +860,8 @@ public void Connect(IPAddress address, int port) public void Connect(string host, int port) { ThrowIfDisposed(); + ArgumentNullException.ThrowIfNull(host); - if (host == null) - { - throw new ArgumentNullException(nameof(host)); - } if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -907,11 +889,8 @@ public void Connect(string host, int port) public void Connect(IPAddress[] addresses, int port) { ThrowIfDisposed(); + ArgumentNullException.ThrowIfNull(addresses); - if (addresses == null) - { - throw new ArgumentNullException(nameof(addresses)); - } if (addresses.Length == 0) { throw new ArgumentException(SR.net_sockets_invalid_ipaddress_length, nameof(addresses)); @@ -1115,11 +1094,7 @@ public int Send(IList> buffers, SocketFlags socketFlags) public int Send(IList> buffers, SocketFlags socketFlags, out SocketError errorCode) { ThrowIfDisposed(); - - if (buffers == null) - { - throw new ArgumentNullException(nameof(buffers)); - } + ArgumentNullException.ThrowIfNull(buffers); if (buffers.Count == 0) { @@ -1309,10 +1284,7 @@ public int SendTo(byte[] buffer, int offset, int size, SocketFlags socketFlags, ThrowIfDisposed(); ValidateBufferArguments(buffer, offset, size); - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } + ArgumentNullException.ThrowIfNull(remoteEP); ValidateBlockingMode(); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"SRC:{LocalEndPoint} size:{size} remoteEP:{remoteEP}"); @@ -1385,10 +1357,7 @@ public int SendTo(ReadOnlySpan buffer, EndPoint remoteEP) public int SendTo(ReadOnlySpan buffer, SocketFlags socketFlags, EndPoint remoteEP) { ThrowIfDisposed(); - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } + ArgumentNullException.ThrowIfNull(remoteEP); ValidateBlockingMode(); @@ -1531,11 +1500,7 @@ public int Receive(IList> buffers, SocketFlags socketFlags) public int Receive(IList> buffers, SocketFlags socketFlags, out SocketError errorCode) { ThrowIfDisposed(); - - if (buffers == null) - { - throw new ArgumentNullException(nameof(buffers)); - } + ArgumentNullException.ThrowIfNull(buffers); if (buffers.Count == 0) { @@ -1652,11 +1617,8 @@ public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref SocketFla public int ReceiveMessageFrom(Span buffer, ref SocketFlags socketFlags, ref EndPoint remoteEP, out IPPacketInformation ipPacketInformation) { ThrowIfDisposed(); + ArgumentNullException.ThrowIfNull(remoteEP); - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } if (!CanTryAddressFamily(remoteEP.AddressFamily)) { throw new ArgumentException(SR.Format(SR.net_InvalidEndPointAddressFamily, remoteEP.AddressFamily, _addressFamily), nameof(remoteEP)); @@ -1946,12 +1908,7 @@ public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName opti public void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, object optionValue) { ThrowIfDisposed(); - - // Validate input parameters. - if (optionValue == null) - { - throw new ArgumentNullException(nameof(optionValue)); - } + ArgumentNullException.ThrowIfNull(optionValue); if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, $"optionLevel:{optionLevel} optionName:{optionName} optionValue:{optionValue}"); @@ -2185,7 +2142,9 @@ public bool Poll(int microSeconds, SelectMode mode) public static void Select(IList? checkRead, IList? checkWrite, IList? checkError, int microSeconds) { // Validate input parameters. - if ((checkRead == null || checkRead.Count == 0) && (checkWrite == null || checkWrite.Count == 0) && (checkError == null || checkError.Count == 0)) + if ((checkRead == null || checkRead.Count == 0) && + (checkWrite == null || checkWrite.Count == 0) && + (checkError == null || checkError.Count == 0)) { throw new ArgumentNullException(null, SR.net_sockets_empty_select); } @@ -2339,11 +2298,7 @@ public IAsyncResult BeginSendFile(string? fileName, byte[]? preBuffer, byte[]? p public void EndSendFile(IAsyncResult asyncResult) { ThrowIfDisposed(); - - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } + ArgumentNullException.ThrowIfNull(asyncResult); TaskToApm.End(asyncResult); } @@ -2352,10 +2307,7 @@ public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, SocketFlags { ThrowIfDisposed(); ValidateBufferArguments(buffer, offset, size); - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } + ArgumentNullException.ThrowIfNull(remoteEP); Task t = SendToAsync(buffer.AsMemory(offset, size), socketFlags, remoteEP).AsTask(); return TaskToApm.Begin(t, callback, state); @@ -2469,10 +2421,7 @@ public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, public int EndReceiveMessageFrom(IAsyncResult asyncResult, ref SocketFlags socketFlags, ref EndPoint endPoint, out IPPacketInformation ipPacketInformation) { ThrowIfDisposed(); - if (endPoint == null) - { - throw new ArgumentNullException(nameof(endPoint)); - } + ArgumentNullException.ThrowIfNull(endPoint); if (!CanTryAddressFamily(endPoint.AddressFamily)) { throw new ArgumentException(SR.Format(SR.net_InvalidEndPointAddressFamily, endPoint.AddressFamily, _addressFamily), nameof(endPoint)); @@ -2510,11 +2459,7 @@ public int EndReceiveFrom(IAsyncResult asyncResult, ref EndPoint endPoint) { ThrowIfDisposed(); - // Validate input parameters. - if (endPoint == null) - { - throw new ArgumentNullException(nameof(endPoint)); - } + ArgumentNullException.ThrowIfNull(endPoint); if (!CanTryAddressFamily(endPoint.AddressFamily)) { throw new ArgumentException(SR.Format(SR.net_InvalidEndPointAddressFamily, endPoint.AddressFamily, _addressFamily), nameof(endPoint)); @@ -2628,10 +2573,7 @@ private bool AcceptAsync(SocketAsyncEventArgs e, CancellationToken cancellationT { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.HasMultipleBuffers) { throw new ArgumentException(SR.net_multibuffernotsupported, nameof(e)); @@ -2683,18 +2625,12 @@ internal bool ConnectAsync(SocketAsyncEventArgs e, bool userSocket, bool saeaCan ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.HasMultipleBuffers) { throw new ArgumentException(SR.net_multibuffernotsupported, "BufferList"); } - if (e.RemoteEndPoint == null) - { - throw new ArgumentNullException("remoteEP"); - } + ArgumentNullException.ThrowIfNull(e.RemoteEndPoint, "remoteEP"); if (_isListening) { throw new InvalidOperationException(SR.net_sockets_mustnotlisten); @@ -2785,14 +2721,8 @@ internal bool ConnectAsync(SocketAsyncEventArgs e, bool userSocket, bool saeaCan return pending; } - public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e) + public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e!!) { - bool pending; - - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } if (e.HasMultipleBuffers) { throw new ArgumentException(SR.net_multibuffernotsupported, nameof(e)); @@ -2805,6 +2735,7 @@ public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType EndPoint endPointSnapshot = e.RemoteEndPoint; DnsEndPoint? dnsEP = endPointSnapshot as DnsEndPoint; + bool pending; if (dnsEP != null) { Socket? attemptSocket = dnsEP.AddressFamily != AddressFamily.Unspecified ? new Socket(dnsEP.AddressFamily, socketType, protocolType) : null; @@ -2832,12 +2763,8 @@ public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType /// Binds an unbound socket to "any" if necessary to support a connect. partial void WildcardBindForConnectIfNecessary(AddressFamily addressFamily); - public static void CancelConnectAsync(SocketAsyncEventArgs e) + public static void CancelConnectAsync(SocketAsyncEventArgs e!!) { - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } e.CancelConnectAsync(); } @@ -2848,10 +2775,7 @@ private bool DisconnectAsync(SocketAsyncEventArgs e, CancellationToken cancellat // Throw if socket disposed ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); // Prepare for and make the native call. e.StartOperationCommon(this, SocketAsyncOperation.Disconnect); @@ -2876,10 +2800,7 @@ private bool ReceiveAsync(SocketAsyncEventArgs e, CancellationToken cancellation { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); // Prepare for and make the native call. e.StartOperationCommon(this, SocketAsyncOperation.Receive); @@ -2904,10 +2825,7 @@ private bool ReceiveFromAsync(SocketAsyncEventArgs e, CancellationToken cancella { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.RemoteEndPoint == null) { throw new ArgumentException(SR.Format(SR.InvalidNullArgument, "e.RemoteEndPoint"), nameof(e)); @@ -2953,10 +2871,7 @@ private bool ReceiveMessageFromAsync(SocketAsyncEventArgs e, CancellationToken c { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.RemoteEndPoint == null) { throw new ArgumentException(SR.Format(SR.InvalidNullArgument, "e.RemoteEndPoint"), nameof(e)); @@ -3003,10 +2918,7 @@ private bool SendAsync(SocketAsyncEventArgs e, CancellationToken cancellationTok { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); // Prepare for and make the native call. e.StartOperationCommon(this, SocketAsyncOperation.Send); @@ -3031,10 +2943,7 @@ private bool SendPacketsAsync(SocketAsyncEventArgs e, CancellationToken cancella { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.SendPacketsElements == null) { throw new ArgumentException(SR.Format(SR.InvalidNullArgument, "e.SendPacketsElements"), nameof(e)); @@ -3067,10 +2976,7 @@ private bool SendToAsync(SocketAsyncEventArgs e, CancellationToken cancellationT { ThrowIfDisposed(); - if (e == null) - { - throw new ArgumentNullException(nameof(e)); - } + ArgumentNullException.ThrowIfNull(e); if (e.RemoteEndPoint == null) { throw new ArgumentException(SR.Format(SR.InvalidNullArgument, "e.RemoteEndPoint"), nameof(e)); @@ -3744,10 +3650,7 @@ private bool CheckErrorAndUpdateStatus(SocketError errorCode) // and check whether the socket is bound. private void ValidateReceiveFromEndpointAndState(EndPoint remoteEndPoint, string remoteEndPointArgumentName) { - if (remoteEndPoint == null) - { - throw new ArgumentNullException(remoteEndPointArgumentName); - } + ArgumentNullException.ThrowIfNull(remoteEndPoint, remoteEndPointArgumentName); if (!CanTryAddressFamily(remoteEndPoint.AddressFamily)) { throw new ArgumentException(SR.Format(SR.net_InvalidEndPointAddressFamily, remoteEndPoint.AddressFamily, _addressFamily), remoteEndPointArgumentName); diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs index b22efcee8d9047..3baab068e16cfc 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketAsyncEventArgs.Windows.cs @@ -14,46 +14,33 @@ namespace System.Net.Sockets { public partial class SocketAsyncEventArgs : EventArgs, IDisposable { - /// Tracks whether and when whether to perform cleanup of async processing state, specifically and . + /// + /// Value used to indicate whether the thread starting an async operation or invoking the callback owns completion and cleanup, + /// and potentially a packed result when ownership is transferred from the overlapped callback to the initial thread. + /// /// - /// We sometimes want to or need to defer the initialization of some aspects of async processing until - /// the operation pends, that is, the OS async call returns and indicates that it will complete asynchronously. - /// - /// We do this in two cases: to optimize buffer pinning in certain cases, and to handle cancellation. - /// - /// We optimize buffer pinning for operations that frequently complete synchronously, like Send and Receive, - /// when they use a single buffer. (Optimizing for multiple buffers is more complicated, so we don't currently do it.) - /// In these cases, we used the much-cheaper `fixed` keyword to pin the buffer while the OS async call is in progress. - /// If the operation pends, we will then pin using MemoryHandle.Pin() before exiting the `fixed` scope, - /// thus ensuring that the buffer remains pinned throughout the whole operation. - /// - /// For cancellation, we always need to defer cancellation registration until after the OS call has pended. - /// - /// To coordinate with the completion callback from the IOCP, we set to InProcess - /// before performing the OS async call, and then transition it to Set once the operation has pended - /// and the relevant async setup (pinning, cancellation registration) has occurred. - /// This ensures that the completion callback will only clean up the async state (unpin, unregister cancellation) - /// once it has been fully constructed by the original calling thread, even if it needs to wait momentarily to do so. - /// - /// For some operations, like Connect and multi-buffer Send/Receive, we do not do any deferred async processing. - /// Instead, we perform any necessary setup and set to Set before making the call. - /// The cleanup logic will be invoked as always, but in this case will never need to wait on the InProcess state. - /// If an operation does not require any cleanup of this state, it can simply leave as None. + /// An async operation may complete asynchronously so quickly that the overlapped callback may be invoked even while the thread + /// launching the operation is still in the process of launching it, including setting up state that's only configured after + /// the Winsock call has been made, e.g. registering with a cancellation token. In order to ensure that cleanup and announcement + /// of completion happen only once all work related to launching the operation has quiesced, the launcher and the callback + /// coordinate via this flag. It's initially set to 0. When either the launcher completes its work or the callback is invoked, + /// they each try to transition the flag to non-0, and if successful, the other entity owns completion and cleanup; if unsuccessful, + /// they themselves own cleanup and completion. For cases where the operation frequently completes asynchronously but quickly, + /// e.g. accepts with an already pending connection, this also helps to turn what would otherwise be treated as asynchronous completion + /// into a synchronous completion, which can help with performance for the caller, e.g. an async method awaiting the operation simply + /// continues its execution synchronously rather than needing to hook up a continuation and go through the async completion path. + /// If the overlapped callback succeeds in transferring ownership, the value is a combination of the error code (bottom 32-bits) and + /// the number of bytes transferred (bits 33-63); the top bit is also set just in case both the error code and number of bytes + /// transferred are 0. /// - private volatile AsyncProcessingState _asyncProcessingState; + private ulong _asyncCompletionOwnership; - /// Defines possible states for in order to faciliate correct cleanup of asynchronous processing state. - private enum AsyncProcessingState : byte - { - /// No cleanup is required, either because no operation is in flight or the current operation does not require cleanup. - None, - /// An operation is in flight but async processing state has not yet been initialized. - InProcess, - /// An operation is in flight and async processing state is fully initialized and ready to be cleaned up. - Set - } - - // Single buffer pin handle + /// Pinned handle for a single buffer. + /// + /// This should only be set in when is also being + /// set to non-0, and then cleaned up in . If it's set and + /// remains 0, it may not get cleaned up correctly. + /// private MemoryHandle _singleBufferHandle; // BufferList property variables. @@ -78,7 +65,12 @@ private enum AsyncProcessingState : byte private PreAllocatedOverlapped _preAllocatedOverlapped; private readonly StrongBox _strongThisRef = new StrongBox(); // state for _preAllocatedOverlapped; .Value set to this while operations in flight - // Cancellation support + /// Registration with a cancellation token for an asynchronous operation. + /// + /// This should only be set in when is also being + /// set to non-0, and then cleaned up in . If it's set and + /// remains 0, it may not get cleaned up correctly. + /// private CancellationTokenRegistration _registrationToCancelPendingIO; private unsafe NativeOverlapped* _pendingOverlappedForCancellation; @@ -113,7 +105,7 @@ private void FreeInternals() return boundHandle.AllocateNativeOverlapped(_preAllocatedOverlapped); } - private unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped) + private unsafe void FreeNativeOverlapped(ref NativeOverlapped* overlapped) { Debug.Assert(OperatingSystem.IsWindows()); Debug.Assert(overlapped != null, "overlapped is null"); @@ -124,37 +116,7 @@ private unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped) Debug.Assert(_preAllocatedOverlapped != null, "_preAllocatedOverlapped is null"); _currentSocket.SafeHandle.IOCPBoundHandle.FreeNativeOverlapped(overlapped); - } - - private unsafe void RegisterToCancelPendingIO(NativeOverlapped* overlapped, CancellationToken cancellationToken) - { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.InProcess, "An operation must be declared in-flight in order to register to cancel it."); - Debug.Assert(_pendingOverlappedForCancellation == null); - _pendingOverlappedForCancellation = overlapped; - _registrationToCancelPendingIO = cancellationToken.UnsafeRegister(static s => - { - // Try to cancel the I/O. We ignore the return value (other than for logging), as cancellation - // is opportunistic and we don't want to fail the operation because we couldn't cancel it. - var thisRef = (SocketAsyncEventArgs)s!; - SafeSocketHandle handle = thisRef._currentSocket!.SafeHandle; - if (!handle.IsClosed) - { - try - { - bool canceled = Interop.Kernel32.CancelIoEx(handle, thisRef._pendingOverlappedForCancellation); - if (NetEventSource.Log.IsEnabled()) - { - NetEventSource.Info(thisRef, canceled ? - "Socket operation canceled." : - $"CancelIoEx failed with error '{Marshal.GetLastWin32Error()}'."); - } - } - catch (ObjectDisposedException) - { - // Ignore errors resulting from the SafeHandle being closed concurrently. - } - } - }, this); + overlapped = null; } partial void StartOperationCommonCore() @@ -170,7 +132,7 @@ partial void StartOperationCommonCore() /// true if the IOCP operation indicated synchronous success; otherwise, false. /// The overlapped that was used for this operation. Will be freed if the operation result will be handled synchronously. /// The SocketError for the operation. This will be SocketError.IOPending if the operation will be handled asynchronously. - private unsafe SocketError GetIOCPResult(bool success, NativeOverlapped* overlapped) + private unsafe SocketError GetIOCPResult(bool success, ref NativeOverlapped* overlapped) { // Note: We need to dispose of the overlapped iff the operation result will be handled synchronously. @@ -180,7 +142,7 @@ private unsafe SocketError GetIOCPResult(bool success, NativeOverlapped* overlap if (_currentSocket!.SafeHandle.SkipCompletionPortOnSuccess) { // The socket handle is configured to skip completion on success, so we can handle the result synchronously. - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); return SocketError.Success; } @@ -197,7 +159,7 @@ private unsafe SocketError GetIOCPResult(bool success, NativeOverlapped* overlap { // Completed synchronously with a failure. // No IOCP completion will occur. - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); return socketError; } @@ -206,25 +168,6 @@ private unsafe SocketError GetIOCPResult(bool success, NativeOverlapped* overlap } } - /// Handles the result of an IOCP operation. - /// true if the IOCP operation indicated synchronous success; otherwise, false. - /// The number of bytes transferred, if the operation completed synchronously and successfully. - /// The overlapped that was used for this operation. Will be freed if the operation result will be handled synchronously. - /// The result status of the operation. - private unsafe SocketError ProcessIOCPResult(bool success, int bytesTransferred, NativeOverlapped* overlapped) - { - Debug.Assert(_asyncProcessingState != AsyncProcessingState.InProcess); - - SocketError socketError = GetIOCPResult(success, overlapped); - - if (socketError != SocketError.IOPending) - { - FinishOperationSync(socketError, bytesTransferred, SocketFlags.None); - } - - return socketError; - } - /// Handles the result of an IOCP operation for which we have deferred async processing logic (buffer pinning or cancellation). /// true if the IOCP operation indicated synchronous success; otherwise, false. /// The number of bytes transferred, if the operation completed synchronously and successfully. @@ -233,31 +176,82 @@ private unsafe SocketError ProcessIOCPResult(bool success, int bytesTransferred, /// Note this buffer (if not empty) should already be pinned locally using `fixed` prior to the OS async call and until after this method returns. /// The cancellation token to use to cancel the operation. /// The result status of the operation. - private unsafe SocketError ProcessIOCPResultWithDeferredAsyncHandling(bool success, int bytesTransferred, NativeOverlapped* overlapped, Memory bufferToPin, CancellationToken cancellationToken = default) + private unsafe SocketError ProcessIOCPResult(bool success, int bytesTransferred, ref NativeOverlapped* overlapped, Memory bufferToPin, CancellationToken cancellationToken) { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.InProcess); - - SocketError socketError = GetIOCPResult(success, overlapped); + SocketError socketError = GetIOCPResult(success, ref overlapped); + SocketFlags socketFlags = SocketFlags.None; if (socketError == SocketError.IOPending) { - RegisterToCancelPendingIO(overlapped, cancellationToken); + // Perform any required setup of the asynchronous operation. Everything set up here needs to be undone in CompleteCore.CleanupIOCPResult. + if (cancellationToken.CanBeCanceled) + { + Debug.Assert(_pendingOverlappedForCancellation == null); + _pendingOverlappedForCancellation = overlapped; + _registrationToCancelPendingIO = cancellationToken.UnsafeRegister(static s => + { + // Try to cancel the I/O. We ignore the return value (other than for logging), as cancellation + // is opportunistic and we don't want to fail the operation because we couldn't cancel it. + var thisRef = (SocketAsyncEventArgs)s!; + SafeSocketHandle handle = thisRef._currentSocket!.SafeHandle; + if (!handle.IsClosed) + { + try + { + bool canceled = Interop.Kernel32.CancelIoEx(handle, thisRef._pendingOverlappedForCancellation); + if (NetEventSource.Log.IsEnabled()) + { + NetEventSource.Info(thisRef, canceled ? + "Socket operation canceled." : + $"CancelIoEx failed with error '{Marshal.GetLastWin32Error()}'."); + } + } + catch (ObjectDisposedException) + { + // Ignore errors resulting from the SafeHandle being closed concurrently. + } + } + }, this); + } + if (!bufferToPin.Equals(default)) + { + _singleBufferHandle = bufferToPin.Pin(); + } - _singleBufferHandle = bufferToPin.Pin(); + // We've finished setting up and launching the operation. Coordinate with the callback. + // The expectation is that in the majority of cases either the operation will have completed + // synchronously (in which case we won't be here) or the operation will complete asynchronously + // and this function will typically win the race condition with the callback. + ulong packedResult = Interlocked.Exchange(ref _asyncCompletionOwnership, 1); + if (packedResult == 0) + { + // We won the race condition with the callback. It now owns completion and clean up. + return SocketError.IOPending; + } - _asyncProcessingState = AsyncProcessingState.Set; - } - else - { - _asyncProcessingState = AsyncProcessingState.None; - FinishOperationSync(socketError, bytesTransferred, SocketFlags.None); + // The callback was already invoked and transferred ownership to us, so now behave as if the operation completed synchronously. + // Since the success/bytesTransferred arguments passed into this method are stale, we need to retrieve the actual status info + // from the overlapped directly. It's also now our responsibility to clean up as GetIOCPResult would have, so free the overlapped. + Debug.Assert((packedResult & 0x8000000000000000) != 0, "Top bit should have been set"); + bytesTransferred = (int)((packedResult >> 32) & 0x7FFFFFFF); + socketError = (SocketError)(packedResult & 0xFFFFFFFF); + if (socketError != SocketError.Success) + { + GetOverlappedResultOnError(ref socketError, ref Unsafe.As(ref bytesTransferred), ref socketFlags, overlapped); + } + FreeNativeOverlapped(ref overlapped); } + // The operation completed, either synchronously and the callback won't be invoked, or asynchronously + // but so fast the callback has already executed and left clean up to us. + FinishOperationSync(socketError, bytesTransferred, socketFlags); return socketError; } internal unsafe SocketError DoOperationAccept(Socket socket, SafeSocketHandle handle, SafeSocketHandle acceptHandle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + bool userBuffer = _count != 0; Debug.Assert(!userBuffer || (!_buffer.Equals(default) && _count >= _acceptAddressBufferCount)); Memory buffer = userBuffer ? _buffer : _acceptBuffer; @@ -267,9 +261,6 @@ internal unsafe SocketError DoOperationAccept(Socket socket, SafeSocketHandle ha NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None, $"Expected None, got {_asyncProcessingState}"); - _asyncProcessingState = AsyncProcessingState.InProcess; - bool success = socket.AcceptEx( handle, acceptHandle, @@ -280,12 +271,11 @@ internal unsafe SocketError DoOperationAccept(Socket socket, SafeSocketHandle ha out int bytesTransferred, overlapped); - return ProcessIOCPResultWithDeferredAsyncHandling(success, bytesTransferred, overlapped, buffer, cancellationToken); + return ProcessIOCPResult(success, bytesTransferred, ref overlapped, buffer, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -301,58 +291,55 @@ internal unsafe SocketError DoOperationConnect(Socket socket, SafeSocketHandle h internal unsafe SocketError DoOperationConnectEx(Socket socket, SafeSocketHandle handle) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + // ConnectEx uses a sockaddr buffer containing the remote address to which to connect. // It can also optionally take a single buffer of data to send after the connection is complete. // The sockaddr is pinned with a GCHandle to avoid having to use the object array form of UnsafePack. PinSocketAddressBuffer(); - NativeOverlapped* overlapped = AllocateNativeOverlapped(); - try + fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _singleBufferHandle = _buffer.Pin(); - _asyncProcessingState = AsyncProcessingState.Set; - - bool success = socket.ConnectEx( - handle, - PtrSocketAddressBuffer, - _socketAddress!.Size, - (IntPtr)((byte*)_singleBufferHandle.Pointer + _offset), - _count, - out int bytesTransferred, - overlapped); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); + try + { + bool success = socket.ConnectEx( + handle, + PtrSocketAddressBuffer, + _socketAddress!.Size, + (IntPtr)((byte*)_singleBufferHandle.Pointer + _offset), + _count, + out int bytesTransferred, + overlapped); - return ProcessIOCPResult(success, bytesTransferred, overlapped); - } - catch - { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); - _singleBufferHandle.Dispose(); - throw; + return ProcessIOCPResult(success, bytesTransferred, ref overlapped, _buffer, cancellationToken: default); + } + catch when (overlapped is not null) + { + FreeNativeOverlapped(ref overlapped); + throw; + } } } internal unsafe SocketError DoOperationDisconnect(Socket socket, SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None, $"Expected None, got {_asyncProcessingState}"); - _asyncProcessingState = AsyncProcessingState.InProcess; - bool success = socket.DisconnectEx( handle, overlapped, (int)(DisconnectReuseSocket ? TransmitFileOptions.ReuseSocket : 0), 0); - return ProcessIOCPResultWithDeferredAsyncHandling(success, 0, overlapped, Memory.Empty, cancellationToken); + return ProcessIOCPResult(success, 0, ref overlapped, bufferToPin: default, cancellationToken: cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -363,13 +350,13 @@ internal SocketError DoOperationReceive(SafeSocketHandle handle, CancellationTok internal unsafe SocketError DoOperationReceiveSingleBuffer(SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None, $"Expected None, got {_asyncProcessingState}"); - _asyncProcessingState = AsyncProcessingState.InProcess; var wsaBuffer = new WSABuffer { Length = _count, Pointer = (IntPtr)(bufferPtr + _offset) }; SocketFlags flags = _socketFlags; @@ -382,12 +369,11 @@ internal unsafe SocketError DoOperationReceiveSingleBuffer(SafeSocketHandle hand overlapped, IntPtr.Zero); - return ProcessIOCPResultWithDeferredAsyncHandling(socketError == SocketError.Success, bytesTransferred, overlapped, _buffer, cancellationToken); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, _buffer, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -395,6 +381,8 @@ internal unsafe SocketError DoOperationReceiveSingleBuffer(SafeSocketHandle hand internal unsafe SocketError DoOperationReceiveMultiBuffer(SafeSocketHandle handle) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { @@ -408,11 +396,11 @@ internal unsafe SocketError DoOperationReceiveMultiBuffer(SafeSocketHandle handl overlapped, IntPtr.Zero); - return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, overlapped); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, bufferToPin: default, cancellationToken: default); } - catch + catch when (overlapped is not null) { - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -433,13 +421,13 @@ internal unsafe SocketError DoOperationReceiveFrom(SafeSocketHandle handle, Canc internal unsafe SocketError DoOperationReceiveFromSingleBuffer(SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _asyncProcessingState = AsyncProcessingState.InProcess; var wsaBuffer = new WSABuffer { Length = _count, Pointer = (IntPtr)(bufferPtr + _offset) }; SocketFlags flags = _socketFlags; @@ -454,12 +442,11 @@ internal unsafe SocketError DoOperationReceiveFromSingleBuffer(SafeSocketHandle overlapped, IntPtr.Zero); - return ProcessIOCPResultWithDeferredAsyncHandling(socketError == SocketError.Success, bytesTransferred, overlapped, _buffer, cancellationToken); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, _buffer, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -467,6 +454,8 @@ internal unsafe SocketError DoOperationReceiveFromSingleBuffer(SafeSocketHandle internal unsafe SocketError DoOperationReceiveFromMultiBuffer(SafeSocketHandle handle) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { @@ -482,17 +471,19 @@ internal unsafe SocketError DoOperationReceiveFromMultiBuffer(SafeSocketHandle h overlapped, IntPtr.Zero); - return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, overlapped); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, bufferToPin: default, cancellationToken: default); } - catch + catch when (overlapped is not null) { - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } internal unsafe SocketError DoOperationReceiveMessageFrom(Socket socket, SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + // WSARecvMsg uses a WSAMsg descriptor. // The WSAMsg buffer is a pinned array to avoid complicating the use of Overlapped. // WSAMsg contains a pointer to a sockaddr. @@ -533,9 +524,6 @@ internal unsafe SocketError DoOperationReceiveMessageFrom(Socket socket, SafeSoc fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _asyncProcessingState = AsyncProcessingState.InProcess; - _wsaRecvMsgWSABufferArrayPinned[0].Pointer = (IntPtr)bufferPtr + _offset; _wsaRecvMsgWSABufferArrayPinned[0].Length = _count; wsaRecvMsgWSABufferArray = _wsaRecvMsgWSABufferArrayPinned; @@ -588,14 +576,11 @@ SocketError Core() overlapped, IntPtr.Zero); - return _bufferList == null ? - ProcessIOCPResultWithDeferredAsyncHandling(socketError == SocketError.Success, bytesTransferred, overlapped, _buffer, cancellationToken) : - ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, overlapped); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, _bufferList == null ? _buffer : default, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -607,13 +592,13 @@ internal unsafe SocketError DoOperationSend(SafeSocketHandle handle, Cancellatio internal unsafe SocketError DoOperationSendSingleBuffer(SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _asyncProcessingState = AsyncProcessingState.InProcess; var wsaBuffer = new WSABuffer { Length = _count, Pointer = (IntPtr)(bufferPtr + _offset) }; SocketError socketError = Interop.Winsock.WSASend( @@ -625,12 +610,11 @@ internal unsafe SocketError DoOperationSendSingleBuffer(SafeSocketHandle handle, overlapped, IntPtr.Zero); - return ProcessIOCPResultWithDeferredAsyncHandling(socketError == SocketError.Success, bytesTransferred, overlapped, _buffer, cancellationToken); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, _buffer, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -638,6 +622,8 @@ internal unsafe SocketError DoOperationSendSingleBuffer(SafeSocketHandle handle, internal unsafe SocketError DoOperationSendMultiBuffer(SafeSocketHandle handle) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { @@ -650,17 +636,19 @@ internal unsafe SocketError DoOperationSendMultiBuffer(SafeSocketHandle handle) overlapped, IntPtr.Zero); - return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, overlapped); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, bufferToPin: default, cancellationToken: default); } - catch + catch when (overlapped is not null) { - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } internal unsafe SocketError DoOperationSendPackets(Socket socket, SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + // Cache copy to avoid problems with concurrent manipulation during the async operation. Debug.Assert(_sendPacketsElements != null); SendPacketsElement[] sendPacketsElementsCopy = (SendPacketsElement[])_sendPacketsElements.Clone(); @@ -738,9 +726,6 @@ internal unsafe SocketError DoOperationSendPackets(Socket socket, SafeSocketHand NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _asyncProcessingState = AsyncProcessingState.InProcess; - bool result = socket.TransmitPackets( handle, Marshal.UnsafeAddrOfPinnedArrayElement(sendPacketsDescriptorPinned, 0), @@ -749,12 +734,11 @@ internal unsafe SocketError DoOperationSendPackets(Socket socket, SafeSocketHand overlapped, _sendPacketsFlags); - return ProcessIOCPResultWithDeferredAsyncHandling(result, 0, overlapped, Memory.Empty, cancellationToken); + return ProcessIOCPResult(result, 0, ref overlapped, bufferToPin: default, cancellationToken: cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -776,13 +760,13 @@ internal unsafe SocketError DoOperationSendTo(SafeSocketHandle handle, Cancellat internal unsafe SocketError DoOperationSendToSingleBuffer(SafeSocketHandle handle, CancellationToken cancellationToken) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + fixed (byte* bufferPtr = &MemoryMarshal.GetReference(_buffer.Span)) { NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { - Debug.Assert(_asyncProcessingState == AsyncProcessingState.None); - _asyncProcessingState = AsyncProcessingState.InProcess; var wsaBuffer = new WSABuffer { Length = _count, Pointer = (IntPtr)(bufferPtr + _offset) }; SocketError socketError = Interop.Winsock.WSASendTo( @@ -796,12 +780,11 @@ internal unsafe SocketError DoOperationSendToSingleBuffer(SafeSocketHandle handl overlapped, IntPtr.Zero); - return ProcessIOCPResultWithDeferredAsyncHandling(socketError == SocketError.Success, bytesTransferred, overlapped, _buffer, cancellationToken); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, _buffer, cancellationToken); } - catch + catch when (overlapped is not null) { - _asyncProcessingState = AsyncProcessingState.None; - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -809,6 +792,8 @@ internal unsafe SocketError DoOperationSendToSingleBuffer(SafeSocketHandle handl internal unsafe SocketError DoOperationSendToMultiBuffer(SafeSocketHandle handle) { + Debug.Assert(_asyncCompletionOwnership == 0, $"Expected 0, got {_asyncCompletionOwnership}"); + NativeOverlapped* overlapped = AllocateNativeOverlapped(); try { @@ -823,11 +808,11 @@ internal unsafe SocketError DoOperationSendToMultiBuffer(SafeSocketHandle handle overlapped, IntPtr.Zero); - return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, overlapped); + return ProcessIOCPResult(socketError == SocketError.Success, bytesTransferred, ref overlapped, bufferToPin: default, cancellationToken: default); } - catch + catch when (overlapped is not null) { - FreeNativeOverlapped(overlapped); + FreeNativeOverlapped(ref overlapped); throw; } } @@ -942,12 +927,6 @@ private void FreePinHandles() { _pinState = PinState.None; - if (_asyncProcessingState != AsyncProcessingState.None) - { - _asyncProcessingState = AsyncProcessingState.None; - _singleBufferHandle.Dispose(); - } - if (_multipleBufferMemoryHandles != null) { for (int i = 0; i < _multipleBufferMemoryHandles.Length; i++) @@ -962,6 +941,8 @@ private void FreePinHandles() _socketAddressGCHandle.Free(); _pinnedSocketAddress = null; } + + Debug.Assert(_singleBufferHandle.Equals(default(MemoryHandle))); } // Sets up an Overlapped object for SendPacketsAsync. @@ -1172,34 +1153,18 @@ private void CompleteCore() { _strongThisRef.Value = null; // null out this reference from the overlapped so this isn't kept alive artificially - if (_asyncProcessingState != AsyncProcessingState.None) + if (_asyncCompletionOwnership != 0) { - // If the state isn't None, then either it's Set, in which case there's state to cleanup, - // or it's InProcess, which can happen if the async operation was scheduled and actually - // completed asynchronously (invoking this logic) but the main thread initiating the - // operation stalled and hasn't yet transitioned the memory handle to being initialized, - // in which case we need to wait for that logic to complete initializing it so that we - // can safely uninitialize it. - CompleteCoreSpin(); + // If the state isn't 0, then the operation didn't complete synchronously, in which case there's state to cleanup. + CleanupIOCPResult(); } // Separate out to help inline the CompleteCore fast path, as CompleteCore is used with all operations. - // We want to optimize for the case where the async operation actually completes synchronously, in particular - // for sends and receives. - void CompleteCoreSpin() + // We want to optimize for the case where the async operation actually completes synchronously, without + // having registered any state yet, in particular for sends and receives. + void CleanupIOCPResult() { - // The operation could complete so quickly that it races with the code - // initiating it. Wait until that initiation code has completed before - // we try to undo the state it configures. - SpinWait sw = default; - while (_asyncProcessingState == AsyncProcessingState.InProcess) - { - sw.SpinOnce(); - } - - Debug.Assert(_asyncProcessingState == AsyncProcessingState.Set); - - // Remove any cancellation registration. First dispose the registration + // Remove any cancellation state. First dispose the registration // to ensure that cancellation will either never fine or will have completed // firing before we continue. Only then can we safely null out the overlapped. _registrationToCancelPendingIO.Dispose(); @@ -1211,8 +1176,10 @@ void CompleteCoreSpin() // Release any GC handles. _singleBufferHandle.Dispose(); + _singleBufferHandle = default; - _asyncProcessingState = AsyncProcessingState.None; + // Finished cleanup. + _asyncCompletionOwnership = 0; } } @@ -1259,22 +1226,47 @@ private void FinishOperationSendPackets() Debug.Assert(saeaBox.Value != null); SocketAsyncEventArgs saea = saeaBox.Value; + // We need to coordinate with the launching thread, just in case it hasn't yet finished setting up the operation. + // We typically expect the launching thread to have already completed setup, in which case _asyncCompletionOwnership + // will be 1, so we do a fast non-synchronized check to see if it's still 0, and only if it is do we proceed to + // pack the results for use with an interlocked coordination with that thread. + if (saea._asyncCompletionOwnership == 0) + { + // Pack the error code and number of bytes transferred into a single ulong we can store into + // _asyncCompletionOwnership. If the field was already set by the launcher, the value won't + // be needed, but if this callback wins the race condition and transfers ownership to the + // launcher to handle completion and clean up, transfering these values over prevents needing + // to make an additional call to WSAGetOverlappedResult. + Debug.Assert(numBytes <= int.MaxValue, "We rely on being able to set the top bit to ensure the whole packed result isn't 0."); + ulong packedResult = (1ul << 63) | ((ulong)numBytes << 32) | errorCode; + + if (Interlocked.Exchange(ref saea._asyncCompletionOwnership, packedResult) == 0) + { + // The operation completed asynchronously so quickly that the thread launching the operation still hasn't finished setting + // up the state for the operation. Leave all cleanup and completion logic to that thread. + return; + } + } + + // This callback owns the completion and cleanup for the operation. if ((SocketError)errorCode == SocketError.Success) { - saea.FreeNativeOverlapped(nativeOverlapped); + saea.FreeNativeOverlapped(ref nativeOverlapped); saea.FinishOperationAsyncSuccess((int)numBytes, SocketFlags.None); } else { - saea.HandleCompletionPortCallbackError(errorCode, numBytes, nativeOverlapped); + SocketError socketError = (SocketError)errorCode; + SocketFlags socketFlags = SocketFlags.None; + saea.GetOverlappedResultOnError(ref socketError, ref numBytes, ref socketFlags, nativeOverlapped); + + saea.FreeNativeOverlapped(ref nativeOverlapped); + saea.FinishOperationAsyncFailure(socketError, (int)numBytes, socketFlags); } }; - private unsafe void HandleCompletionPortCallbackError(uint errorCode, uint numBytes, NativeOverlapped* nativeOverlapped) + private unsafe void GetOverlappedResultOnError(ref SocketError socketError, ref uint numBytes, ref SocketFlags socketFlags, NativeOverlapped* nativeOverlapped) { - SocketError socketError = (SocketError)errorCode; - SocketFlags socketFlags = SocketFlags.None; - if (socketError != SocketError.OperationAborted) { if (_currentSocket!.Disposed) @@ -1285,26 +1277,17 @@ private unsafe void HandleCompletionPortCallbackError(uint errorCode, uint numBy { try { - // The Async IO completed with a failure. - // here we need to call WSAGetOverlappedResult() just so GetLastSocketError() will return the correct error. - Interop.Winsock.WSAGetOverlappedResult( - _currentSocket.SafeHandle, - nativeOverlapped, - out numBytes, - false, - out socketFlags); + // Call WSAGetOverlappedResult() so GetLastSocketError() will return the correct error. + Interop.Winsock.WSAGetOverlappedResult(_currentSocket.SafeHandle, nativeOverlapped, out numBytes, wait: false, out socketFlags); socketError = SocketPal.GetLastSocketError(); } catch { - // _currentSocket.Disposed check above does not always work since this code is subject to race conditions. + // _currentSocket may have been disposed after the Disposed check above, in which case the P/Invoke may throw. socketError = SocketError.OperationAborted; } } } - - FreeNativeOverlapped(nativeOverlapped); - FinishOperationAsyncFailure(socketError, (int)numBytes, socketFlags); } } } diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Windows.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Windows.cs index 1722de1aaabf3c..05ec85840fd082 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Windows.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/SocketPal.Windows.cs @@ -667,7 +667,7 @@ public static SocketError SetIPv6MulticastOption(SafeSocketHandle handle, Socket handle, SocketOptionLevel.IPv6, optionName, - ref ipmr, + ipmr, Interop.Winsock.IPv6MulticastRequest.Size); return errorCode == SocketError.SocketError ? GetLastSocketError() : SocketError.Success; } diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs index 51ffe1126953c5..576b44bc67339d 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPClient.cs @@ -45,15 +45,9 @@ public TcpClient(AddressFamily family) } // Initializes a new instance of the System.Net.Sockets.TcpClient class with the specified end point. - public TcpClient(IPEndPoint localEP) + public TcpClient(IPEndPoint localEP!!) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, localEP); - - if (localEP == null) - { - throw new ArgumentNullException(nameof(localEP)); - } - _family = localEP.AddressFamily; // set before calling CreateSocket InitializeClientSocket(); _clientSocket.Bind(localEP); @@ -61,14 +55,9 @@ public TcpClient(IPEndPoint localEP) // Initializes a new instance of the System.Net.Sockets.TcpClient class and connects to the specified port on // the specified host. - public TcpClient(string hostname, int port) + public TcpClient(string hostname!!, int port) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, hostname); - - if (hostname == null) - { - throw new ArgumentNullException(nameof(hostname)); - } if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -131,13 +120,9 @@ public bool ExclusiveAddressUse // Connects the Client to the specified port on the specified host. public void Connect(string hostname, int port) { - ThrowIfDisposed(); - if (hostname == null) - { - throw new ArgumentNullException(nameof(hostname)); - } + ArgumentNullException.ThrowIfNull(hostname); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -231,10 +216,7 @@ public void Connect(IPAddress address, int port) { ThrowIfDisposed(); - if (address == null) - { - throw new ArgumentNullException(nameof(address)); - } + ArgumentNullException.ThrowIfNull(address); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -249,10 +231,7 @@ public void Connect(IPEndPoint remoteEP) { ThrowIfDisposed(); - if (remoteEP == null) - { - throw new ArgumentNullException(nameof(remoteEP)); - } + ArgumentNullException.ThrowIfNull(remoteEP); Client.Connect(remoteEP); _family = Client.AddressFamily; diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPListener.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPListener.cs index d0f60437899edd..6eaa540d4cbb14 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPListener.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/TCPListener.cs @@ -24,10 +24,7 @@ public TcpListener(IPEndPoint localEP) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, localEP); - if (localEP == null) - { - throw new ArgumentNullException(nameof(localEP)); - } + ArgumentNullException.ThrowIfNull(localEP); _serverSocketEP = localEP; _serverSocket = new Socket(_serverSocketEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp); } @@ -38,10 +35,7 @@ public TcpListener(IPAddress localaddr, int port) { if (NetEventSource.Log.IsEnabled()) NetEventSource.Info(this, localaddr); - if (localaddr == null) - { - throw new ArgumentNullException(nameof(localaddr)); - } + ArgumentNullException.ThrowIfNull(localaddr); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs index e662dcb648173f..b4a6c31422b540 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs @@ -84,14 +84,8 @@ public UdpClient(int port, AddressFamily family) // Creates a new instance of the UdpClient class that communicates on the // specified end point. - public UdpClient(IPEndPoint localEP) + public UdpClient(IPEndPoint localEP!!) { - // Validate input parameters. - if (localEP == null) - { - throw new ArgumentNullException(nameof(localEP)); - } - // IPv6 Changes: Set the AddressFamily of this object before // creating the client socket. _family = localEP.AddressFamily; @@ -318,10 +312,7 @@ private void ValidateDatagram(byte[] datagram, int bytes, IPEndPoint? endPoint) { ThrowIfDisposed(); - if (datagram == null) - { - throw new ArgumentNullException(nameof(datagram)); - } + ArgumentNullException.ThrowIfNull(datagram); if (bytes > datagram.Length || bytes < 0) { @@ -420,11 +411,7 @@ public void JoinMulticastGroup(IPAddress multicastAddr) { // Validate input parameters. ThrowIfDisposed(); - - if (multicastAddr == null) - { - throw new ArgumentNullException(nameof(multicastAddr)); - } + ArgumentNullException.ThrowIfNull(multicastAddr); // IPv6 Changes: we need to create the correct MulticastOption and // must also check for address family compatibility. @@ -479,10 +466,7 @@ public void JoinMulticastGroup(int ifindex, IPAddress multicastAddr) ThrowIfDisposed(); // Validate input parameters. - if (multicastAddr == null) - { - throw new ArgumentNullException(nameof(multicastAddr)); - } + ArgumentNullException.ThrowIfNull(multicastAddr); if (ifindex < 0) { @@ -510,10 +494,7 @@ public void JoinMulticastGroup(IPAddress multicastAddr, int timeToLive) ThrowIfDisposed(); // parameter validation; - if (multicastAddr == null) - { - throw new ArgumentNullException(nameof(multicastAddr)); - } + ArgumentNullException.ThrowIfNull(multicastAddr); if (!RangeValidationHelpers.ValidateRange(timeToLive, 0, 255)) { throw new ArgumentOutOfRangeException(nameof(timeToLive)); @@ -535,10 +516,7 @@ public void DropMulticastGroup(IPAddress multicastAddr) ThrowIfDisposed(); // Validate input parameters. - if (multicastAddr == null) - { - throw new ArgumentNullException(nameof(multicastAddr)); - } + ArgumentNullException.ThrowIfNull(multicastAddr); // IPv6 Changes: we need to create the correct MulticastOption and // must also check for address family compatibility. @@ -573,10 +551,7 @@ public void DropMulticastGroup(IPAddress multicastAddr, int ifindex) ThrowIfDisposed(); // Validate input parameters. - if (multicastAddr == null) - { - throw new ArgumentNullException(nameof(multicastAddr)); - } + ArgumentNullException.ThrowIfNull(multicastAddr); if (ifindex < 0) { @@ -750,10 +725,7 @@ private void CreateClientSocket() public UdpClient(string hostname, int port) { - if (hostname == null) - { - throw new ArgumentNullException(nameof(hostname)); - } + ArgumentNullException.ThrowIfNull(hostname); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -775,10 +747,7 @@ public void Connect(string hostname, int port) { ThrowIfDisposed(); - if (hostname == null) - { - throw new ArgumentNullException(nameof(hostname)); - } + ArgumentNullException.ThrowIfNull(hostname); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -904,10 +873,7 @@ public void Connect(IPAddress addr, int port) { ThrowIfDisposed(); - if (addr == null) - { - throw new ArgumentNullException(nameof(addr)); - } + ArgumentNullException.ThrowIfNull(addr); if (!TcpValidationHelpers.ValidatePortNumber(port)) { throw new ArgumentOutOfRangeException(nameof(port)); @@ -922,10 +888,7 @@ public void Connect(IPEndPoint endPoint) { ThrowIfDisposed(); - if (endPoint == null) - { - throw new ArgumentNullException(nameof(endPoint)); - } + ArgumentNullException.ThrowIfNull(endPoint); CheckForBroadcast(endPoint.Address); Client.Connect(endPoint); @@ -973,10 +936,7 @@ public int Send(byte[] dgram, int bytes, IPEndPoint? endPoint) { ThrowIfDisposed(); - if (dgram == null) - { - throw new ArgumentNullException(nameof(dgram)); - } + ArgumentNullException.ThrowIfNull(dgram); if (_active && endPoint != null) { // Do not allow sending packets to arbitrary host when connected @@ -1052,10 +1012,7 @@ public int Send(byte[] dgram, int bytes) { ThrowIfDisposed(); - if (dgram == null) - { - throw new ArgumentNullException(nameof(dgram)); - } + ArgumentNullException.ThrowIfNull(dgram); if (!_active) { // only allowed on connected socket diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UdpReceiveResult.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UdpReceiveResult.cs index 55535f0583009e..060012e96967ea 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UdpReceiveResult.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UdpReceiveResult.cs @@ -18,18 +18,8 @@ public struct UdpReceiveResult : IEquatable /// /// A buffer for data to receive in the UDP packet /// The remote endpoint of the UDP packet - public UdpReceiveResult(byte[] buffer, IPEndPoint remoteEndPoint) + public UdpReceiveResult(byte[] buffer!!, IPEndPoint remoteEndPoint!!) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - - if (remoteEndPoint == null) - { - throw new ArgumentNullException(nameof(remoteEndPoint)); - } - _buffer = buffer; _remoteEndPoint = remoteEndPoint; } diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs index f400873433c6e5..b69e6d82965b24 100644 --- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs +++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs @@ -22,13 +22,8 @@ public UnixDomainSocketEndPoint(string path) : this(path, null) { } - private UnixDomainSocketEndPoint(string path, string? boundFileName) + private UnixDomainSocketEndPoint(string path!!, string? boundFileName) { - if (path == null) - { - throw new ArgumentNullException(nameof(path)); - } - BoundFileName = boundFileName; // Pathname socket addresses should be null-terminated. @@ -61,13 +56,8 @@ private UnixDomainSocketEndPoint(string path, string? boundFileName) internal static int MaxAddressSize => s_nativeAddressSize; - internal UnixDomainSocketEndPoint(SocketAddress socketAddress) + internal UnixDomainSocketEndPoint(SocketAddress socketAddress!!) { - if (socketAddress == null) - { - throw new ArgumentNullException(nameof(socketAddress)); - } - if (socketAddress.Family != EndPointAddressFamily || socketAddress.Size > s_nativeAddressSize) { diff --git a/src/libraries/System.Net.WebClient/src/System/Net/WebClient.cs b/src/libraries/System.Net.WebClient/src/System/Net/WebClient.cs index d23488f44c02ce..c597c50beb5e97 100644 --- a/src/libraries/System.Net.WebClient/src/System/Net/WebClient.cs +++ b/src/libraries/System.Net.WebClient/src/System/Net/WebClient.cs @@ -278,10 +278,8 @@ private async Task GetWebResponseTaskAsync(WebRequest request) public byte[] DownloadData(string address) => DownloadData(GetUri(address)); - public byte[] DownloadData(Uri address) + public byte[] DownloadData(Uri address!!) { - ArgumentNullException.ThrowIfNull(address); - StartOperation(); try { @@ -318,11 +316,8 @@ private byte[] DownloadDataInternal(Uri address, out WebRequest request) public void DownloadFile(string address, string fileName) => DownloadFile(GetUri(address), fileName); - public void DownloadFile(Uri address, string fileName) + public void DownloadFile(Uri address!!, string fileName!!) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(fileName); - WebRequest? request = null; FileStream? fs = null; bool succeeded = false; @@ -357,10 +352,8 @@ public void DownloadFile(Uri address, string fileName) public Stream OpenRead(string address) => OpenRead(GetUri(address)); - public Stream OpenRead(Uri address) + public Stream OpenRead(Uri address!!) { - ArgumentNullException.ThrowIfNull(address); - WebRequest? request = null; StartOperation(); try @@ -390,13 +383,9 @@ public Stream OpenWrite(Uri address) => public Stream OpenWrite(string address, string? method) => OpenWrite(GetUri(address), method); - public Stream OpenWrite(Uri address, string? method) + public Stream OpenWrite(Uri address!!, string? method) { - ArgumentNullException.ThrowIfNull(address); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); WebRequest? request = null; StartOperation(); @@ -430,14 +419,9 @@ public byte[] UploadData(Uri address, byte[] data) => public byte[] UploadData(string address, string? method, byte[] data) => UploadData(GetUri(address), method, data); - public byte[] UploadData(Uri address, string? method, byte[] data) + public byte[] UploadData(Uri address!!, string? method, byte[] data!!) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); StartOperation(); try @@ -551,14 +535,9 @@ public byte[] UploadFile(Uri address, string fileName) => public byte[] UploadFile(string address, string? method, string fileName) => UploadFile(GetUri(address), method, fileName); - public byte[] UploadFile(Uri address, string? method, string fileName) + public byte[] UploadFile(Uri address!!, string? method, string fileName!!) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(fileName); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); FileStream? fs = null; WebRequest? request = null; @@ -624,14 +603,9 @@ public byte[] UploadValues(Uri address, NameValueCollection data) => public byte[] UploadValues(string address, string? method, NameValueCollection data) => UploadValues(GetUri(address), method, data); - public byte[] UploadValues(Uri address, string? method, NameValueCollection data) + public byte[] UploadValues(Uri address!!, string? method, NameValueCollection data!!) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); WebRequest? request = null; StartOperation(); @@ -663,14 +637,9 @@ public string UploadString(Uri address, string data) => public string UploadString(string address, string? method, string data) => UploadString(GetUri(address), method, data); - public string UploadString(Uri address, string? method, string data) + public string UploadString(Uri address!!, string? method, string data!!) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); StartOperation(); try @@ -689,10 +658,8 @@ public string UploadString(Uri address, string? method, string data) public string DownloadString(string address) => DownloadString(GetUri(address)); - public string DownloadString(Uri address) + public string DownloadString(Uri address!!) { - ArgumentNullException.ThrowIfNull(address); - StartOperation(); try { @@ -779,10 +746,8 @@ private void CopyHeadersTo(WebRequest request) } } - private Uri GetUri(string address) + private Uri GetUri(string address!!) { - ArgumentNullException.ThrowIfNull(address); - Uri? uri; if (_baseAddress != null) { @@ -799,10 +764,8 @@ private Uri GetUri(string address) return GetUri(uri); } - private Uri GetUri(Uri address) + private Uri GetUri(Uri address!!) { - ArgumentNullException.ThrowIfNull(address); - Uri? uri = address; if (!address.IsAbsoluteUri && _baseAddress != null && !Uri.TryCreate(_baseAddress, address, out uri)) @@ -1295,10 +1258,8 @@ private void InvokeOperationCompleted(AsyncOperation asyncOp, SendOrPostCallback public void OpenReadAsync(Uri address) => OpenReadAsync(address, null); - public void OpenReadAsync(Uri address, object? userToken) + public void OpenReadAsync(Uri address!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - AsyncOperation asyncOp = StartAsyncOperation(userToken); try { @@ -1333,13 +1294,9 @@ public void OpenWriteAsync(Uri address) => public void OpenWriteAsync(Uri address, string? method) => OpenWriteAsync(address, method, null); - public void OpenWriteAsync(Uri address, string? method, object? userToken) + public void OpenWriteAsync(Uri address!!, string? method, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); AsyncOperation asyncOp = StartAsyncOperation(userToken); try @@ -1394,10 +1351,8 @@ private void DownloadStringAsyncCallback(byte[]? returnBytes, Exception? excepti public void DownloadStringAsync(Uri address) => DownloadStringAsync(address, null); - public void DownloadStringAsync(Uri address, object? userToken) + public void DownloadStringAsync(Uri address!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - AsyncOperation asyncOp = StartAsyncOperation(userToken); try { @@ -1420,10 +1375,8 @@ private void DownloadDataAsyncCallback(byte[]? returnBytes, Exception? exception public void DownloadDataAsync(Uri address) => DownloadDataAsync(address, null); - public void DownloadDataAsync(Uri address, object? userToken) + public void DownloadDataAsync(Uri address!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - AsyncOperation asyncOp = StartAsyncOperation(userToken); try { @@ -1446,11 +1399,8 @@ private void DownloadFileAsyncCallback(byte[]? returnBytes, Exception? exception public void DownloadFileAsync(Uri address, string fileName) => DownloadFileAsync(address, fileName, null); - public void DownloadFileAsync(Uri address, string fileName, object? userToken) + public void DownloadFileAsync(Uri address!!, string fileName!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(fileName); - FileStream? fs = null; AsyncOperation asyncOp = StartAsyncOperation(userToken); try @@ -1472,14 +1422,9 @@ public void UploadStringAsync(Uri address, string data) => public void UploadStringAsync(Uri address, string? method, string data) => UploadStringAsync(address, method, data, null); - public void UploadStringAsync(Uri address, string? method, string data, object? userToken) + public void UploadStringAsync(Uri address!!, string? method, string data!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); AsyncOperation asyncOp = StartAsyncOperation(userToken); try @@ -1523,14 +1468,9 @@ public void UploadDataAsync(Uri address, byte[] data) => public void UploadDataAsync(Uri address, string? method, byte[] data) => UploadDataAsync(address, method, data, null); - public void UploadDataAsync(Uri address, string? method, byte[] data, object? userToken) + public void UploadDataAsync(Uri address!!, string? method, byte[] data!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); AsyncOperation asyncOp = StartAsyncOperation(userToken); try @@ -1564,14 +1504,9 @@ public void UploadFileAsync(Uri address, string fileName) => public void UploadFileAsync(Uri address, string? method, string fileName) => UploadFileAsync(address, method, fileName, null); - public void UploadFileAsync(Uri address, string? method, string fileName, object? userToken) + public void UploadFileAsync(Uri address!!, string? method, string fileName!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(fileName); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); FileStream? fs = null; AsyncOperation asyncOp = StartAsyncOperation(userToken); @@ -1603,14 +1538,9 @@ public void UploadValuesAsync(Uri address, NameValueCollection data) => public void UploadValuesAsync(Uri address, string? method, NameValueCollection data) => UploadValuesAsync(address, method, data, null); - public void UploadValuesAsync(Uri address, string? method, NameValueCollection data, object? userToken) + public void UploadValuesAsync(Uri address!!, string? method, NameValueCollection data!!, object? userToken) { - ArgumentNullException.ThrowIfNull(address); - ArgumentNullException.ThrowIfNull(data); - if (method == null) - { - method = MapToDefaultMethod(address); - } + method ??= MapToDefaultMethod(address); AsyncOperation asyncOp = StartAsyncOperation(userToken); try diff --git a/src/libraries/System.Net.WebProxy/src/System/Net/WebProxy.cs b/src/libraries/System.Net.WebProxy/src/System/Net/WebProxy.cs index a8b9d60651d8b0..195fe6979961ed 100644 --- a/src/libraries/System.Net.WebProxy/src/System/Net/WebProxy.cs +++ b/src/libraries/System.Net.WebProxy/src/System/Net/WebProxy.cs @@ -92,13 +92,8 @@ public bool UseDefaultCredentials set => Credentials = value ? CredentialCache.DefaultCredentials : null; } - public Uri? GetProxy(Uri destination) + public Uri? GetProxy(Uri destination!!) { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - return IsBypassed(destination) ? destination : Address; } @@ -176,13 +171,8 @@ private bool IsMatchInBypassList(Uri input) return false; } - public bool IsBypassed(Uri host) + public bool IsBypassed(Uri host!!) { - if (host == null) - { - throw new ArgumentNullException(nameof(host)); - } - return Address == null || (BypassProxyOnLocal && IsLocal(host)) || diff --git a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs index 75935a7147103d..92e30113c5cf6f 100644 --- a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs +++ b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs @@ -365,4 +365,4 @@ private WebSocketState GetReadyState() }; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs index 7159283212d601..1db846074a6446 100644 --- a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs +++ b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocket.cs @@ -50,12 +50,8 @@ public override WebSocketState State } } - public Task ConnectAsync(Uri uri, CancellationToken cancellationToken) + public Task ConnectAsync(Uri uri!!, CancellationToken cancellationToken) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } if (!uri.IsAbsoluteUri) { throw new ArgumentException(SR.net_uri_NotAbsolute, nameof(uri)); diff --git a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocketOptions.cs b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocketOptions.cs index 5ab2ad51d94eb3..d58cda99112eec 100644 --- a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocketOptions.cs +++ b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/ClientWebSocketOptions.cs @@ -84,7 +84,8 @@ public X509CertificateCollection ClientCertificates set { ThrowIfReadOnly(); - _clientCertificates = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _clientCertificates = value; } } diff --git a/src/libraries/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj b/src/libraries/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj index c553a385144b32..b400a1d5ebcedd 100644 --- a/src/libraries/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj +++ b/src/libraries/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj @@ -20,20 +20,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/libraries/System.Net.WebSockets/src/System/Net/WebSockets/WebSocket.cs b/src/libraries/System.Net.WebSockets/src/System/Net/WebSockets/WebSocket.cs index 5f24f9a98083a3..0627dca37a8c71 100644 --- a/src/libraries/System.Net.WebSockets/src/System/Net/WebSockets/WebSocket.cs +++ b/src/libraries/System.Net.WebSockets/src/System/Net/WebSockets/WebSocket.cs @@ -138,13 +138,8 @@ public static ArraySegment CreateServerBuffer(int receiveBufferSize) /// The agreed upon sub-protocol that was used when creating the connection. /// The keep-alive interval to use, or to disable keep-alives. /// The created . - public static WebSocket CreateFromStream(Stream stream, bool isServer, string? subProtocol, TimeSpan keepAliveInterval) + public static WebSocket CreateFromStream(Stream stream!!, bool isServer, string? subProtocol, TimeSpan keepAliveInterval) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - if (!stream.CanRead || !stream.CanWrite) { throw new ArgumentException(!stream.CanRead ? SR.NotReadableStream : SR.NotWriteableStream, nameof(stream)); @@ -168,14 +163,8 @@ public static WebSocket CreateFromStream(Stream stream, bool isServer, string? s /// Creates a that operates on a representing a web socket connection. /// The for the connection. /// The options with which the websocket must be created. - public static WebSocket CreateFromStream(Stream stream, WebSocketCreationOptions options) + public static WebSocket CreateFromStream(Stream stream!!, WebSocketCreationOptions options!!) { - if (stream is null) - throw new ArgumentNullException(nameof(stream)); - - if (options is null) - throw new ArgumentNullException(nameof(options)); - if (!stream.CanRead || !stream.CanWrite) throw new ArgumentException(!stream.CanRead ? SR.NotReadableStream : SR.NotWriteableStream, nameof(stream)); @@ -196,15 +185,10 @@ public static void RegisterPrefixes() } [EditorBrowsable(EditorBrowsableState.Never)] - public static WebSocket CreateClientWebSocket(Stream innerStream, + public static WebSocket CreateClientWebSocket(Stream innerStream!!, string? subProtocol, int receiveBufferSize, int sendBufferSize, TimeSpan keepAliveInterval, bool useZeroMaskingKey, ArraySegment internalBuffer) { - if (innerStream == null) - { - throw new ArgumentNullException(nameof(innerStream)); - } - if (!innerStream.CanRead || !innerStream.CanWrite) { throw new ArgumentException(!innerStream.CanRead ? SR.NotReadableStream : SR.NotWriteableStream, nameof(innerStream)); diff --git a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/DenseTensor.cs b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/DenseTensor.cs index 925512c9956fc5..88a46e604acd56 100644 --- a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/DenseTensor.cs +++ b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/DenseTensor.cs @@ -100,12 +100,8 @@ public override void SetValue(int index, T value) Buffer.Span[index] = value; } - protected override void CopyTo(T[] array, int arrayIndex) + protected override void CopyTo(T[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } if (array.Length < arrayIndex + Length) { throw new ArgumentException(SR.NumberGreaterThenAvailableSpace, nameof(array)); diff --git a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/Tensor.cs b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/Tensor.cs index 83c6947d76a50c..cb31580bc9d9cd 100644 --- a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/Tensor.cs +++ b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/Tensor.cs @@ -308,13 +308,8 @@ protected Tensor(ReadOnlySpan dimensions, bool reverseStride) /// /// Array from which to derive dimensions. /// False (default) to indicate that the first dimension is most major (farthest apart) and the last dimension is most minor (closest together): akin to row-major in a rank-2 tensor. True to indicate that the last dimension is most major (farthest apart) and the first dimension is most minor (closest together): akin to column-major in a rank-2 tensor. - protected Tensor(Array fromArray, bool reverseStride) + protected Tensor(Array fromArray!!, bool reverseStride) { - if (fromArray == null) - { - throw new ArgumentNullException(nameof(fromArray)); - } - if (fromArray.Rank == 0) { throw new ArgumentException(SR.ArrayMustContainElements, nameof(fromArray)); @@ -636,24 +631,16 @@ private Tensor GetTriangle(int offset, bool upper) /// /// A one-dimensional array of integers that represent the indices specifying the position of the element to get. /// The value at the specified position in this Tensor. - public virtual T this[params int[] indices] + public virtual T this[params int[] indices!!] { get { - if (indices == null) - { - throw new ArgumentNullException(nameof(indices)); - } var span = new ReadOnlySpan(indices); return this[span]; } set { - if (indices == null) - { - throw new ArgumentNullException(nameof(indices)); - } var span = new ReadOnlySpan(indices); this[span] = value; } @@ -930,12 +917,8 @@ void ICollection.CopyTo(T[] array, int arrayIndex) /// /// The zero-based index in array at which copying begins. /// - protected virtual void CopyTo(T[] array, int arrayIndex) + protected virtual void CopyTo(T[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } if (array.Length < arrayIndex + Length) { throw new ArgumentException(SR.NumberGreaterThenAvailableSpace, nameof(array)); diff --git a/src/libraries/System.Numerics.Vectors/System.Numerics.Vectors.sln b/src/libraries/System.Numerics.Vectors/System.Numerics.Vectors.sln index c829f21df46ba7..e05d844d41695a 100644 --- a/src/libraries/System.Numerics.Vectors/System.Numerics.Vectors.sln +++ b/src/libraries/System.Numerics.Vectors/System.Numerics.Vectors.sln @@ -26,18 +26,27 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{ED90FF1C-59D4-4AB0-860E-2872ECA1BFEC}" EndProject Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\System.Private.CoreLib\src\System.Private.CoreLib.Shared.projitems*{634a3b2b-09f5-4810-b630-ade4d36c47df}*SharedItemsImports = 5 + EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution + Checked|Any CPU = Checked|Any CPU + Checked|x64 = Checked|x64 + Checked|x86 = Checked|x86 Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 - Checked|Any CPU = Checked|Any CPU - Checked|x64 = Checked|x64 - Checked|x86 = Checked|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|Any CPU.ActiveCfg = Checked|x64 + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|Any CPU.Build.0 = Checked|x64 + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x64.ActiveCfg = Checked|x64 + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x64.Build.0 = Checked|x64 + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x86.ActiveCfg = Checked|x86 + {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x86.Build.0 = Checked|x86 {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Debug|Any CPU.ActiveCfg = Debug|x64 {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Debug|Any CPU.Build.0 = Debug|x64 {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Debug|x64.ActiveCfg = Debug|x64 @@ -50,12 +59,12 @@ Global {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Release|x64.Build.0 = Release|x64 {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Release|x86.ActiveCfg = Release|x86 {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Release|x86.Build.0 = Release|x86 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|Any CPU.ActiveCfg = Checked|x64 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|Any CPU.Build.0 = Checked|x64 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x64.ActiveCfg = Checked|x64 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x64.Build.0 = Checked|x64 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x86.ActiveCfg = Checked|x86 - {634A3B2B-09F5-4810-B630-ADE4D36C47DF}.Checked|x86.Build.0 = Checked|x86 + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|Any CPU.Build.0 = Debug|Any CPU + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x64.ActiveCfg = Debug|Any CPU + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x64.Build.0 = Debug|Any CPU + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x86.ActiveCfg = Debug|Any CPU + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x86.Build.0 = Debug|Any CPU {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Debug|Any CPU.Build.0 = Debug|Any CPU {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -68,12 +77,12 @@ Global {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Release|x64.Build.0 = Release|Any CPU {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Release|x86.ActiveCfg = Release|Any CPU {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Release|x86.Build.0 = Release|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|Any CPU.Build.0 = Debug|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x64.ActiveCfg = Debug|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x64.Build.0 = Debug|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x86.ActiveCfg = Debug|Any CPU - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F}.Checked|x86.Build.0 = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|Any CPU.Build.0 = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x64.ActiveCfg = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x64.Build.0 = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x86.ActiveCfg = Debug|Any CPU + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x86.Build.0 = Debug|Any CPU {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -86,12 +95,12 @@ Global {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Release|x64.Build.0 = Release|Any CPU {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Release|x86.ActiveCfg = Release|Any CPU {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Release|x86.Build.0 = Release|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|Any CPU.Build.0 = Debug|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x64.ActiveCfg = Debug|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x64.Build.0 = Debug|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x86.ActiveCfg = Debug|Any CPU - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7}.Checked|x86.Build.0 = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|Any CPU.Build.0 = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x64.ActiveCfg = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x64.Build.0 = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x86.ActiveCfg = Debug|Any CPU + {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x86.Build.0 = Debug|Any CPU {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Debug|Any CPU.Build.0 = Debug|Any CPU {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -104,12 +113,12 @@ Global {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Release|x64.Build.0 = Release|Any CPU {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Release|x86.ActiveCfg = Release|Any CPU {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Release|x86.Build.0 = Release|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|Any CPU.Build.0 = Debug|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x64.ActiveCfg = Debug|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x64.Build.0 = Debug|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x86.ActiveCfg = Debug|Any CPU - {ED450846-85A0-4CED-B4D9-9EB769CF794B}.Checked|x86.Build.0 = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|Any CPU.Build.0 = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x64.ActiveCfg = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x64.Build.0 = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x86.ActiveCfg = Debug|Any CPU + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x86.Build.0 = Debug|Any CPU {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Debug|Any CPU.Build.0 = Debug|Any CPU {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -122,12 +131,12 @@ Global {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Release|x64.Build.0 = Release|Any CPU {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Release|x86.ActiveCfg = Release|Any CPU {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Release|x86.Build.0 = Release|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|Any CPU.Build.0 = Debug|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x64.ActiveCfg = Debug|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x64.Build.0 = Debug|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x86.ActiveCfg = Debug|Any CPU - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B}.Checked|x86.Build.0 = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|Any CPU.Build.0 = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x64.ActiveCfg = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x64.Build.0 = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x86.ActiveCfg = Debug|Any CPU + {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x86.Build.0 = Debug|Any CPU {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Debug|Any CPU.Build.0 = Debug|Any CPU {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -140,12 +149,12 @@ Global {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Release|x64.Build.0 = Release|Any CPU {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Release|x86.ActiveCfg = Release|Any CPU {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Release|x86.Build.0 = Release|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|Any CPU.Build.0 = Debug|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x64.ActiveCfg = Debug|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x64.Build.0 = Debug|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x86.ActiveCfg = Debug|Any CPU - {88F4A78E-4EF9-4EB6-995E-CD24152C4704}.Checked|x86.Build.0 = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|Any CPU.Build.0 = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x64.ActiveCfg = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x64.Build.0 = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x86.ActiveCfg = Debug|Any CPU + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x86.Build.0 = Debug|Any CPU {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Debug|Any CPU.Build.0 = Debug|Any CPU {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -158,12 +167,12 @@ Global {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Release|x64.Build.0 = Release|Any CPU {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Release|x86.ActiveCfg = Release|Any CPU {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Release|x86.Build.0 = Release|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|Any CPU.Build.0 = Debug|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x64.ActiveCfg = Debug|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x64.Build.0 = Debug|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x86.ActiveCfg = Debug|Any CPU - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237}.Checked|x86.Build.0 = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|Any CPU.Build.0 = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x64.ActiveCfg = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x64.Build.0 = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x86.ActiveCfg = Debug|Any CPU + {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x86.Build.0 = Debug|Any CPU {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Debug|Any CPU.Build.0 = Debug|Any CPU {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -176,12 +185,12 @@ Global {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Release|x64.Build.0 = Release|Any CPU {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Release|x86.ActiveCfg = Release|Any CPU {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Release|x86.Build.0 = Release|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|Any CPU.Build.0 = Debug|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x64.ActiveCfg = Debug|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x64.Build.0 = Debug|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x86.ActiveCfg = Debug|Any CPU - {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598}.Checked|x86.Build.0 = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|Any CPU.Build.0 = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x64.ActiveCfg = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x64.Build.0 = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x86.ActiveCfg = Debug|Any CPU + {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x86.Build.0 = Debug|Any CPU {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Debug|Any CPU.Build.0 = Debug|Any CPU {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -194,12 +203,12 @@ Global {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Release|x64.Build.0 = Release|Any CPU {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Release|x86.ActiveCfg = Release|Any CPU {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Release|x86.Build.0 = Release|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|Any CPU.Build.0 = Debug|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x64.ActiveCfg = Debug|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x64.Build.0 = Debug|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x86.ActiveCfg = Debug|Any CPU - {C6EDFA8A-956E-4398-B31F-FA87312BDF9B}.Checked|x86.Build.0 = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|Any CPU.ActiveCfg = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|Any CPU.Build.0 = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x64.ActiveCfg = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x64.Build.0 = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x86.ActiveCfg = Debug|Any CPU + {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x86.Build.0 = Debug|Any CPU {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -212,27 +221,21 @@ Global {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Release|x64.Build.0 = Release|Any CPU {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Release|x86.ActiveCfg = Release|Any CPU {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Release|x86.Build.0 = Release|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|Any CPU.ActiveCfg = Debug|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|Any CPU.Build.0 = Debug|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x64.ActiveCfg = Debug|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x64.Build.0 = Debug|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x86.ActiveCfg = Debug|Any CPU - {F99EAF58-533E-4941-A0C5-5101309D8AB9}.Checked|x86.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {634A3B2B-09F5-4810-B630-ADE4D36C47DF} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} + {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F} = {2C4425BA-8478-4BCB-B616-E6FC28ADEAB9} + {5B2027FA-F43A-4E80-880F-B3A7A2720AA7} = {ED90FF1C-59D4-4AB0-860E-2872ECA1BFEC} {ED450846-85A0-4CED-B4D9-9EB769CF794B} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} + {B38797B1-BB45-4B30-9D4F-79D9F4B3735B} = {2C4425BA-8478-4BCB-B616-E6FC28ADEAB9} {88F4A78E-4EF9-4EB6-995E-CD24152C4704} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} + {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237} = {ED90FF1C-59D4-4AB0-860E-2872ECA1BFEC} {7FAD5E59-D362-4ED6-B3D5-FAD9CD5A2598} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} {C6EDFA8A-956E-4398-B31F-FA87312BDF9B} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} {F99EAF58-533E-4941-A0C5-5101309D8AB9} = {FC10C682-DF71-4EEA-A3A5-E716C1C88AC0} - {9EDBE037-EFE0-4B72-B602-E4C3F0C05F2F} = {2C4425BA-8478-4BCB-B616-E6FC28ADEAB9} - {B38797B1-BB45-4B30-9D4F-79D9F4B3735B} = {2C4425BA-8478-4BCB-B616-E6FC28ADEAB9} - {5B2027FA-F43A-4E80-880F-B3A7A2720AA7} = {ED90FF1C-59D4-4AB0-860E-2872ECA1BFEC} - {DFC21F4E-EC4F-4310-A4DA-B7094AA4D237} = {ED90FF1C-59D4-4AB0-860E-2872ECA1BFEC} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F9EDC1DC-52BE-4C40-90D2-41EE6FB7FA5C} diff --git a/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs b/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs index 556e6672b806cf..b7fbaec38f14f9 100644 --- a/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs +++ b/src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using Xunit; using Xunit.Sdk; @@ -14,6 +15,7 @@ namespace System.Numerics.Tests /// /// Vector{T} tests that use random number generation and a unified generic test structure /// + [RequiresPreviewFeatures] public class GenericVectorTests { // Static constructor in top-level class\ @@ -515,7 +517,7 @@ private void TestIndexerOutOfRange() where T : struct public void StaticOneVectorSingle() { TestStaticOneVector(); } [Fact] public void StaticOneVectorDouble() { TestStaticOneVector(); } - private void TestStaticOneVector() where T : struct + private void TestStaticOneVector() where T : struct, INumber { Vector vector = Vector.One; T oneValue = Util.One(); @@ -546,7 +548,7 @@ private void TestStaticOneVector() where T : struct public void StaticZeroVectorSingle() { TestStaticZeroVector(); } [Fact] public void StaticZeroVectorDouble() { TestStaticZeroVector(); } - private void TestStaticZeroVector() where T : struct + private void TestStaticZeroVector() where T : struct, INumber { Vector vector = Vector.Zero; T zeroValue = Util.Zero(); @@ -812,7 +814,7 @@ private void TestEqualsObject() where T : struct public void EqualsVectorSingle() { TestEqualsVector(); } [Fact] public void EqualsVectorDouble() { TestEqualsVector(); } - private void TestEqualsVector() where T : struct + private void TestEqualsVector() where T : struct, INumber { T[] values = GenerateRandomValuesForVector(); Vector vector1 = new Vector(values); @@ -963,7 +965,7 @@ private void TestToString(string format, IFormatProvider provider) where T : [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void AdditionDouble() { TestAddition(); } - private void TestAddition() where T : struct + private void TestAddition() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -993,7 +995,7 @@ private void TestAddition() where T : struct public void AdditionOverflowUInt64() { TestAdditionOverflow(); } [Fact] public void AdditionOverflowInt64() { TestAdditionOverflow(); } - private void TestAdditionOverflow() where T : struct + private void TestAdditionOverflow() where T : struct, INumber { T maxValue = GetMaxValueExact(); Vector maxValueVector = new Vector(maxValue); @@ -1030,7 +1032,7 @@ private void TestAdditionOverflow() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void SubtractionDouble() { TestSubtraction(); } - private void TestSubtraction() where T : struct + private void TestSubtraction() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1060,7 +1062,7 @@ private void TestSubtraction() where T : struct public void SubtractionOverflowUInt64() { TestSubtractionOverflow(); } [Fact] public void SubtractionOverflowInt64() { TestSubtractionOverflow(); } - private void TestSubtractionOverflow() where T : struct + private void TestSubtractionOverflow() where T : struct, INumber { T minValue = GetMinValueExact(); Vector minValueVector = new Vector(minValue); @@ -1097,7 +1099,7 @@ private void TestSubtractionOverflow() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void MultiplicationDouble() { TestMultiplication(); } - private void TestMultiplication() where T : struct + private void TestMultiplication() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1133,7 +1135,7 @@ private void TestMultiplication() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void MultiplicationWithScalarDouble() { TestMultiplicationWithScalar(); } - private void TestMultiplicationWithScalar() where T : struct + private void TestMultiplicationWithScalar() where T : struct, INumber { T[] values = GenerateRandomValuesForVector(); T factor = Util.GenerateSingleValue(GetMinValue(), GetMaxValue()); @@ -1177,7 +1179,7 @@ private void TestMultiplicationWithScalar() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void DivisionDouble() { TestDivision(); } - private void TestDivision() where T : struct + private void TestDivision() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); values1 = values1.Select(val => val.Equals(Util.Zero()) ? Util.One() : val).ToArray(); // Avoid divide-by-zero @@ -1239,7 +1241,7 @@ private void TestDivisionByZeroException() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void UnaryMinusDouble() { TestUnaryMinus(); } - private void TestUnaryMinus() where T : struct + private void TestUnaryMinus() where T : struct, INumber { T[] values = GenerateRandomValuesForVector(); Vector vector = new Vector(values); @@ -1336,7 +1338,7 @@ private void TestBitwiseOrOperator() where T : struct public void BitwiseXorOperatorUInt64() { TestBitwiseXorOperator(); } [Fact] public void BitwiseXorOperatorInt64() { TestBitwiseXorOperator(); } - private void TestBitwiseXorOperator() where T : struct + private void TestBitwiseXorOperator() where T : struct, IBitwiseOperators { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1368,7 +1370,7 @@ private void TestBitwiseXorOperator() where T : struct public void BitwiseOnesComplementOperatorUInt64() { TestBitwiseOnesComplementOperator(); } [Fact] public void BitwiseOnesComplementOperatorInt64() { TestBitwiseOnesComplementOperator(); } - private void TestBitwiseOnesComplementOperator() where T : struct + private void TestBitwiseOnesComplementOperator() where T : struct, IBitwiseOperators { T[] values1 = GenerateRandomValuesForVector(); Vector randomVector1 = new Vector(values1); @@ -1398,7 +1400,7 @@ private void TestBitwiseOnesComplementOperator() where T : struct public void BitwiseAndNotUInt64() { TestBitwiseAndNot(); } [Fact] public void BitwiseAndNotInt64() { TestBitwiseAndNot(); } - private void TestBitwiseAndNot() where T : struct + private void TestBitwiseAndNot() where T : struct, IBitwiseOperators { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1441,7 +1443,7 @@ private void TestBitwiseAndNot() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void VectorGreaterThanDouble() { TestVectorGreaterThan(); } - private void TestVectorGreaterThan() where T : struct + private void TestVectorGreaterThan() where T : struct, INumber { var values1 = GenerateRandomValuesForVector(); var values2 = GenerateRandomValuesForVector(); @@ -1480,7 +1482,7 @@ private void TestVectorGreaterThan() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void GreaterThanOrEqualDouble() { TestVectorGreaterThanOrEqual(); } - private void TestVectorGreaterThanOrEqual() where T : struct + private void TestVectorGreaterThanOrEqual() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1735,7 +1737,7 @@ private void TestVectorGreaterThanOrEqualAll() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void LessThanDouble() { TestVectorLessThan(); } - private void TestVectorLessThan() where T : struct + private void TestVectorLessThan() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1774,7 +1776,7 @@ private void TestVectorLessThan() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void LessThanOrEqualDouble() { TestVectorLessThanOrEqual(); } - private void TestVectorLessThanOrEqual() where T : struct + private void TestVectorLessThanOrEqual() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -1813,7 +1815,7 @@ private void TestVectorLessThanOrEqual() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void LessThanAnyDouble() { TestVectorLessThanAny(); } - private void TestVectorLessThanAny() where T : struct + private void TestVectorLessThanAny() where T : struct, INumber { T[] values1 = new T[Vector.Count]; for (int g = 0; g < Vector.Count; g++) @@ -1848,7 +1850,7 @@ private void TestVectorLessThanAny() where T : struct public void LessThanAllSingle() { TestVectorLessThanAll(); } [Fact] public void LessThanAllDouble() { TestVectorLessThanAll(); } - private void TestVectorLessThanAll() where T : struct + private void TestVectorLessThanAll() where T : struct, INumber { T[] values1 = new T[Vector.Count]; for (int g = 0; g < Vector.Count; g++) @@ -2003,7 +2005,7 @@ private void TestVectorLessThanOrEqualAll() where T : struct public void VectorEqualsSingle() { TestVectorEquals(); } [Fact] public void VectorEqualsDouble() { TestVectorEquals(); } - private void TestVectorEquals() where T : struct + private void TestVectorEquals() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2; @@ -2048,7 +2050,7 @@ private void TestVectorEquals() where T : struct public void VectorEqualsAnySingle() { TestVectorEqualsAny(); } [Fact] public void VectorEqualsAnyDouble() { TestVectorEqualsAny(); } - private void TestVectorEqualsAny() where T : struct + private void TestVectorEqualsAny() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2; @@ -2096,7 +2098,7 @@ private void TestVectorEqualsAny() where T : struct public void VectorEqualsAllSingle() { TestVectorEqualsAll(); } [Fact] public void VectorEqualsAllDouble() { TestVectorEqualsAll(); } - private void TestVectorEqualsAll() where T : struct + private void TestVectorEqualsAll() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2; @@ -2141,7 +2143,7 @@ private void TestVectorEqualsAll() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void ConditionalSelectDouble() { TestConditionalSelect(); } - private void TestConditionalSelect() where T : struct + private void TestConditionalSelect() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -2195,7 +2197,7 @@ private void TestConditionalSelect() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void DotProductDouble() { TestDotProduct(); } - private void TestDotProduct() where T : struct + private void TestDotProduct() where T : struct, INumber { T[] values1 = Util.GenerateRandomValues(Vector.Count); T[] values2 = Util.GenerateRandomValues(Vector.Count); @@ -2233,7 +2235,7 @@ private void TestDotProduct() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void MaxDouble() { TestMax(); } - private void TestMax() where T : struct + private void TestMax() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -2271,7 +2273,7 @@ private void TestMax() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void MinDouble() { TestMin(); } - private void TestMin() where T : struct + private void TestMin() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -2309,7 +2311,7 @@ private void TestMin() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void SquareRootDouble() { TestSquareRoot(15); } - private void TestSquareRoot(int precision = -1) where T : struct, IEquatable + private void TestSquareRoot(int precision = -1) where T : struct, INumber, IEquatable { T[] values = GenerateRandomValuesForVector(); Vector vector = new Vector(values); @@ -2405,7 +2407,7 @@ public void FloorDouble() [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void AbsDouble() { TestAbs(); } - private void TestAbs() where T : struct + private void TestAbs() where T : struct, INumber { T[] values = Util.GenerateRandomValues(Vector.Count, GetMinValue() + 1, GetMaxValue()); Vector vector = new Vector(values); @@ -2445,7 +2447,7 @@ private void TestAbs() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void MultiplicationReflectionDouble() { TestMultiplicationReflection(); } - private void TestMultiplicationReflection() where T : struct + private void TestMultiplicationReflection() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -2484,7 +2486,7 @@ private void TestMultiplicationReflection() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void AdditionReflectionDouble() { TestAdditionReflection(); } - private void TestAdditionReflection() where T : struct + private void TestAdditionReflection() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); T[] values2 = GenerateRandomValuesForVector(); @@ -2523,7 +2525,7 @@ private void TestAdditionReflection() where T : struct [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/60347", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime), nameof(PlatformDetection.IsX86Process))] public void DivisionReflectionDouble() { TestDivisionReflection(); } - private void TestDivisionReflection() where T : struct + private void TestDivisionReflection() where T : struct, INumber { T[] values1 = GenerateRandomValuesForVector(); values1 = values1.Select(val => val.Equals(Util.Zero()) ? Util.One() : val).ToArray(); // Avoid divide-by-zero diff --git a/src/libraries/System.Numerics.Vectors/tests/System.Numerics.Vectors.Tests.csproj b/src/libraries/System.Numerics.Vectors/tests/System.Numerics.Vectors.Tests.csproj index c8cff8865d09d3..ff4201deb1b70b 100644 --- a/src/libraries/System.Numerics.Vectors/tests/System.Numerics.Vectors.Tests.csproj +++ b/src/libraries/System.Numerics.Vectors/tests/System.Numerics.Vectors.Tests.csproj @@ -17,4 +17,8 @@ + + + + diff --git a/src/libraries/System.Numerics.Vectors/tests/Util.cs b/src/libraries/System.Numerics.Vectors/tests/Util.cs index 135b3fc0e65e4e..74affb1bd52ab4 100644 --- a/src/libraries/System.Numerics.Vectors/tests/Util.cs +++ b/src/libraries/System.Numerics.Vectors/tests/Util.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Runtime.Versioning; + namespace System.Numerics.Tests { public static class Util @@ -89,150 +91,65 @@ public static T GenerateSingleValue(int min = 1, int max = 100) where T : str return value; } - public static T Abs(T value) where T : struct + [RequiresPreviewFeatures] + public static T Abs(T value) where T : INumber { - // unsigned types - if (value is byte) return value; - else if (value is ushort) return value; - else if (value is uint) return value; - else if (value is ulong) return value; - // signed types - else if (value is short) return (T)(ValueType)(short) ( Math.Abs((short) (ValueType)value) ); - else if (value is int) return (T)(ValueType)(int) ( Math.Abs((int) (ValueType)value) ); - else if (value is long) return (T)(ValueType)(long) ( Math.Abs((long) (ValueType)value) ); - else if (value is sbyte) return (T)(ValueType)(sbyte) ( Math.Abs((sbyte) (ValueType)value) ); - else if (value is float) return (T)(ValueType)(float) ( Math.Abs((float) (ValueType)value) ); - else if (value is double) return (T)(ValueType)(double) ( Math.Abs((double)(ValueType)value) ); - else throw new NotImplementedException(); + return T.Abs(value); } - - public static T Sqrt(T value) where T : struct + [RequiresPreviewFeatures] + public static T Sqrt(T value) where T : struct, INumber { - unchecked - { - if (value is short) return (T)(ValueType)(short) ( Math.Sqrt((short) (ValueType)value) ); - else if (value is int) return (T)(ValueType)(int) ( Math.Sqrt((int) (ValueType)value) ); - else if (value is long) return (T)(ValueType)(long) ( Math.Sqrt((long) (ValueType)value) ); - else if (value is ushort) return (T)(ValueType)(ushort) ( Math.Sqrt((ushort)(ValueType)value) ); - else if (value is uint) return (T)(ValueType)(uint) ( Math.Sqrt((uint) (ValueType)value) ); - else if (value is ulong) return (T)(ValueType)(ulong) ( Math.Sqrt((ulong) (ValueType)value) ); - else if (value is byte) return (T)(ValueType)(byte) ( Math.Sqrt((byte) (ValueType)value) ); - else if (value is sbyte) return (T)(ValueType)(sbyte) ( Math.Sqrt((sbyte) (ValueType)value) ); - else if (value is float) return (T)(ValueType)(float) ( Math.Sqrt((float) (ValueType)value) ); - else if (value is double) return (T)(ValueType)(double) ( Math.Sqrt((double)(ValueType)value) ); - else throw new NotImplementedException(); - } + double dValue = Create(value); + double dSqrt = Math.Sqrt(dValue); + return T.CreateTruncating(dSqrt); } - public static T Multiply(T left, T right) where T : struct + [RequiresPreviewFeatures] + private static TSelf Create(TOther value) + where TOther : INumber + where TSelf : INumber + => TSelf.Create(value); + + [RequiresPreviewFeatures] + public static T Multiply(T left, T right) where T : INumber { - unchecked - { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left * (short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left * (int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left * (long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left * (ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left * (uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left * (ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left * (byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left * (sbyte) (ValueType)right ); - else if (left is float) return (T)(ValueType)(float) ( (float) (ValueType)left * (float) (ValueType)right ); - else if (left is double) return (T)(ValueType)(double) ( (double)(ValueType)left * (double)(ValueType)right ); - else throw new NotImplementedException(); - } + return left * right; } - public static T Divide(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static T Divide(T left, T right) where T : INumber { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left / (short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left / (int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left / (long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left / (ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left / (uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left / (ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left / (byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left / (sbyte) (ValueType)right ); - else if (left is float) return (T)(ValueType)(float) ( (float) (ValueType)left / (float) (ValueType)right ); - else if (left is double) return (T)(ValueType)(double) ( (double)(ValueType)left / (double)(ValueType)right ); - else throw new NotImplementedException(); + return left / right; } - public static T Add(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static T Add(T left, T right) where T : INumber { - unchecked - { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left + (short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left + (int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left + (long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left + (ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left + (uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left + (ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left + (byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left + (sbyte) (ValueType)right ); - else if (left is float) return (T)(ValueType)(float) ( (float) (ValueType)left + (float) (ValueType)right ); - else if (left is double) return (T)(ValueType)(double) ( (double)(ValueType)left + (double)(ValueType)right ); - else throw new NotImplementedException(); - } + return left + right; } - public static T Subtract(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static T Subtract(T left, T right) where T : INumber { - unchecked - { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left - (short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left - (int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left - (long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left - (ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left - (uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left - (ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left - (byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left - (sbyte) (ValueType)right ); - else if (left is float) return (T)(ValueType)(float) ( (float) (ValueType)left - (float) (ValueType)right ); - else if (left is double) return (T)(ValueType)(double) ( (double)(ValueType)left - (double)(ValueType)right ); - else throw new NotImplementedException(); - } + return left - right; } - public static T Xor(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static T Xor(T left, T right) where T : IBitwiseOperators { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left ^ (short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left ^ (int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left ^ (long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left ^ (ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left ^ (uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left ^ (ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left ^ (byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left ^ (sbyte) (ValueType)right ); - else throw new NotImplementedException(); + return left ^ right; } - public static T AndNot(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static T AndNot(T left, T right) where T : IBitwiseOperators { - if (left is short) return (T)(ValueType)(short) ( (short) (ValueType)left & ~(short) (ValueType)right ); - else if (left is int) return (T)(ValueType)(int) ( (int) (ValueType)left & ~(int) (ValueType)right ); - else if (left is long) return (T)(ValueType)(long) ( (long) (ValueType)left & ~(long) (ValueType)right ); - else if (left is ushort) return (T)(ValueType)(ushort) ( (ushort)(ValueType)left & ~(ushort)(ValueType)right ); - else if (left is uint) return (T)(ValueType)(uint) ( (uint) (ValueType)left & ~(uint) (ValueType)right ); - else if (left is ulong) return (T)(ValueType)(ulong) ( (ulong) (ValueType)left & ~(ulong) (ValueType)right ); - else if (left is byte) return (T)(ValueType)(byte) ( (byte) (ValueType)left & ~(byte) (ValueType)right ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( (sbyte) (ValueType)left & ~(sbyte) (ValueType)right ); - else throw new NotImplementedException(); + return left & ~ right; } - public static T OnesComplement(T left) where T : struct + [RequiresPreviewFeatures] + public static T OnesComplement(T left) where T : IBitwiseOperators { - unchecked - { - if (left is short) return (T)(ValueType)(short) ( ~(short) (ValueType)left ); - else if (left is int) return (T)(ValueType)(int) ( ~(int) (ValueType)left ); - else if (left is long) return (T)(ValueType)(long) ( ~(long) (ValueType)left ); - else if (left is ushort) return (T)(ValueType)(ushort) ( ~(ushort)(ValueType)left ); - else if (left is uint) return (T)(ValueType)(uint) ( ~(uint) (ValueType)left ); - else if (left is ulong) return (T)(ValueType)(ulong) ( ~(ulong) (ValueType)left ); - else if (left is byte) return (T)(ValueType)(byte) ( ~(byte) (ValueType)left ); - else if (left is sbyte) return (T)(ValueType)(sbyte) ( ~(sbyte) (ValueType)left ); - else throw new NotImplementedException(); - } + return ~left; } public static float Clamp(float value, float min, float max) @@ -240,101 +157,48 @@ public static float Clamp(float value, float min, float max) return value > max ? max : value < min ? min : value; } - public static T Zero() where T : struct + [RequiresPreviewFeatures] + public static T Zero() where T : struct, INumber { - if (typeof(T) == typeof(short)) return (T)(ValueType)(short) 0; - else if (typeof(T) == typeof(int)) return (T)(ValueType)(int) 0; - else if (typeof(T) == typeof(long)) return (T)(ValueType)(long) 0; - else if (typeof(T) == typeof(ushort)) return (T)(ValueType)(ushort) 0; - else if (typeof(T) == typeof(uint)) return (T)(ValueType)(uint) 0; - else if (typeof(T) == typeof(ulong)) return (T)(ValueType)(ulong) 0; - else if (typeof(T) == typeof(byte)) return (T)(ValueType)(byte) 0; - else if (typeof(T) == typeof(sbyte)) return (T)(ValueType)(sbyte) 0; - else if (typeof(T) == typeof(float)) return (T)(ValueType)(float) 0; - else if (typeof(T) == typeof(double)) return (T)(ValueType)(double) 0; - else throw new NotImplementedException(); + return T.Zero; } - public static T One() where T : struct + [RequiresPreviewFeatures] + public static T One() where T : struct, INumber { - if (typeof(T) == typeof(short)) return (T)(ValueType)(short) 1; - else if (typeof(T) == typeof(int)) return (T)(ValueType)(int) 1; - else if (typeof(T) == typeof(long)) return (T)(ValueType)(long) 1; - else if (typeof(T) == typeof(ushort)) return (T)(ValueType)(ushort) 1; - else if (typeof(T) == typeof(uint)) return (T)(ValueType)(uint) 1; - else if (typeof(T) == typeof(ulong)) return (T)(ValueType)(ulong) 1; - else if (typeof(T) == typeof(byte)) return (T)(ValueType)(byte) 1; - else if (typeof(T) == typeof(sbyte)) return (T)(ValueType)(sbyte) 1; - else if (typeof(T) == typeof(float)) return (T)(ValueType)(float) 1; - else if (typeof(T) == typeof(double)) return (T)(ValueType)(double) 1; - else throw new NotImplementedException(); + return T.One; } - public static bool GreaterThan(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static bool GreaterThan(T left, T right) where T : INumber { - if (left is short) return (short)(ValueType) left > (short)(ValueType) right; - else if (left is int) return (int)(ValueType) left > (int)(ValueType) right; - else if (left is long) return (long)(ValueType) left > (long)(ValueType) right; - else if (left is ushort) return (ushort)(ValueType) left > (ushort)(ValueType) right; - else if (left is uint) return (uint)(ValueType) left > (uint)(ValueType) right; - else if (left is ulong) return (ulong)(ValueType) left > (ulong)(ValueType) right; - else if (left is byte) return (byte)(ValueType) left > (byte)(ValueType) right; - else if (left is sbyte) return (sbyte)(ValueType) left > (sbyte)(ValueType) right; - else if (left is float) return (float)(ValueType) left > (float)(ValueType) right; - else if (left is double) return (double)(ValueType) left > (double)(ValueType) right; - else throw new NotImplementedException(); + return left > right; } - public static bool GreaterThanOrEqual(T left, T right) where T : struct - { - if (left is short) return (short)(ValueType) left >= (short)(ValueType) right; - else if (left is int) return (int)(ValueType) left >= (int)(ValueType) right; - else if (left is long) return (long)(ValueType) left >= (long)(ValueType) right; - else if (left is ushort) return (ushort)(ValueType) left >= (ushort)(ValueType) right; - else if (left is uint) return (uint)(ValueType) left >= (uint)(ValueType) right; - else if (left is ulong) return (ulong)(ValueType) left >= (ulong)(ValueType) right; - else if (left is byte) return (byte)(ValueType) left >= (byte)(ValueType) right; - else if (left is sbyte) return (sbyte)(ValueType) left >= (sbyte)(ValueType) right; - else if (left is float) return (float)(ValueType) left >= (float)(ValueType) right; - else if (left is double) return (double)(ValueType) left >= (double)(ValueType) right; - else throw new NotImplementedException(); + [RequiresPreviewFeatures] + public static bool GreaterThanOrEqual(T left, T right) where T : INumber + { + return left >= right; } - public static bool LessThan(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static bool LessThan(T left, T right) where T : INumber { - if (left is short) return (short)(ValueType) left < (short)(ValueType) right; - else if (left is int) return (int)(ValueType) left < (int)(ValueType) right; - else if (left is long) return (long)(ValueType) left < (long)(ValueType) right; - else if (left is ushort) return (ushort)(ValueType) left < (ushort)(ValueType) right; - else if (left is uint) return (uint)(ValueType) left < (uint)(ValueType) right; - else if (left is ulong) return (ulong)(ValueType) left < (ulong)(ValueType) right; - else if (left is byte) return (byte)(ValueType) left < (byte)(ValueType) right; - else if (left is sbyte) return (sbyte)(ValueType) left < (sbyte)(ValueType) right; - else if (left is float) return (float)(ValueType) left < (float)(ValueType) right; - else if (left is double) return (double)(ValueType) left < (double)(ValueType) right; - else throw new NotImplementedException(); + return left < right; } - public static bool LessThanOrEqual(T left, T right) where T : struct + [RequiresPreviewFeatures] + public static bool LessThanOrEqual(T left, T right) where T : INumber { - if (left is short) return (short)(ValueType) left <= (short)(ValueType) right; - else if (left is int) return (int)(ValueType) left <= (int)(ValueType) right; - else if (left is long) return (long)(ValueType) left <= (long)(ValueType) right; - else if (left is ushort) return (ushort)(ValueType) left <= (ushort)(ValueType) right; - else if (left is uint) return (uint)(ValueType) left <= (uint)(ValueType) right; - else if (left is ulong) return (ulong)(ValueType) left <= (ulong)(ValueType) right; - else if (left is byte) return (byte)(ValueType) left <= (byte)(ValueType) right; - else if (left is sbyte) return (sbyte)(ValueType) left <= (sbyte)(ValueType) right; - else if (left is float) return (float)(ValueType) left <= (float)(ValueType) right; - else if (left is double) return (double)(ValueType) left <= (double)(ValueType) right; - else throw new NotImplementedException(); + return left <= right; } - public static bool AnyEqual(T[] left, T[] right) where T : struct + [RequiresPreviewFeatures] + public static bool AnyEqual(T[] left, T[] right) where T : INumber { for (int g = 0; g < left.Length; g++) { - if (((IEquatable)left[g]).Equals(right[g])) + if(left[g] == right[g]) { return true; } @@ -342,11 +206,12 @@ public static bool AnyEqual(T[] left, T[] right) where T : struct return false; } - public static bool AllEqual(T[] left, T[] right) where T : struct + [RequiresPreviewFeatures] + public static bool AllEqual(T[] left, T[] right) where T : INumber { for (int g = 0; g < left.Length; g++) { - if (!((IEquatable)left[g]).Equals(right[g])) + if (left[g] != right[g]) { return false; } diff --git a/src/libraries/System.ObjectModel/src/System/Collections/CollectionHelpers.cs b/src/libraries/System.ObjectModel/src/System/Collections/CollectionHelpers.cs index bff227728ecff7..8e7fbef4f2755c 100644 --- a/src/libraries/System.ObjectModel/src/System/Collections/CollectionHelpers.cs +++ b/src/libraries/System.ObjectModel/src/System/Collections/CollectionHelpers.cs @@ -7,13 +7,8 @@ namespace System.Collections { internal static class CollectionHelpers { - internal static void ValidateCopyToArguments(int sourceCount, Array array, int index) + internal static void ValidateCopyToArguments(int sourceCount, Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.ObjectModel/src/System/Collections/Generic/DebugView.cs b/src/libraries/System.ObjectModel/src/System/Collections/Generic/DebugView.cs index 3ab6a770ca772b..e9c1554d7925bb 100644 --- a/src/libraries/System.ObjectModel/src/System/Collections/Generic/DebugView.cs +++ b/src/libraries/System.ObjectModel/src/System/Collections/Generic/DebugView.cs @@ -9,9 +9,9 @@ internal sealed class CollectionDebugView { private readonly ICollection _collection; - public CollectionDebugView(ICollection collection) + public CollectionDebugView(ICollection collection!!) { - _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + _collection = collection; } [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] diff --git a/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs b/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs index 3c0c0a4068a755..266c58fa3e95c4 100644 --- a/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs +++ b/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/KeyedCollection.cs @@ -69,13 +69,8 @@ public TItem this[TKey key] } } - public bool Contains(TKey key) + public bool Contains(TKey key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - if (dict != null) { return dict.ContainsKey(key); @@ -92,13 +87,8 @@ public bool Contains(TKey key) return false; } - public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TItem item) + public bool TryGetValue(TKey key!!, [MaybeNullWhen(false)] out TItem item) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - if (dict != null) { return dict.TryGetValue(key, out item!); @@ -135,13 +125,8 @@ private bool ContainsItem(TItem item) return false; } - public bool Remove(TKey key) + public bool Remove(TKey key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - if (dict != null) { TItem item; diff --git a/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs b/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs index b5e6eb8747e3d9..1de8f8294be540 100644 --- a/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs +++ b/src/libraries/System.ObjectModel/src/System/Collections/ObjectModel/ObservableCollection.cs @@ -44,7 +44,7 @@ public ObservableCollection() /// same order they are read by the enumerator of the collection. /// /// collection is a null reference - public ObservableCollection(IEnumerable collection) : base(CreateCopy(collection, nameof(collection))) + public ObservableCollection(IEnumerable collection!!) : base(new List(collection)) { } @@ -58,20 +58,10 @@ public ObservableCollection(IEnumerable collection) : base(CreateCopy(collect /// same order they are read by the enumerator of the list. /// /// list is a null reference - public ObservableCollection(List list) : base(CreateCopy(list, nameof(list))) + public ObservableCollection(List list!!) : base(new List(list)) { } - private static List CreateCopy(IEnumerable collection, string paramName) - { - if (collection == null) - { - throw new ArgumentNullException(paramName); - } - - return new List(collection); - } - /// /// Move item at oldIndex to newIndex. /// diff --git a/src/libraries/System.ObjectModel/src/System/Collections/Specialized/NotifyCollectionChangedEventArgs.cs b/src/libraries/System.ObjectModel/src/System/Collections/Specialized/NotifyCollectionChangedEventArgs.cs index 60b9898affd997..49476957e60799 100644 --- a/src/libraries/System.ObjectModel/src/System/Collections/Specialized/NotifyCollectionChangedEventArgs.cs +++ b/src/libraries/System.ObjectModel/src/System/Collections/Specialized/NotifyCollectionChangedEventArgs.cs @@ -114,10 +114,7 @@ public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IL case NotifyCollectionChangedAction.Add: case NotifyCollectionChangedAction.Remove: - if (changedItems == null) - { - throw new ArgumentNullException(nameof(changedItems)); - } + ArgumentNullException.ThrowIfNull(changedItems); if (startingIndex < -1) { throw new ArgumentException(SR.IndexCannotBeNegative, nameof(startingIndex)); @@ -197,14 +194,8 @@ public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action, IL { throw new ArgumentException(SR.Format(SR.WrongActionForCtor, NotifyCollectionChangedAction.Replace), nameof(action)); } - if (newItems == null) - { - throw new ArgumentNullException(nameof(newItems)); - } - if (oldItems == null) - { - throw new ArgumentNullException(nameof(oldItems)); - } + ArgumentNullException.ThrowIfNull(newItems); + ArgumentNullException.ThrowIfNull(oldItems); _action = action; _newItems = new ReadOnlyList(newItems); diff --git a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeConverterAttribute.cs b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeConverterAttribute.cs index 36fa3052c73f53..741741992fa137 100644 --- a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeConverterAttribute.cs +++ b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeConverterAttribute.cs @@ -32,13 +32,8 @@ public TypeConverterAttribute() /// class, using the specified type as the data converter for the object this attribute /// is bound to. /// - public TypeConverterAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type type) + public TypeConverterAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - ConverterTypeName = type.AssemblyQualifiedName!; } @@ -47,13 +42,8 @@ public TypeConverterAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMem /// class, using the specified type name as the data converter for the object this attribute /// is bound to. /// - public TypeConverterAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName) + public TypeConverterAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] string typeName!!) { - if (typeName == null) - { - throw new ArgumentNullException(nameof(typeName)); - } - ConverterTypeName = typeName; } diff --git a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs index 5f42f291038524..2a7e742d19cc31 100644 --- a/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs +++ b/src/libraries/System.ObjectModel/src/System/ComponentModel/TypeDescriptionProviderAttribute.cs @@ -11,26 +11,16 @@ public sealed class TypeDescriptionProviderAttribute : Attribute /// /// Creates a new TypeDescriptionProviderAttribute object. /// - public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string typeName) + public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] string typeName!!) { - if (typeName == null) - { - throw new ArgumentNullException(nameof(typeName)); - } - TypeName = typeName; } /// /// Creates a new TypeDescriptionProviderAttribute object. /// - public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type type) + public TypeDescriptionProviderAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - TypeName = type.AssemblyQualifiedName!; } diff --git a/src/libraries/System.Private.CoreLib/src/Internal/Console.Android.cs b/src/libraries/System.Private.CoreLib/src/Internal/Console.Android.cs index a1f427d0af7f11..ac6278be710336 100644 --- a/src/libraries/System.Private.CoreLib/src/Internal/Console.Android.cs +++ b/src/libraries/System.Private.CoreLib/src/Internal/Console.Android.cs @@ -21,4 +21,4 @@ public static unsafe void Write(string s) } } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComponentActivator.cs b/src/libraries/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComponentActivator.cs index 8b35a94463c996..431cddcca4f682 100644 --- a/src/libraries/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComponentActivator.cs +++ b/src/libraries/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComponentActivator.cs @@ -36,10 +36,7 @@ public static class ComponentActivator private static string MarshalToString(IntPtr arg, string argName) { string? result = Marshal.PtrToStringAuto(arg); - if (result == null) - { - throw new ArgumentNullException(argName); - } + ArgumentNullException.ThrowIfNull(result, argName); return result; } @@ -81,10 +78,7 @@ public static unsafe int LoadAssemblyAndGetFunctionPointer(IntPtr assemblyPathNa throw new ArgumentOutOfRangeException(nameof(reserved)); } - if (functionHandle == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(functionHandle)); - } + ArgumentNullException.ThrowIfNull(functionHandle); // Set up the AssemblyLoadContext for this delegate. AssemblyLoadContext alc = GetIsolatedComponentLoadContext(assemblyPath); @@ -136,10 +130,7 @@ public static unsafe int GetFunctionPointer(IntPtr typeNameNative, throw new ArgumentOutOfRangeException(nameof(reserved)); } - if (functionHandle == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(functionHandle)); - } + ArgumentNullException.ThrowIfNull(functionHandle); // Create the function pointer. *(IntPtr*)functionHandle = InternalGetFunctionPointer(AssemblyLoadContext.Default, typeName, methodName, delegateTypeNative); diff --git a/src/libraries/System.Private.CoreLib/src/Internal/Win32/RegistryKey.cs b/src/libraries/System.Private.CoreLib/src/Internal/Win32/RegistryKey.cs index e36440a56a822f..2bfc2697ceb86f 100644 --- a/src/libraries/System.Private.CoreLib/src/Internal/Win32/RegistryKey.cs +++ b/src/libraries/System.Private.CoreLib/src/Internal/Win32/RegistryKey.cs @@ -435,11 +435,8 @@ public unsafe string[] GetValueNames() // The actual api is SetValue(string name, object value) but we only need to set Strings // so this is a cut-down version that supports on that. - internal void SetValue(string name, string value) + internal void SetValue(string name, string value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (name != null && name.Length > MaxValueLength) throw new ArgumentException(SR.Arg_RegValStrLenBug, nameof(name)); diff --git a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx index 7b47a57ac9632e..0896ffcf6cc990 100644 --- a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx +++ b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx @@ -1585,30 +1585,15 @@ Cannot have a null child. - - Collection cannot be null. - - - Dictionary cannot be null. - File name cannot be null. Value cannot be null. - - Key cannot be null. - - - Path cannot be null. - SafeHandle cannot be null. - - Stream cannot be null. - String reference not set to an instance of a String. @@ -1618,9 +1603,6 @@ Type in TypedReference cannot be null. - - The waitHandles parameter cannot be null. - Actual value was {0}. @@ -3292,9 +3274,6 @@ The tookLock argument must be set to false before calling this method. - - The condition argument is null. - The timeout must represent a value between -1 and Int32.MaxValue, inclusive. diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 321e2c0477ea87..857caebab61028 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -1202,6 +1202,9 @@ Common\Interop\Windows\Normaliz\Interop.Normalization.cs + + Common\DisableRuntimeMarshalling.cs + Common\SkipLocalsInit.cs @@ -2372,4 +2375,4 @@ - \ No newline at end of file + diff --git a/src/libraries/System.Private.CoreLib/src/System/Activator.RuntimeType.cs b/src/libraries/System.Private.CoreLib/src/System/Activator.RuntimeType.cs index 883557c3e29f6b..0bb3b555796705 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Activator.RuntimeType.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Activator.RuntimeType.cs @@ -16,11 +16,8 @@ public static partial class Activator // Note: CreateInstance returns null for Nullable, e.g. CreateInstance(typeof(int?)) returns null. // - public static object? CreateInstance([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicConstructors | DynamicallyAccessedMemberTypes.PublicConstructors)] Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture, object?[]? activationAttributes) + public static object? CreateInstance([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicConstructors | DynamicallyAccessedMemberTypes.PublicConstructors)] Type type!!, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture, object?[]? activationAttributes) { - if (type is null) - throw new ArgumentNullException(nameof(type)); - if (type is System.Reflection.Emit.TypeBuilder) throw new NotSupportedException(SR.NotSupported_CreateInstanceWithTypeBuilder); @@ -89,11 +86,8 @@ public static partial class Activator public static object? CreateInstance([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type, bool nonPublic) => CreateInstance(type, nonPublic, wrapExceptions: true); - internal static object? CreateInstance(Type type, bool nonPublic, bool wrapExceptions) + internal static object? CreateInstance(Type type!!, bool nonPublic, bool wrapExceptions) { - if (type is null) - throw new ArgumentNullException(nameof(type)); - if (type.UnderlyingSystemType is not RuntimeType rt) throw new ArgumentException(SR.Arg_MustBeType, nameof(type)); diff --git a/src/libraries/System.Private.CoreLib/src/System/AggregateException.cs b/src/libraries/System.Private.CoreLib/src/System/AggregateException.cs index 0fc24781a1677c..1bbae039b0d693 100644 --- a/src/libraries/System.Private.CoreLib/src/System/AggregateException.cs +++ b/src/libraries/System.Private.CoreLib/src/System/AggregateException.cs @@ -51,14 +51,9 @@ public AggregateException(string? message) /// The exception that is the cause of the current exception. /// The argument /// is null. - public AggregateException(string? message, Exception innerException) + public AggregateException(string? message, Exception innerException!!) : base(message, innerException) { - if (innerException == null) - { - throw new ArgumentNullException(nameof(innerException)); - } - _innerExceptions = new[] { innerException }; } @@ -71,7 +66,7 @@ public AggregateException(string? message, Exception innerException) /// is null. /// An element of is /// null. - public AggregateException(IEnumerable innerExceptions) : + public AggregateException(IEnumerable innerExceptions!!) : this(SR.AggregateException_ctor_DefaultMessage, innerExceptions) { } @@ -85,7 +80,7 @@ public AggregateException(IEnumerable innerExceptions) : /// is null. /// An element of is /// null. - public AggregateException(params Exception[] innerExceptions) : + public AggregateException(params Exception[] innerExceptions!!) : this(SR.AggregateException_ctor_DefaultMessage, innerExceptions) { } @@ -100,8 +95,8 @@ public AggregateException(params Exception[] innerExceptions) : /// is null. /// An element of is /// null. - public AggregateException(string? message, IEnumerable innerExceptions) - : this(message, innerExceptions == null ? null : new List(innerExceptions).ToArray(), cloneExceptions: false) + public AggregateException(string? message, IEnumerable innerExceptions!!) + : this(message, new List(innerExceptions).ToArray(), cloneExceptions: false) { } @@ -115,19 +110,14 @@ public AggregateException(string? message, IEnumerable innerException /// is null. /// An element of is /// null. - public AggregateException(string? message, params Exception[] innerExceptions) : + public AggregateException(string? message, params Exception[] innerExceptions!!) : this(message, innerExceptions, cloneExceptions: true) { } - private AggregateException(string? message, Exception[]? innerExceptions, bool cloneExceptions) : - base(message, innerExceptions?.Length > 0 ? innerExceptions[0] : null) + private AggregateException(string? message, Exception[] innerExceptions, bool cloneExceptions) : + base(message, innerExceptions.Length > 0 ? innerExceptions[0] : null) { - if (innerExceptions == null) - { - throw new ArgumentNullException(nameof(innerExceptions)); - } - _innerExceptions = cloneExceptions ? new Exception[innerExceptions.Length] : innerExceptions; for (int i = 0; i < _innerExceptions.Length; i++) @@ -263,13 +253,8 @@ public override Exception GetBaseException() /// cref="AggregateException"/> was not handled. /// The argument is /// null. - public void Handle(Func predicate) + public void Handle(Func predicate!!) { - if (predicate == null) - { - throw new ArgumentNullException(nameof(predicate)); - } - List? unhandledExceptions = null; for (int i = 0; i < _innerExceptions.Length; i++) { diff --git a/src/libraries/System.Private.CoreLib/src/System/AppContext.cs b/src/libraries/System.Private.CoreLib/src/System/AppContext.cs index 87488c1dfe280a..a08587ef454c3e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/AppContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/AppContext.cs @@ -29,11 +29,8 @@ public static partial class AppContext // It is the value read from the TargetFrameworkAttribute on the .exe that started the process. Assembly.GetEntryAssembly()?.GetCustomAttribute()?.FrameworkName; - public static object? GetData(string name) + public static object? GetData(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (s_dataStore == null) return null; @@ -51,11 +48,8 @@ public static partial class AppContext /// The name of the data element /// The value of /// If is - public static void SetData(string name, object? data) + public static void SetData(string name!!, object? data) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (s_dataStore == null) { Interlocked.CompareExchange(ref s_dataStore, new Dictionary(), null); diff --git a/src/libraries/System.Private.CoreLib/src/System/AppDomain.cs b/src/libraries/System.Private.CoreLib/src/System/AppDomain.cs index cff98ca55ee2f8..27b1a979d49e3f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/AppDomain.cs +++ b/src/libraries/System.Private.CoreLib/src/System/AppDomain.cs @@ -90,9 +90,8 @@ public string ApplyPolicy(string assemblyName) } [Obsolete(Obsoletions.AppDomainCreateUnloadMessage, DiagnosticId = Obsoletions.AppDomainCreateUnloadDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static AppDomain CreateDomain(string friendlyName) + public static AppDomain CreateDomain(string friendlyName!!) { - if (friendlyName == null) throw new ArgumentNullException(nameof(friendlyName)); throw new PlatformNotSupportedException(SR.PlatformNotSupported_AppDomains); } @@ -100,12 +99,8 @@ public static AppDomain CreateDomain(string friendlyName) public int ExecuteAssembly(string assemblyFile) => ExecuteAssembly(assemblyFile, null); [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public int ExecuteAssembly(string assemblyFile, string?[]? args) + public int ExecuteAssembly(string assemblyFile!!, string?[]? args) { - if (assemblyFile == null) - { - throw new ArgumentNullException(nameof(assemblyFile)); - } string fullPath = Path.GetFullPath(assemblyFile); Assembly assembly = Assembly.LoadFile(fullPath); return ExecuteAssembly(assembly, args); @@ -162,12 +157,8 @@ public override string ToString() => SR.AppDomain_Name + FriendlyName + Environment.NewLineConst + SR.AppDomain_NoContextPolicies; [Obsolete(Obsoletions.AppDomainCreateUnloadMessage, DiagnosticId = Obsoletions.AppDomainCreateUnloadDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static void Unload(AppDomain domain) + public static void Unload(AppDomain domain!!) { - if (domain == null) - { - throw new ArgumentNullException(nameof(domain)); - } throw new CannotUnloadAppDomainException(SR.Arg_PlatformNotSupported); } @@ -264,13 +255,8 @@ public void SetPrincipalPolicy(PrincipalPolicy policy) _principalPolicy = policy; } - public void SetThreadPrincipal(IPrincipal principal) + public void SetThreadPrincipal(IPrincipal principal!!) { - if (principal == null) - { - throw new ArgumentNullException(nameof(principal)); - } - // Set the principal while checking it has not been set previously. if (Interlocked.CompareExchange(ref _defaultPrincipal, principal, null) is not null) { @@ -279,24 +265,14 @@ public void SetThreadPrincipal(IPrincipal principal) } [RequiresUnreferencedCode("Type and its constructor could be removed")] - public ObjectHandle? CreateInstance(string assemblyName, string typeName) + public ObjectHandle? CreateInstance(string assemblyName!!, string typeName) { - if (assemblyName == null) - { - throw new ArgumentNullException(nameof(assemblyName)); - } - return Activator.CreateInstance(assemblyName, typeName); } [RequiresUnreferencedCode("Type and its constructor could be removed")] - public ObjectHandle? CreateInstance(string assemblyName, string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes) + public ObjectHandle? CreateInstance(string assemblyName!!, string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes) { - if (assemblyName == null) - { - throw new ArgumentNullException(nameof(assemblyName)); - } - return Activator.CreateInstance(assemblyName, typeName, ignoreCase, @@ -308,13 +284,8 @@ public void SetThreadPrincipal(IPrincipal principal) } [RequiresUnreferencedCode("Type and its constructor could be removed")] - public ObjectHandle? CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes) + public ObjectHandle? CreateInstance(string assemblyName!!, string typeName, object?[]? activationAttributes) { - if (assemblyName == null) - { - throw new ArgumentNullException(nameof(assemblyName)); - } - return Activator.CreateInstance(assemblyName, typeName, activationAttributes); } diff --git a/src/libraries/System.Private.CoreLib/src/System/ArgumentException.cs b/src/libraries/System.Private.CoreLib/src/System/ArgumentException.cs index 0e898e511a46ce..37e11570e04c32 100644 --- a/src/libraries/System.Private.CoreLib/src/System/ArgumentException.cs +++ b/src/libraries/System.Private.CoreLib/src/System/ArgumentException.cs @@ -114,9 +114,10 @@ public static void ThrowIfNullOrEmpty([NotNull] string? argument, [CallerArgumen } [DoesNotReturn] - private static void ThrowNullOrEmptyException(string? argument, string? paramName) => - throw (argument is null ? - new ArgumentNullException(paramName) : - new ArgumentException(SR.Argument_EmptyString, paramName)); + private static void ThrowNullOrEmptyException(string? argument, string? paramName) + { + ArgumentNullException.ThrowIfNull(argument, paramName); + throw new ArgumentException(SR.Argument_EmptyString, paramName); + } } } diff --git a/src/libraries/System.Private.CoreLib/src/System/ArgumentNullException.cs b/src/libraries/System.Private.CoreLib/src/System/ArgumentNullException.cs index 46b7c66cf6dfae..585d1baffdf2f6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/ArgumentNullException.cs +++ b/src/libraries/System.Private.CoreLib/src/System/ArgumentNullException.cs @@ -76,8 +76,19 @@ public static unsafe void ThrowIfNull([NotNull] void* argument, [CallerArgumentE } } + /// Throws an if is null. + /// The pointer argument to validate as non-null. + /// The name of the parameter with which corresponds. + internal static unsafe void ThrowIfNull(IntPtr argument, [CallerArgumentExpression("argument")] string? paramName = null) + { + if (argument == IntPtr.Zero) + { + Throw(paramName); + } + } + [DoesNotReturn] - private static void Throw(string? paramName) => + internal static void Throw(string? paramName) => throw new ArgumentNullException(paramName); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Boolean.cs b/src/libraries/System.Private.CoreLib/src/System/Boolean.cs index b9eb80e59db0e6..5cc13227f6e30b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Boolean.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Boolean.cs @@ -11,8 +11,10 @@ ** ===========================================================*/ +using System.Buffers.Binary; using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; using System.Runtime.Versioning; namespace System @@ -99,10 +101,8 @@ public bool TryFormat(Span destination, out int charsWritten) { if ((uint)destination.Length > 3) // uint cast, per https://github.com/dotnet/runtime/issues/10596 { - destination[0] = 'T'; - destination[1] = 'r'; - destination[2] = 'u'; - destination[3] = 'e'; + ulong true_val = BitConverter.IsLittleEndian ? 0x65007500720054ul : 0x54007200750065ul; // "True" + MemoryMarshal.Write(MemoryMarshal.AsBytes(destination), ref true_val); charsWritten = 4; return true; } @@ -111,10 +111,8 @@ public bool TryFormat(Span destination, out int charsWritten) { if ((uint)destination.Length > 4) { - destination[0] = 'F'; - destination[1] = 'a'; - destination[2] = 'l'; - destination[3] = 's'; + ulong fals_val = BitConverter.IsLittleEndian ? 0x73006C00610046ul : 0x460061006C0073ul; // "Fals" + MemoryMarshal.Write(MemoryMarshal.AsBytes(destination), ref fals_val); destination[4] = 'e'; charsWritten = 5; return true; @@ -193,28 +191,25 @@ public int CompareTo(bool value) // internal static bool IsTrueStringIgnoreCase(ReadOnlySpan value) { + // "true" as a ulong, each char |'d with 0x0020 for case-insensitivity + ulong true_val = BitConverter.IsLittleEndian ? 0x65007500720074ul : 0x74007200750065ul; return value.Length == 4 && - (value[0] == 't' || value[0] == 'T') && - (value[1] == 'r' || value[1] == 'R') && - (value[2] == 'u' || value[2] == 'U') && - (value[3] == 'e' || value[3] == 'E'); + (MemoryMarshal.Read(MemoryMarshal.AsBytes(value)) | 0x0020002000200020) == true_val; } internal static bool IsFalseStringIgnoreCase(ReadOnlySpan value) { + // "fals" as a ulong, each char |'d with 0x0020 for case-insensitivity + ulong fals_val = BitConverter.IsLittleEndian ? 0x73006C00610066ul : 0x660061006C0073ul; return value.Length == 5 && - (value[0] == 'f' || value[0] == 'F') && - (value[1] == 'a' || value[1] == 'A') && - (value[2] == 'l' || value[2] == 'L') && - (value[3] == 's' || value[3] == 'S') && - (value[4] == 'e' || value[4] == 'E'); + (((MemoryMarshal.Read(MemoryMarshal.AsBytes(value)) | 0x0020002000200020) == fals_val) & + ((value[4] | 0x20) == 'e')); } // Determines whether a String represents true or false. // - public static bool Parse(string value) + public static bool Parse(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); return Parse(value.AsSpan()); } @@ -223,19 +218,18 @@ public static bool Parse(ReadOnlySpan value) => // Determines whether a String represents true or false. // - public static bool TryParse([NotNullWhen(true)] string? value, out bool result) - { - if (value == null) - { - result = false; - return false; - } - - return TryParse(value.AsSpan(), out result); - } + public static bool TryParse([NotNullWhen(true)] string? value, out bool result) => + TryParse(value.AsSpan(), out result); public static bool TryParse(ReadOnlySpan value, out bool result) { + // Boolean.{Try}Parse allows for optional whitespace/null values before and + // after the case-insensitive "true"/"false", but we don't expect those to + // be the common case. We check for "true"/"false" case-insensitive in the + // fast, inlined call path, and then only if neither match do we fall back + // to trimming and making a second post-trimming attempt at matching those + // same strings. + if (IsTrueStringIgnoreCase(value)) { result = true; @@ -248,33 +242,41 @@ public static bool TryParse(ReadOnlySpan value, out bool result) return true; } - // Special case: Trim whitespace as well as null characters. - value = TrimWhiteSpaceAndNull(value); + return TryParseUncommon(value, out result); - if (IsTrueStringIgnoreCase(value)) + static bool TryParseUncommon(ReadOnlySpan value, out bool result) { - result = true; - return true; - } + // With "true" being 4 characters, even if we trim something from <= 4 chars, + // it can't possibly match "true" or "false". + int originalLength = value.Length; + if (originalLength >= 5) + { + value = TrimWhiteSpaceAndNull(value); + if (value.Length != originalLength) + { + // Something was trimmed. Try matching again. + if (IsTrueStringIgnoreCase(value)) + { + result = true; + return true; + } + + result = false; + return IsFalseStringIgnoreCase(value); + } + } - if (IsFalseStringIgnoreCase(value)) - { result = false; - return true; + return false; } - - result = false; - return false; } private static ReadOnlySpan TrimWhiteSpaceAndNull(ReadOnlySpan value) { - const char nullChar = (char)0x0000; - int start = 0; while (start < value.Length) { - if (!char.IsWhiteSpace(value[start]) && value[start] != nullChar) + if (!char.IsWhiteSpace(value[start]) && value[start] != '\0') { break; } @@ -284,7 +286,7 @@ private static ReadOnlySpan TrimWhiteSpaceAndNull(ReadOnlySpan value int end = value.Length - 1; while (end >= start) { - if (!char.IsWhiteSpace(value[end]) && value[end] != nullChar) + if (!char.IsWhiteSpace(value[end]) && value[end] != '\0') { break; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Buffer.cs b/src/libraries/System.Private.CoreLib/src/System/Buffer.cs index 027c138d1ac6aa..4aa0a9f6e991d6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Buffer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Buffer.cs @@ -19,13 +19,8 @@ public static partial class Buffer // respecting types. This calls memmove internally. The count and // offset parameters here are in bytes. If you want to use traditional // array element indices and counts, use Array.Copy. - public static unsafe void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count) + public static unsafe void BlockCopy(Array src!!, int srcOffset, Array dst!!, int dstOffset, int count) { - if (src == null) - throw new ArgumentNullException(nameof(src)); - if (dst == null) - throw new ArgumentNullException(nameof(dst)); - nuint uSrcLen = src.NativeLength; if (src.GetType() != typeof(byte[])) { @@ -63,12 +58,8 @@ public static unsafe void BlockCopy(Array src, int srcOffset, Array dst, int dst Memmove(ref Unsafe.AddByteOffset(ref MemoryMarshal.GetArrayDataReference(dst), uDstOffset), ref Unsafe.AddByteOffset(ref MemoryMarshal.GetArrayDataReference(src), uSrcOffset), uCount); } - public static int ByteLength(Array array) + public static int ByteLength(Array array!!) { - // Is the array present? - if (array == null) - throw new ArgumentNullException(nameof(array)); - // Is it of primitive types? if (!array.GetCorElementTypeOfElementType().IsPrimitiveType()) throw new ArgumentException(SR.Arg_MustBePrimArray, nameof(array)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Buffers/ConfigurableArrayPool.cs b/src/libraries/System.Private.CoreLib/src/System/Buffers/ConfigurableArrayPool.cs index d4678fee3ef173..af1372f10528fb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Buffers/ConfigurableArrayPool.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Buffers/ConfigurableArrayPool.cs @@ -120,13 +120,9 @@ public override T[] Rent(int minimumLength) return buffer; } - public override void Return(T[] array, bool clearArray = false) + public override void Return(T[] array!!, bool clearArray = false) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - else if (array.Length == 0) + if (array.Length == 0) { // Ignore empty arrays. When a zero-length array is rented, we return a singleton // rather than actually taking a buffer out of the lowest bucket. diff --git a/src/libraries/System.Private.CoreLib/src/System/CodeDom/Compiler/IndentedTextWriter.cs b/src/libraries/System.Private.CoreLib/src/System/CodeDom/Compiler/IndentedTextWriter.cs index 58db6fa5f9c7f9..cb24e7610991e8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/CodeDom/Compiler/IndentedTextWriter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/CodeDom/Compiler/IndentedTextWriter.cs @@ -21,13 +21,8 @@ public class IndentedTextWriter : TextWriter public IndentedTextWriter(TextWriter writer) : this(writer, DefaultTabString) { } - public IndentedTextWriter(TextWriter writer, string tabString) : base(CultureInfo.InvariantCulture) + public IndentedTextWriter(TextWriter writer!!, string tabString) : base(CultureInfo.InvariantCulture) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - _writer = writer; _tabString = tabString; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/ArrayList.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/ArrayList.cs index 67365bc719f7e6..3031c5cef109cb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/ArrayList.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/ArrayList.cs @@ -60,11 +60,8 @@ public ArrayList(int capacity) // size and capacity of the new list will both be equal to the size of the // given collection. // - public ArrayList(ICollection c) + public ArrayList(ICollection c!!) { - if (c == null) - throw new ArgumentNullException(nameof(c), SR.ArgumentNull_Collection); - int count = c.Count; if (count == 0) { @@ -152,10 +149,8 @@ public virtual object? this[int index] // However, since these methods are generic, the performance may not be // nearly as good for some operations as they would be on the IList itself. // - public static ArrayList Adapter(IList list) + public static ArrayList Adapter(IList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new IListWrapper(list); } @@ -324,20 +319,16 @@ private void EnsureCapacity(int min) // Returns a list wrapper that is fixed at the current size. Operations // that add or remove items will fail, however, replacing items is allowed. // - public static IList FixedSize(IList list) + public static IList FixedSize(IList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new FixedSizeList(list); } // Returns a list wrapper that is fixed at the current size. Operations // that add or remove items will fail, however, replacing items is allowed. // - public static ArrayList FixedSize(ArrayList list) + public static ArrayList FixedSize(ArrayList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new FixedSizeArrayList(list); } @@ -437,10 +428,8 @@ public virtual void Insert(int index, object? value) // capacity or the new size, whichever is larger. Ranges may be added // to the end of the list by setting index to the ArrayList's size. // - public virtual void InsertRange(int index, ICollection c) + public virtual void InsertRange(int index, ICollection c!!) { - if (c == null) - throw new ArgumentNullException(nameof(c), SR.ArgumentNull_Collection); if (index < 0 || index > _size) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); int count = c.Count; @@ -515,19 +504,15 @@ public virtual int LastIndexOf(object? value, int startIndex, int count) // Returns a read-only IList wrapper for the given IList. // - public static IList ReadOnly(IList list) + public static IList ReadOnly(IList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new ReadOnlyList(list); } // Returns a read-only ArrayList wrapper for the given ArrayList. // - public static ArrayList ReadOnly(ArrayList list) + public static ArrayList ReadOnly(ArrayList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new ReadOnlyArrayList(list); } @@ -624,10 +609,8 @@ public virtual void Reverse(int index, int count) // Sets the elements starting at the given index to the elements of the // given collection. // - public virtual void SetRange(int index, ICollection c) + public virtual void SetRange(int index, ICollection c!!) { - if (c == null) throw new ArgumentNullException(nameof(c), SR.ArgumentNull_Collection); - int count = c.Count; if (index < 0 || index > _size - count) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); @@ -684,19 +667,15 @@ public virtual void Sort(int index, int count, IComparer? comparer) // Returns a thread-safe wrapper around an IList. // - public static IList Synchronized(IList list) + public static IList Synchronized(IList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new SyncIList(list); } // Returns a thread-safe wrapper around a ArrayList. // - public static ArrayList Synchronized(ArrayList list) + public static ArrayList Synchronized(ArrayList list!!) { - if (list == null) - throw new ArgumentNullException(nameof(list)); return new SyncArrayList(list); } @@ -718,11 +697,8 @@ public static ArrayList Synchronized(ArrayList list) // Internally, this implementation calls Array.Copy. // [RequiresDynamicCode("The native code for the array might not be available at runtime.")] - public virtual Array ToArray(Type type) + public virtual Array ToArray(Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - Array array = Array.CreateInstance(type, _size); Array.Copy(_items, array, _size); return array; @@ -856,10 +832,8 @@ public override void CopyTo(Array array, int index) _list.CopyTo(array, index); } - public override void CopyTo(int index, Array array, int arrayIndex, int count) + public override void CopyTo(int index, Array array!!, int arrayIndex, int count) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || arrayIndex < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(arrayIndex), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) @@ -930,10 +904,8 @@ public override void Insert(int index, object? obj) _version++; } - public override void InsertRange(int index, ICollection c) + public override void InsertRange(int index, ICollection c!!) { - if (c == null) - throw new ArgumentNullException(nameof(c), SR.ArgumentNull_Collection); if (index < 0 || index > Count) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); if (c.Count > 0) @@ -1042,13 +1014,8 @@ public override void Reverse(int index, int count) _version++; } - public override void SetRange(int index, ICollection c) + public override void SetRange(int index, ICollection c!!) { - if (c == null) - { - throw new ArgumentNullException(nameof(c), SR.ArgumentNull_Collection); - } - if (index < 0 || index > _list.Count - c.Count) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); @@ -1102,11 +1069,8 @@ public override void Sort(int index, int count, IComparer? comparer) } [RequiresDynamicCode("The native code for the array might not be available at runtime.")] - public override Array ToArray(Type type) + public override Array ToArray(Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - Array array = Array.CreateInstance(type, _list.Count); _list.CopyTo(array, 0); return array; @@ -2243,13 +2207,8 @@ public override int Add(object? value) return _baseSize++; } - public override void AddRange(ICollection c) + public override void AddRange(ICollection c!!) { - if (c == null) - { - throw new ArgumentNullException(nameof(c)); - } - InternalUpdateRange(); int count = c.Count; if (count > 0) @@ -2323,10 +2282,8 @@ public override bool Contains(object? item) } } - public override void CopyTo(Array array, int index) + public override void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (index < 0) @@ -2338,10 +2295,8 @@ public override void CopyTo(Array array, int index) _baseList.CopyTo(_baseIndex, array, index, _baseSize); } - public override void CopyTo(int index, Array array, int arrayIndex, int count) + public override void CopyTo(int index, Array array!!, int arrayIndex, int count) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (index < 0 || count < 0) @@ -2448,10 +2403,7 @@ public override void Insert(int index, object? value) public override void InsertRange(int index, ICollection c) { if (index < 0 || index > _baseSize) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); - if (c == null) - { - throw new ArgumentNullException(nameof(c)); - } + ArgumentNullException.ThrowIfNull(c); InternalUpdateRange(); int count = c.Count; @@ -2585,11 +2537,8 @@ public override object? this[int index] } [RequiresDynamicCode("The native code for the array might not be available at runtime.")] - public override Array ToArray(Type type) + public override Array ToArray(Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - InternalUpdateRange(); Array array = Array.CreateInstance(type, _baseSize); _baseList.CopyTo(_baseIndex, array, 0, _baseSize); @@ -2697,11 +2646,8 @@ internal sealed class ArrayListDebugView { private readonly ArrayList _arrayList; - public ArrayListDebugView(ArrayList arrayList) + public ArrayListDebugView(ArrayList arrayList!!) { - if (arrayList == null) - throw new ArgumentNullException(nameof(arrayList)); - _arrayList = arrayList; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Comparer.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Comparer.cs index 26997e6e240c5d..0403fc238a39d2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Comparer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Comparer.cs @@ -21,27 +21,18 @@ public sealed class Comparer : IComparer, ISerializable public static readonly Comparer Default = new Comparer(CultureInfo.CurrentCulture); public static readonly Comparer DefaultInvariant = new Comparer(CultureInfo.InvariantCulture); - public Comparer(CultureInfo culture) + public Comparer(CultureInfo culture!!) { - if (culture == null) - throw new ArgumentNullException(nameof(culture)); - _compareInfo = culture.CompareInfo; } - private Comparer(SerializationInfo info, StreamingContext context) + private Comparer(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - _compareInfo = (CompareInfo)info.GetValue("CompareInfo", typeof(CompareInfo))!; } - public void GetObjectData(SerializationInfo info, StreamingContext context) + public void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - info.AddValue("CompareInfo", _compareInfo); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/CompatibleComparer.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/CompatibleComparer.cs index d10a30629a65bd..27834f8d62a0d7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/CompatibleComparer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/CompatibleComparer.cs @@ -44,13 +44,8 @@ public int Compare(object? a, object? b) throw new ArgumentException(SR.Argument_ImplementIComparable); } - public int GetHashCode(object obj) + public int GetHashCode(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - return _hcp != null ? _hcp.GetHashCode(obj) : obj.GetHashCode(); diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Concurrent/IProducerConsumerCollectionDebugView.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Concurrent/IProducerConsumerCollectionDebugView.cs index a33f499665d193..cbd0024ded8e29 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Concurrent/IProducerConsumerCollectionDebugView.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Concurrent/IProducerConsumerCollectionDebugView.cs @@ -18,9 +18,9 @@ internal sealed class IProducerConsumerCollectionDebugView /// Constructs a new debugger view object for the provided collection object. /// /// A collection to browse in the debugger. - public IProducerConsumerCollectionDebugView(IProducerConsumerCollection collection) + public IProducerConsumerCollectionDebugView(IProducerConsumerCollection collection!!) { - _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + _collection = collection; } /// diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/DictionaryEntry.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/DictionaryEntry.cs index 700835bc0790d2..f2d52483307db2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/DictionaryEntry.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/DictionaryEntry.cs @@ -1,6 +1,7 @@ // 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.ComponentModel; namespace System.Collections @@ -40,5 +41,8 @@ public void Deconstruct(out object key, out object? value) key = Key; value = Value; } + + public override string ToString() => + KeyValuePair.PairToString(_key, _value); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Comparer.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Comparer.cs index cdfc29a7a3e43d..34f1b26c3d2104 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Comparer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Comparer.cs @@ -13,11 +13,8 @@ public abstract partial class Comparer : IComparer, IComparer { // public static Comparer Default is runtime-specific - public static Comparer Create(Comparison comparison) + public static Comparer Create(Comparison comparison!!) { - if (comparison == null) - throw new ArgumentNullException(nameof(comparison)); - return new ComparisonComparer(comparison); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ICollectionDebugView.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ICollectionDebugView.cs index ef35460a01327f..524fe11a4d9b32 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ICollectionDebugView.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ICollectionDebugView.cs @@ -9,13 +9,8 @@ internal sealed class ICollectionDebugView { private readonly ICollection _collection; - public ICollectionDebugView(ICollection collection) + public ICollectionDebugView(ICollection collection!!) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - _collection = collection; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/IDictionaryDebugView.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/IDictionaryDebugView.cs index c7e58780a2f751..3a564be99c17c9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/IDictionaryDebugView.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/IDictionaryDebugView.cs @@ -9,11 +9,8 @@ internal sealed class IDictionaryDebugView where K : notnull { private readonly IDictionary _dict; - public IDictionaryDebugView(IDictionary dictionary) + public IDictionaryDebugView(IDictionary dictionary!!) { - if (dictionary == null) - throw new ArgumentNullException(nameof(dictionary)); - _dict = dictionary; } @@ -33,11 +30,8 @@ internal sealed class DictionaryKeyCollectionDebugView { private readonly ICollection _collection; - public DictionaryKeyCollectionDebugView(ICollection collection) + public DictionaryKeyCollectionDebugView(ICollection collection!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - _collection = collection; } @@ -57,11 +51,8 @@ internal sealed class DictionaryValueCollectionDebugView { private readonly ICollection _collection; - public DictionaryValueCollectionDebugView(ICollection collection) + public DictionaryValueCollectionDebugView(ICollection collection!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - _collection = collection; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Queue.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Queue.cs index 1953d9dd35ee1f..96424c17c89229 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Queue.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Queue.cs @@ -49,11 +49,8 @@ public Queue(int capacity) // Fills a Queue with the elements of an ICollection. Uses the enumerator // to get each of the elements. - public Queue(IEnumerable collection) + public Queue(IEnumerable collection!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - _array = EnumerableHelpers.ToArray(collection, out _size); if (_size != _array.Length) _tail = _size; } @@ -98,13 +95,8 @@ public void Clear() // CopyTo copies a collection into an Array, starting at a particular // index into the array. - public void CopyTo(T[] array, int arrayIndex) + public void CopyTo(T[] array!!, int arrayIndex) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (arrayIndex < 0 || arrayIndex > array.Length) { throw new ArgumentOutOfRangeException(nameof(arrayIndex), arrayIndex, SR.ArgumentOutOfRange_Index); @@ -127,13 +119,8 @@ public void CopyTo(T[] array, int arrayIndex) } } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/QueueDebugView.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/QueueDebugView.cs index 31ac94a0f48334..d0cd1fc26ff65f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/QueueDebugView.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/QueueDebugView.cs @@ -9,13 +9,8 @@ internal sealed class QueueDebugView { private readonly Queue _queue; - public QueueDebugView(Queue queue) + public QueueDebugView(Queue queue!!) { - if (queue == null) - { - throw new ArgumentNullException(nameof(queue)); - } - _queue = queue; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/Hashtable.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/Hashtable.cs index d311cd0c94bbde..2a3d6995b78564 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/Hashtable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/Hashtable.cs @@ -342,23 +342,17 @@ public Hashtable(int capacity, float loadFactor, IHashCodeProvider? hcp, ICompar } [Obsolete("This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead.")] - public Hashtable(IDictionary d, float loadFactor, IHashCodeProvider? hcp, IComparer? comparer) - : this(d != null ? d.Count : 0, loadFactor, hcp, comparer) + public Hashtable(IDictionary d!!, float loadFactor, IHashCodeProvider? hcp, IComparer? comparer) + : this(d.Count, loadFactor, hcp, comparer) { - if (d == null) - throw new ArgumentNullException(nameof(d), SR.ArgumentNull_Dictionary); - IDictionaryEnumerator e = d.GetEnumerator(); while (e.MoveNext()) Add(e.Key, e.Value); } - public Hashtable(IDictionary d, float loadFactor, IEqualityComparer? equalityComparer) - : this(d != null ? d.Count : 0, loadFactor, equalityComparer) + public Hashtable(IDictionary d!!, float loadFactor, IEqualityComparer? equalityComparer) + : this(d.Count, loadFactor, equalityComparer) { - if (d == null) - throw new ArgumentNullException(nameof(d), SR.ArgumentNull_Dictionary); - IDictionaryEnumerator e = d.GetEnumerator(); while (e.MoveNext()) Add(e.Key, e.Value); @@ -472,13 +466,8 @@ public virtual bool Contains(object key) // Checks if this hashtable contains an entry with the given key. This is // an O(1) operation. // - public virtual bool ContainsKey(object key) + public virtual bool ContainsKey(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - // Take a snapshot of buckets, in case another thread resizes table Bucket[] lbuckets = _buckets; uint hashcode = InitHash(key, lbuckets.Length, out uint seed, out uint incr); @@ -570,10 +559,8 @@ private void CopyEntries(Array array, int arrayIndex) // Copies the values in this hash table to an array at // a given index. Note that this only copies values, and not keys. - public virtual void CopyTo(Array array, int arrayIndex) + public virtual void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Array); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (arrayIndex < 0) @@ -631,11 +618,7 @@ public virtual object? this[object key] { get { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - + ArgumentNullException.ThrowIfNull(key); // Take a snapshot of buckets, in case another thread does a resize Bucket[] lbuckets = _buckets; @@ -837,13 +820,8 @@ protected virtual bool KeyEquals(object? item, object key) // Inserts an entry into this hashtable. This method is called from the Set // and Add methods. If the add parameter is true and the given key already // exists in the hashtable, an exception is thrown. - private void Insert(object key, object? nvalue, bool add) + private void Insert(object key!!, object? nvalue, bool add) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - if (_count >= _loadsize) { expand(); @@ -978,13 +956,8 @@ private void putEntry(Bucket[] newBuckets, object key, object? nvalue, int hashc // key exists in the hashtable, it is removed. An ArgumentException is // thrown if the key is null. // - public virtual void Remove(object key) + public virtual void Remove(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - Debug.Assert(!_isWriterInProgress, "Race condition detected in usages of Hashtable - multiple threads appear to be writing to a Hashtable instance simultaneously! Don't do that - use Hashtable.Synchronized."); // Assuming only one concurrent writer, write directly into buckets. @@ -1029,20 +1002,13 @@ public virtual void Remove(object key) // Returns a thread-safe wrapper for a Hashtable. // - public static Hashtable Synchronized(Hashtable table) + public static Hashtable Synchronized(Hashtable table!!) { - if (table == null) - throw new ArgumentNullException(nameof(table)); return new SyncHashtable(table); } - public virtual void GetObjectData(SerializationInfo info, StreamingContext context) + public virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - // This is imperfect - it only works well if all other writes are // also using our synchronized wrapper. But it's still a good idea. lock (SyncRoot) @@ -1203,10 +1169,8 @@ internal KeyCollection(Hashtable hashtable) _hashtable = hashtable; } - public void CopyTo(Array array, int arrayIndex) + public void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (arrayIndex < 0) @@ -1239,10 +1203,8 @@ internal ValueCollection(Hashtable hashtable) _hashtable = hashtable; } - public void CopyTo(Array array, int arrayIndex) + public void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (arrayIndex < 0) @@ -1327,12 +1289,8 @@ public override bool Contains(object key) return _table.Contains(key); } - public override bool ContainsKey(object key) + public override bool ContainsKey(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } return _table.ContainsKey(key); } @@ -1523,13 +1481,8 @@ internal sealed class HashtableDebugView { private readonly Hashtable _hashtable; - public HashtableDebugView(Hashtable hashtable) + public HashtableDebugView(Hashtable hashtable!!) { - if (hashtable == null) - { - throw new ArgumentNullException(nameof(hashtable)); - } - _hashtable = hashtable; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/ListDictionaryInternal.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/ListDictionaryInternal.cs index b06c9edb249654..9189dd6c820f86 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/ListDictionaryInternal.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/ListDictionaryInternal.cs @@ -29,14 +29,10 @@ public ListDictionaryInternal() { } - public object? this[object key] + public object? this[object key!!] { get { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } DictionaryNode? node = head; while (node != null) @@ -51,11 +47,6 @@ public object? this[object key] } set { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - version++; DictionaryNode? last = null; DictionaryNode? node; @@ -103,13 +94,8 @@ public object? this[object key] public ICollection Values => new NodeKeyValueCollection(this, false); - public void Add(object key, object? value) + public void Add(object key!!, object? value) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } - version++; DictionaryNode? last = null; for (DictionaryNode? node = head; node != null; node = node.next) @@ -143,12 +129,8 @@ public void Clear() version++; } - public bool Contains(object key) + public bool Contains(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } for (DictionaryNode? node = head; node != null; node = node.next) { if (node.key.Equals(key)) @@ -159,11 +141,8 @@ public bool Contains(object key) return false; } - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); - if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); @@ -190,12 +169,8 @@ IEnumerator IEnumerable.GetEnumerator() return new NodeEnumerator(this); } - public void Remove(object key) + public void Remove(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key), SR.ArgumentNull_Key); - } version++; DictionaryNode? last = null; DictionaryNode? node; @@ -318,10 +293,8 @@ public NodeKeyValueCollection(ListDictionaryInternal list, bool isKeys) this.isKeys = isKeys; } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0) diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/CollectionHelpers.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/CollectionHelpers.cs index 89af10ba7109f4..6b6016d68d7753 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/CollectionHelpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/CollectionHelpers.cs @@ -7,13 +7,8 @@ namespace System.Collections.ObjectModel { internal static class CollectionHelpers { - internal static void ValidateCopyToArguments(int sourceCount, Array array, int index) + internal static void ValidateCopyToArguments(int sourceCount, Array array!!, int index) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } - if (array.Rank != 1) { throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/ReadOnlyDictionary.cs b/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/ReadOnlyDictionary.cs index 57c6b4604dc1d8..9e0facdfa34b00 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/ReadOnlyDictionary.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Collections/ObjectModel/ReadOnlyDictionary.cs @@ -20,9 +20,9 @@ public class ReadOnlyDictionary : IDictionary, IDict [NonSerialized] private ValueCollection? _values; - public ReadOnlyDictionary(IDictionary dictionary) + public ReadOnlyDictionary(IDictionary dictionary!!) { - m_dictionary = dictionary ?? throw new ArgumentNullException(nameof(dictionary)); + m_dictionary = dictionary; } protected IDictionary Dictionary => m_dictionary; @@ -105,13 +105,8 @@ IEnumerator IEnumerable.GetEnumerator() return ((IEnumerable)m_dictionary).GetEnumerator(); } - private static bool IsCompatibleKey(object key) + private static bool IsCompatibleKey(object key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - return key is TKey; } @@ -254,9 +249,9 @@ public sealed class KeyCollection : ICollection, ICollection, IReadOnlyCol { private readonly ICollection _collection; - internal KeyCollection(ICollection collection) + internal KeyCollection(ICollection collection!!) { - _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + _collection = collection; } void ICollection.Add(TKey item) @@ -308,9 +303,9 @@ public sealed class ValueCollection : ICollection, ICollection, IReadOnl { private readonly ICollection _collection; - internal ValueCollection(ICollection collection) + internal ValueCollection(ICollection collection!!) { - _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + _collection = collection; } void ICollection.Add(TValue item) diff --git a/src/libraries/System.Private.CoreLib/src/System/Convert.cs b/src/libraries/System.Private.CoreLib/src/System/Convert.cs index 94b9160f7253a6..bf101862a870cd 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Convert.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Convert.cs @@ -226,13 +226,9 @@ public static bool IsDBNull([NotNullWhen(true)] object? value) }; } - internal static object DefaultToType(IConvertible value, Type targetType, IFormatProvider? provider) + internal static object DefaultToType(IConvertible value, Type targetType!!, IFormatProvider? provider) { Debug.Assert(value != null, "[Convert.DefaultToType]value!=null"); - if (targetType == null) - { - throw new ArgumentNullException(nameof(targetType)); - } if (ReferenceEquals(value.GetType(), targetType)) { @@ -289,13 +285,8 @@ internal static object DefaultToType(IConvertible value, Type targetType, IForma } [return: NotNullIfNotNull("value")] - public static object? ChangeType(object? value, Type conversionType, IFormatProvider? provider) + public static object? ChangeType(object? value, Type conversionType!!, IFormatProvider? provider) { - if (conversionType is null) - { - throw new ArgumentNullException(nameof(conversionType)); - } - if (value == null) { if (conversionType.IsValueType) @@ -554,11 +545,8 @@ public static char ToChar(string value) return ToChar(value, null); } - public static char ToChar(string value, IFormatProvider? provider) + public static char ToChar(string value!!, IFormatProvider? provider) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (value.Length != 1) throw new FormatException(SR.Format_NeedSingleChar); @@ -2309,21 +2297,13 @@ public static string ToString(long value, int toBase) return ParseNumbers.LongToString(value, toBase, -1, ' ', 0); } - public static string ToBase64String(byte[] inArray) + public static string ToBase64String(byte[] inArray!!) { - if (inArray == null) - { - throw new ArgumentNullException(nameof(inArray)); - } return ToBase64String(new ReadOnlySpan(inArray), Base64FormattingOptions.None); } - public static string ToBase64String(byte[] inArray, Base64FormattingOptions options) + public static string ToBase64String(byte[] inArray!!, Base64FormattingOptions options) { - if (inArray == null) - { - throw new ArgumentNullException(nameof(inArray)); - } return ToBase64String(new ReadOnlySpan(inArray), options); } @@ -2332,10 +2312,8 @@ public static string ToBase64String(byte[] inArray, int offset, int length) return ToBase64String(inArray, offset, length, Base64FormattingOptions.None); } - public static string ToBase64String(byte[] inArray, int offset, int length, Base64FormattingOptions options) + public static string ToBase64String(byte[] inArray!!, int offset, int length, Base64FormattingOptions options) { - if (inArray == null) - throw new ArgumentNullException(nameof(inArray)); if (length < 0) throw new ArgumentOutOfRangeException(nameof(length), SR.ArgumentOutOfRange_Index); if (offset < 0) @@ -2379,13 +2357,8 @@ public static int ToBase64CharArray(byte[] inArray, int offsetIn, int length, ch return ToBase64CharArray(inArray, offsetIn, length, outArray, offsetOut, Base64FormattingOptions.None); } - public static unsafe int ToBase64CharArray(byte[] inArray, int offsetIn, int length, char[] outArray, int offsetOut, Base64FormattingOptions options) + public static unsafe int ToBase64CharArray(byte[] inArray!!, int offsetIn, int length, char[] outArray!!, int offsetOut, Base64FormattingOptions options) { - // Do data verfication - if (inArray == null) - throw new ArgumentNullException(nameof(inArray)); - if (outArray == null) - throw new ArgumentNullException(nameof(outArray)); if (length < 0) throw new ArgumentOutOfRangeException(nameof(length), SR.ArgumentOutOfRange_Index); if (offsetIn < 0) @@ -2709,11 +2682,8 @@ private static void CopyToTempBufferWithoutWhiteSpace(ReadOnlySpan chars, /// A position within the input array. /// Number of element to convert. /// The array of bytes represented by the specified Base64 encoding characters. - public static byte[] FromBase64CharArray(char[] inArray, int offset, int length) + public static byte[] FromBase64CharArray(char[] inArray!!, int offset, int length) { - if (inArray == null) - throw new ArgumentNullException(nameof(inArray)); - if (length < 0) throw new ArgumentOutOfRangeException(nameof(length), SR.ArgumentOutOfRange_Index); @@ -2887,11 +2857,8 @@ public static byte[] FromHexString(ReadOnlySpan chars) /// The string representation in hex of the elements in . /// is null. /// is too large to be encoded. - public static string ToHexString(byte[] inArray) + public static string ToHexString(byte[] inArray!!) { - if (inArray == null) - throw new ArgumentNullException(nameof(inArray)); - return ToHexString(new ReadOnlySpan(inArray)); } @@ -2907,10 +2874,8 @@ public static string ToHexString(byte[] inArray) /// or is negative. /// plus is greater than the length of . /// is too large to be encoded. - public static string ToHexString(byte[] inArray, int offset, int length) + public static string ToHexString(byte[] inArray!!, int offset, int length) { - if (inArray == null) - throw new ArgumentNullException(nameof(inArray)); if (length < 0) throw new ArgumentOutOfRangeException(nameof(length), SR.ArgumentOutOfRange_Index); if (offset < 0) diff --git a/src/libraries/System.Private.CoreLib/src/System/DateTime.cs b/src/libraries/System.Private.CoreLib/src/System/DateTime.cs index 53a7b278fd2123..03ed33ceb1d5b7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/DateTime.cs +++ b/src/libraries/System.Private.CoreLib/src/System/DateTime.cs @@ -232,11 +232,8 @@ public DateTime(int year, int month, int day, int hour, int minute, int second, // Constructs a DateTime from a given year, month, day, hour, // minute, and second for the specified calendar. // - public DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar) + public DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar!!) { - if (calendar == null) - throw new ArgumentNullException(nameof(calendar)); - if (second != 60 || !s_systemSupportsLeapSeconds) { _dateData = calendar.ToDateTime(year, month, day, hour, minute, second, 0).UTicks; @@ -294,11 +291,8 @@ public DateTime(int year, int month, int day, int hour, int minute, int second, // Constructs a DateTime from a given year, month, day, hour, // minute, and second for the specified calendar. // - public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar) + public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar!!) { - if (calendar == null) - throw new ArgumentNullException(nameof(calendar)); - if (second != 60 || !s_systemSupportsLeapSeconds) { _dateData = calendar.ToDateTime(year, month, day, hour, minute, second, millisecond).UTicks; @@ -311,10 +305,8 @@ public DateTime(int year, int month, int day, int hour, int minute, int second, } } - public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind kind) + public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar!!, DateTimeKind kind) { - if (calendar == null) - throw new ArgumentNullException(nameof(calendar)); if ((uint)millisecond >= MillisPerSecond) ThrowMillisecondOutOfRange(); if ((uint)kind > (uint)DateTimeKind.Local) ThrowInvalidKind(); diff --git a/src/libraries/System.Private.CoreLib/src/System/DateTimeOffset.cs b/src/libraries/System.Private.CoreLib/src/System/DateTimeOffset.cs index d0778363fb34f1..651fb25b544e15 100644 --- a/src/libraries/System.Private.CoreLib/src/System/DateTimeOffset.cs +++ b/src/libraries/System.Private.CoreLib/src/System/DateTimeOffset.cs @@ -470,24 +470,14 @@ void IDeserializationCallback.OnDeserialization(object? sender) } } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue("DateTime", _dateTime); // Do not rename (binary serialization) info.AddValue("OffsetMinutes", _offsetMinutes); // Do not rename (binary serialization) } - private DateTimeOffset(SerializationInfo info, StreamingContext context) + private DateTimeOffset(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - _dateTime = (DateTime)info.GetValue("DateTime", typeof(DateTime))!; // Do not rename (binary serialization) _offsetMinutes = (short)info.GetValue("OffsetMinutes", typeof(short))!; // Do not rename (binary serialization) } diff --git a/src/libraries/System.Private.CoreLib/src/System/Decimal.cs b/src/libraries/System.Private.CoreLib/src/System/Decimal.cs index c46fe5094cb32d..41a58c6720aebc 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Decimal.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Decimal.cs @@ -182,21 +182,15 @@ public Decimal(double value) DecCalc.VarDecFromR8(value, out AsMutable(ref this)); } - private Decimal(SerializationInfo info, StreamingContext context) + private Decimal(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - _flags = info.GetInt32("flags"); _hi32 = (uint)info.GetInt32("hi"); _lo64 = (uint)info.GetInt32("lo") + ((ulong)info.GetInt32("mid") << 32); } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - // Serialize both the old and the new format info.AddValue("flags", _flags); info.AddValue("hi", (int)High); @@ -266,8 +260,8 @@ public static long ToOACurrency(decimal value) // The possible binary representations of a particular value are all // equally valid, and all are numerically equivalent. // - public Decimal(int[] bits) : - this((ReadOnlySpan)(bits ?? throw new ArgumentNullException(nameof(bits)))) + public Decimal(int[] bits!!) : + this((ReadOnlySpan)bits) { } diff --git a/src/libraries/System.Private.CoreLib/src/System/DefaultBinder.cs b/src/libraries/System.Private.CoreLib/src/System/DefaultBinder.cs index 1290a00f59c51e..349d63b873669e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/DefaultBinder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/DefaultBinder.cs @@ -432,13 +432,8 @@ public sealed override MethodBase BindToMethod( // Given a set of fields that match the base criteria, select a field. // if value is null then we have no way to select a field - public sealed override FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo? cultureInfo) + public sealed override FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match!!, object value, CultureInfo? cultureInfo) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - int i; // Find the method that match... int CurIdx = 0; @@ -622,8 +617,7 @@ public sealed override FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo { foreach (Type index in indexes) { - if (index == null) - throw new ArgumentNullException(nameof(indexes)); + ArgumentNullException.ThrowIfNull(index, nameof(indexes)); } } @@ -773,11 +767,8 @@ public sealed override void ReorderArgumentArray(ref object?[] args, object stat // Return any exact bindings that may exist. (This method is not defined on the // Binder and is used by RuntimeType.) - public static MethodBase? ExactBinding(MethodBase[] match, Type[] types, ParameterModifier[]? modifiers) + public static MethodBase? ExactBinding(MethodBase[] match!!, Type[] types, ParameterModifier[]? modifiers) { - if (match == null) - throw new ArgumentNullException(nameof(match)); - MethodBase[] aExactMatches = new MethodBase[match.Length]; int cExactMatches = 0; @@ -816,11 +807,8 @@ public sealed override void ReorderArgumentArray(ref object?[] args, object stat // Return any exact bindings that may exist. (This method is not defined on the // Binder and is used by RuntimeType.) - public static PropertyInfo? ExactPropertyBinding(PropertyInfo[] match, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) + public static PropertyInfo? ExactPropertyBinding(PropertyInfo[] match!!, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) { - if (match == null) - throw new ArgumentNullException(nameof(match)); - PropertyInfo? bestMatch = null; int typesLength = (types != null) ? types.Length : 0; for (int i = 0; i < match.Length; i++) diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Contracts/Contracts.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Contracts/Contracts.cs index fd347add1795d9..bd4852c036593a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Contracts/Contracts.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Contracts/Contracts.cs @@ -517,8 +517,7 @@ public static bool ForAll(int fromInclusive, int toExclusive, Predicate pre { if (fromInclusive > toExclusive) throw new ArgumentException(SR.Argument_ToExclusiveLessThanFromExclusive); - if (predicate == null) - throw new ArgumentNullException(nameof(predicate)); + ArgumentNullException.ThrowIfNull(predicate); for (int i = fromInclusive; i < toExclusive; i++) if (!predicate(i)) return false; @@ -536,13 +535,8 @@ public static bool ForAll(int fromInclusive, int toExclusive, Predicate pre /// . /// [Pure] - public static bool ForAll(IEnumerable collection, Predicate predicate) + public static bool ForAll(IEnumerable collection!!, Predicate predicate!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - if (predicate == null) - throw new ArgumentNullException(nameof(predicate)); - foreach (T t in collection) if (!predicate(t)) return false; return true; @@ -567,8 +561,7 @@ public static bool Exists(int fromInclusive, int toExclusive, Predicate pre { if (fromInclusive > toExclusive) throw new ArgumentException(SR.Argument_ToExclusiveLessThanFromExclusive); - if (predicate == null) - throw new ArgumentNullException(nameof(predicate)); + ArgumentNullException.ThrowIfNull(predicate); for (int i = fromInclusive; i < toExclusive; i++) if (predicate(i)) return true; @@ -585,13 +578,8 @@ public static bool Exists(int fromInclusive, int toExclusive, Predicate pre /// . /// [Pure] - public static bool Exists(IEnumerable collection, Predicate predicate) + public static bool Exists(IEnumerable collection!!, Predicate predicate!!) { - if (collection == null) - throw new ArgumentNullException(nameof(collection)); - if (predicate == null) - throw new ArgumentNullException(nameof(predicate)); - foreach (T t in collection) if (predicate(t)) return true; return false; diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs index d617c14fcca152..802410712c07d5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debug.cs @@ -19,11 +19,8 @@ public static partial class Debug { private static volatile DebugProvider s_provider = new DebugProvider(); - public static DebugProvider SetProvider(DebugProvider provider) + public static DebugProvider SetProvider(DebugProvider provider!!) { - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - return Interlocked.Exchange(ref s_provider, provider); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerDisplayAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerDisplayAttribute.cs index ea67b9c043afd1..65b2e6589e05fb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerDisplayAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerDisplayAttribute.cs @@ -35,10 +35,7 @@ public Type? Target get => _target; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); TargetTypeName = value.AssemblyQualifiedName; _target = value; diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerTypeProxyAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerTypeProxyAttribute.cs index 1f99516869be62..982c462535f0c3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerTypeProxyAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerTypeProxyAttribute.cs @@ -11,13 +11,8 @@ public sealed class DebuggerTypeProxyAttribute : Attribute private Type? _target; public DebuggerTypeProxyAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - ProxyTypeName = type.AssemblyQualifiedName!; } @@ -37,10 +32,7 @@ public Type? Target get => _target; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); TargetTypeName = value.AssemblyQualifiedName; _target = value; diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerVisualizerAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerVisualizerAttribute.cs index 425156d948936a..1b011101a2f757 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerVisualizerAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/DebuggerVisualizerAttribute.cs @@ -30,54 +30,30 @@ public DebuggerVisualizerAttribute( public DebuggerVisualizerAttribute( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] string visualizerTypeName, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizerObjectSource) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizerObjectSource!!) { - if (visualizerObjectSource == null) - { - throw new ArgumentNullException(nameof(visualizerObjectSource)); - } - VisualizerTypeName = visualizerTypeName; VisualizerObjectSourceTypeName = visualizerObjectSource.AssemblyQualifiedName; } public DebuggerVisualizerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer!!) { - if (visualizer == null) - { - throw new ArgumentNullException(nameof(visualizer)); - } - VisualizerTypeName = visualizer.AssemblyQualifiedName!; } public DebuggerVisualizerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizerObjectSource) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer!!, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizerObjectSource!!) { - if (visualizer == null) - { - throw new ArgumentNullException(nameof(visualizer)); - } - if (visualizerObjectSource == null) - { - throw new ArgumentNullException(nameof(visualizerObjectSource)); - } - VisualizerTypeName = visualizer.AssemblyQualifiedName!; VisualizerObjectSourceTypeName = visualizerObjectSource.AssemblyQualifiedName; } public DebuggerVisualizerAttribute( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type visualizer!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] string? visualizerObjectSourceTypeName) { - if (visualizer == null) - { - throw new ArgumentNullException(nameof(visualizer)); - } - VisualizerTypeName = visualizer.AssemblyQualifiedName!; VisualizerObjectSourceTypeName = visualizerObjectSourceTypeName; } @@ -95,10 +71,7 @@ public Type? Target get => _target; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); TargetTypeName = value.AssemblyQualifiedName; _target = value; diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/StackTrace.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/StackTrace.cs index 52472948bfee2b..c86c3be39fe76e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/StackTrace.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/StackTrace.cs @@ -76,22 +76,16 @@ public StackTrace(int skipFrames, bool fNeedFileInfo) /// /// Constructs a stack trace from the current location. /// - public StackTrace(Exception e) + public StackTrace(Exception e!!) { - if (e == null) - throw new ArgumentNullException(nameof(e)); - InitializeForException(e, METHODS_TO_SKIP, false); } /// /// Constructs a stack trace from the current location. /// - public StackTrace(Exception e, bool fNeedFileInfo) + public StackTrace(Exception e!!, bool fNeedFileInfo) { - if (e == null) - throw new ArgumentNullException(nameof(e)); - InitializeForException(e, METHODS_TO_SKIP, fNeedFileInfo); } @@ -99,11 +93,8 @@ public StackTrace(Exception e, bool fNeedFileInfo) /// Constructs a stack trace from the current location, in a caller's /// frame /// - public StackTrace(Exception e, int skipFrames) + public StackTrace(Exception e!!, int skipFrames) { - if (e == null) - throw new ArgumentNullException(nameof(e)); - if (skipFrames < 0) throw new ArgumentOutOfRangeException(nameof(skipFrames), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -115,11 +106,8 @@ public StackTrace(Exception e, int skipFrames) /// Constructs a stack trace from the current location, in a caller's /// frame /// - public StackTrace(Exception e, int skipFrames, bool fNeedFileInfo) + public StackTrace(Exception e!!, int skipFrames, bool fNeedFileInfo) { - if (e == null) - throw new ArgumentNullException(nameof(e)); - if (skipFrames < 0) throw new ArgumentOutOfRangeException(nameof(skipFrames), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/DiagnosticCounter.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/DiagnosticCounter.cs index 0c23cf99222b2c..2c605cd8ee48a1 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/DiagnosticCounter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/DiagnosticCounter.cs @@ -29,22 +29,12 @@ public abstract class DiagnosticCounter : IDisposable /// All Counters live as long as the EventSource that they are attached to unless they are /// explicitly Disposed. /// - /// The name. - /// The event source. - internal DiagnosticCounter(string name, EventSource eventSource) + /// The name. + /// The event source. + internal DiagnosticCounter(string Name!!, EventSource EventSource!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(Name)); - } - - if (eventSource == null) - { - throw new ArgumentNullException(nameof(EventSource)); - } - - Name = name; - EventSource = eventSource; + this.Name = Name; + this.EventSource = EventSource; } /// Adds the counter to the set that the EventSource will report on. diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventProvider.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventProvider.cs index ce477e02c9ef7f..ee456befca94d5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventProvider.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventProvider.cs @@ -135,9 +135,9 @@ internal EventProvider(EventProviderType providerType) /// reason the ETW Register call failed a NotSupported exception will be thrown. /// // - // + // // - // + // // internal unsafe void Register(EventSource eventSource) { @@ -234,7 +234,7 @@ public virtual void Close() // // private unsafe void EtwEnableCallBack( - in System.Guid sourceId, + System.Guid* sourceId, int controlCode, byte setLevel, long anyKeyword, diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs index b54a5a50ba62ed..2124c8b71a7590 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs @@ -466,8 +466,10 @@ public static void SendCommand(EventSource eventSource, EventCommand command, ID return; } - if (eventSource == null) + if (eventSource is null) + { throw new ArgumentNullException(nameof(eventSource)); + } // User-defined EventCommands should not conflict with the reserved commands. if ((int)command <= (int)EventCommand.Update && (int)command != (int)EventCommand.SendManifest) @@ -4173,13 +4175,8 @@ public void EnableEvents(EventSource eventSource, EventLevel level, EventKeyword /// /// This call never has an effect on other EventListeners. /// - public void EnableEvents(EventSource eventSource, EventLevel level, EventKeywords matchAnyKeyword, IDictionary? arguments) + public void EnableEvents(EventSource eventSource!!, EventLevel level, EventKeywords matchAnyKeyword, IDictionary? arguments) { - if (eventSource == null) - { - throw new ArgumentNullException(nameof(eventSource)); - } - eventSource.SendCommand(this, EventProviderType.None, 0, 0, EventCommand.Update, true, level, matchAnyKeyword, arguments); #if FEATURE_PERFTRACING @@ -4194,13 +4191,8 @@ public void EnableEvents(EventSource eventSource, EventLevel level, EventKeyword /// /// This call never has an effect on other EventListeners. /// - public void DisableEvents(EventSource eventSource) + public void DisableEvents(EventSource eventSource!!) { - if (eventSource == null) - { - throw new ArgumentNullException(nameof(eventSource)); - } - eventSource.SendCommand(this, EventProviderType.None, 0, 0, EventCommand.Update, false, EventLevel.LogAlways, EventKeywords.None, null); #if FEATURE_PERFTRACING diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/IncrementingPollingCounter.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/IncrementingPollingCounter.cs index 86d46a040faa50..a06de9bb623a1e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/IncrementingPollingCounter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/IncrementingPollingCounter.cs @@ -35,11 +35,8 @@ public partial class IncrementingPollingCounter : DiagnosticCounter /// The name. /// The event source. /// The delegate to invoke to get the total value for this counter. - public IncrementingPollingCounter(string name, EventSource eventSource, Func totalValueProvider) : base(name, eventSource) + public IncrementingPollingCounter(string name, EventSource eventSource, Func totalValueProvider!!) : base(name, eventSource) { - if (totalValueProvider == null) - throw new ArgumentNullException(nameof(totalValueProvider)); - _totalValueProvider = totalValueProvider; Publish(); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/PollingCounter.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/PollingCounter.cs index ed9697d2450229..e2849498a674a4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/PollingCounter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/PollingCounter.cs @@ -33,11 +33,8 @@ public partial class PollingCounter : DiagnosticCounter /// The name. /// The event source. /// The delegate to invoke to get the current metric value. - public PollingCounter(string name, EventSource eventSource, Func metricProvider) : base(name, eventSource) + public PollingCounter(string name, EventSource eventSource, Func metricProvider!!) : base(name, eventSource) { - if (metricProvider == null) - throw new ArgumentNullException(nameof(metricProvider)); - _metricProvider = metricProvider; Publish(); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/EventPayload.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/EventPayload.cs index 98cd97f567a5e5..fa09bfa8db3260 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/EventPayload.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/EventPayload.cs @@ -75,11 +75,8 @@ public bool Contains(KeyValuePair entry) return ContainsKey(entry.Key); } - public bool ContainsKey(string key) + public bool ContainsKey(string key!!) { - if (key == null) - throw new System.ArgumentNullException(nameof(key)); - foreach (string item in m_names) { if (item == key) @@ -121,11 +118,8 @@ public bool Remove(KeyValuePair entry) throw new System.NotSupportedException(); } - public bool TryGetValue(string key, [MaybeNullWhen(false)] out object? value) + public bool TryGetValue(string key!!, [MaybeNullWhen(false)] out object? value) { - if (key == null) - throw new System.ArgumentNullException(nameof(key)); - int position = 0; foreach (string name in m_names) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventSource.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventSource.cs index b6b739f3eeeb50..52ee741b94c535 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventSource.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventSource.cs @@ -86,18 +86,14 @@ public EventSource( /// /// A collection of key-value strings (must be an even number). public EventSource( - string eventSourceName, + string eventSourceName!!, EventSourceSettings config, params string[]? traits) : this( - eventSourceName == null ? default : GenerateGuidFromName(eventSourceName.ToUpperInvariant()), + GenerateGuidFromName(eventSourceName.ToUpperInvariant()), eventSourceName!, config, traits) { - if (eventSourceName == null) - { - throw new ArgumentNullException(nameof(eventSourceName)); - } } /// diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTypes.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTypes.cs index c8367baf80f96b..5716d3b6bbac2f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTypes.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingEventTypes.cs @@ -89,15 +89,10 @@ internal TraceLoggingEventTypes( [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type")] #endif internal TraceLoggingEventTypes( - string name, + string name!!, EventTags tags, System.Reflection.ParameterInfo[] paramInfos) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - this.typeInfos = MakeArray(paramInfos); #if FEATURE_PERFTRACING this.paramNames = MakeParamNameArray(paramInfos); @@ -129,14 +124,9 @@ internal TraceLoggingEventTypes( private TraceLoggingEventTypes( EventTags tags, - string defaultName, + string defaultName!!, TraceLoggingTypeInfo[] typeInfos) { - if (defaultName == null) - { - throw new ArgumentNullException(nameof(defaultName)); - } - this.typeInfos = typeInfos; this.name = defaultName; this.tags = tags; @@ -189,13 +179,8 @@ internal NameInfo GetNameInfo(string name, EventTags tags) => #if !ES_BUILD_STANDALONE [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type")] #endif - private static TraceLoggingTypeInfo[] MakeArray(System.Reflection.ParameterInfo[] paramInfos) + private static TraceLoggingTypeInfo[] MakeArray(System.Reflection.ParameterInfo[] paramInfos!!) { - if (paramInfos == null) - { - throw new ArgumentNullException(nameof(paramInfos)); - } - var recursionCheck = new List(paramInfos.Length); var result = new TraceLoggingTypeInfo[paramInfos.Length]; for (int i = 0; i < paramInfos.Length; ++i) @@ -209,13 +194,8 @@ private static TraceLoggingTypeInfo[] MakeArray(System.Reflection.ParameterInfo[ #if !ES_BUILD_STANDALONE [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type")] #endif - private static TraceLoggingTypeInfo[] MakeArray(Type[] types) + private static TraceLoggingTypeInfo[] MakeArray(Type[] types!!) { - if (types == null) - { - throw new ArgumentNullException(nameof(types)); - } - var recursionCheck = new List(types.Length); var result = new TraceLoggingTypeInfo[types.Length]; for (int i = 0; i < types.Length; i++) @@ -227,13 +207,8 @@ private static TraceLoggingTypeInfo[] MakeArray(Type[] types) } private static TraceLoggingTypeInfo[] MakeArray( - TraceLoggingTypeInfo[] typeInfos) + TraceLoggingTypeInfo[] typeInfos!!) { - if (typeInfos == null) - { - throw new ArgumentNullException(nameof(typeInfos)); - } - return (TraceLoggingTypeInfo[])typeInfos.Clone(); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingTypeInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingTypeInfo.cs index 8a699e243fc379..ad1f46b6b19142 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingTypeInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/TraceLogging/TraceLoggingTypeInfo.cs @@ -27,36 +27,21 @@ internal abstract class TraceLoggingTypeInfo private readonly Type dataType; private readonly Func propertyValueFactory; - internal TraceLoggingTypeInfo(Type dataType) + internal TraceLoggingTypeInfo(Type dataType!!) { - if (dataType == null) - { - throw new ArgumentNullException(nameof(dataType)); - } - this.name = dataType.Name; this.dataType = dataType; this.propertyValueFactory = PropertyValue.GetFactory(dataType); } internal TraceLoggingTypeInfo( - Type dataType, - string name, + Type dataType!!, + string name!!, EventLevel level, EventOpcode opcode, EventKeywords keywords, EventTags tags) { - if (dataType == null) - { - throw new ArgumentNullException(nameof(dataType)); - } - - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - Statics.CheckName(name); this.name = name; diff --git a/src/libraries/System.Private.CoreLib/src/System/Enum.cs b/src/libraries/System.Private.CoreLib/src/System/Enum.cs index 7267c82a7449ce..86a4e5f545b45c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Enum.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Enum.cs @@ -283,61 +283,37 @@ private static ulong ToUInt64(TEnum value) where TEnum : struct, Enum => #endregion #region Public Static Methods - public static string? GetName(TEnum value) where TEnum : struct, Enum - => GetEnumName((RuntimeType)typeof(TEnum), ToUInt64(value)); + public static string? GetName(TEnum value) where TEnum : struct, Enum => + GetEnumName((RuntimeType)typeof(TEnum), ToUInt64(value)); - public static string? GetName(Type enumType, object value) - { - if (enumType is null) - throw new ArgumentNullException(nameof(enumType)); - - return enumType.GetEnumName(value); - } + public static string? GetName(Type enumType!!, object value) => + enumType.GetEnumName(value); - public static string[] GetNames() where TEnum : struct, Enum - => new ReadOnlySpan(InternalGetNames((RuntimeType)typeof(TEnum))).ToArray(); + public static string[] GetNames() where TEnum : struct, Enum => + new ReadOnlySpan(InternalGetNames((RuntimeType)typeof(TEnum))).ToArray(); - public static string[] GetNames(Type enumType) - { - if (enumType is null) - throw new ArgumentNullException(nameof(enumType)); - - return enumType.GetEnumNames(); - } + public static string[] GetNames(Type enumType!!) => + enumType.GetEnumNames(); - internal static string[] InternalGetNames(RuntimeType enumType) - { + internal static string[] InternalGetNames(RuntimeType enumType) => // Get all of the names - return GetEnumInfo(enumType, true).Names; - } + GetEnumInfo(enumType, true).Names; - public static Type GetUnderlyingType(Type enumType) - { - if (enumType == null) - throw new ArgumentNullException(nameof(enumType)); - - return enumType.GetEnumUnderlyingType(); - } + public static Type GetUnderlyingType(Type enumType!!) => + enumType.GetEnumUnderlyingType(); #if !CORERT - public static TEnum[] GetValues() where TEnum : struct, Enum - => (TEnum[])GetValues(typeof(TEnum)); + public static TEnum[] GetValues() where TEnum : struct, Enum => + (TEnum[])GetValues(typeof(TEnum)); #endif [RequiresDynamicCode("It might not be possible to create an array of the enum type at runtime. Use the GetValues overload instead.")] - public static Array GetValues(Type enumType) - { - if (enumType is null) - throw new ArgumentNullException(nameof(enumType)); - - return enumType.GetEnumValues(); - } + public static Array GetValues(Type enumType!!) => + enumType.GetEnumValues(); [Intrinsic] - public bool HasFlag(Enum flag) + public bool HasFlag(Enum flag!!) { - if (flag is null) - throw new ArgumentNullException(nameof(flag)); if (GetType() != flag.GetType() && !GetType().IsEquivalentTo(flag.GetType())) throw new ArgumentException(SR.Format(SR.Argument_EnumTypeDoesNotMatch, flag.GetType(), GetType())); @@ -418,11 +394,8 @@ private static int FindDefinedIndex(ulong[] ulValues, ulong ulValue) SpanHelpers.BinarySearch(ref start, ulValuesLength, ulValue); } - public static bool IsDefined(Type enumType, object value) + public static bool IsDefined(Type enumType!!, object value) { - if (enumType is null) - throw new ArgumentNullException(nameof(enumType)); - return enumType.IsEnumDefined(value); } @@ -654,7 +627,7 @@ private static bool TryParse(string? value, bool ignoreCase, bool throwOn { if (throwOnFailure) { - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } result = default; return false; @@ -1022,11 +995,8 @@ private static bool TryParseByName(RuntimeType enumType, ReadOnlySpan valu [MethodImpl(MethodImplOptions.AggressiveInlining)] private static bool StartsNumber(char c) => char.IsInRange(c, '0', '9') || c == '-' || c == '+'; - public static object ToObject(Type enumType, object value) + public static object ToObject(Type enumType, object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // Delegate rest of error checking to the other functions TypeCode typeCode = Convert.GetTypeCode(value); @@ -1046,16 +1016,10 @@ public static object ToObject(Type enumType, object value) }; } - public static string Format(Type enumType, object value, string format) + public static string Format(Type enumType, object value!!, string format!!) { RuntimeType rtType = ValidateRuntimeType(enumType); - if (value == null) - throw new ArgumentNullException(nameof(value)); - - if (format == null) - throw new ArgumentNullException(nameof(format)); - // If the value is an Enum then we need to extract the underlying value from it Type valueType = value.GetType(); if (valueType.IsEnum) @@ -1498,10 +1462,8 @@ private static object ToObject(Type enumType, bool value) => #endregion - private static RuntimeType ValidateRuntimeType(Type enumType) + private static RuntimeType ValidateRuntimeType(Type enumType!!) { - if (enumType == null) - throw new ArgumentNullException(nameof(enumType)); if (!enumType.IsEnum) throw new ArgumentException(SR.Arg_MustBeEnum, nameof(enumType)); if (enumType is not RuntimeType rtType) diff --git a/src/libraries/System.Private.CoreLib/src/System/Environment.cs b/src/libraries/System.Private.CoreLib/src/System/Environment.cs index 414db07d199e64..b3b011ac005dbf 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Environment.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Environment.cs @@ -21,11 +21,8 @@ public static partial class Environment // Unconditionally return false since .NET Core does not support object finalization during shutdown. public static bool HasShutdownStarted => false; - public static string? GetEnvironmentVariable(string variable) + public static string? GetEnvironmentVariable(string variable!!) { - if (variable == null) - throw new ArgumentNullException(nameof(variable)); - return GetEnvironmentVariableCore(variable); } @@ -34,8 +31,7 @@ public static partial class Environment if (target == EnvironmentVariableTarget.Process) return GetEnvironmentVariable(variable); - if (variable == null) - throw new ArgumentNullException(nameof(variable)); + ArgumentNullException.ThrowIfNull(variable); bool fromMachine = ValidateAndConvertRegistryTarget(target); return GetEnvironmentVariableFromRegistry(variable, fromMachine); @@ -82,11 +78,8 @@ public static string CurrentDirectory } } - public static string ExpandEnvironmentVariables(string name) + public static string ExpandEnvironmentVariables(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (name.Length == 0) return name; diff --git a/src/libraries/System.Private.CoreLib/src/System/Exception.cs b/src/libraries/System.Private.CoreLib/src/System/Exception.cs index a6760916f93061..8196ecc7e0fc57 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Exception.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Exception.cs @@ -37,11 +37,8 @@ public Exception(string? message, Exception? innerException) _innerException = innerException; } - protected Exception(SerializationInfo info, StreamingContext context) + protected Exception(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - _message = info.GetString("Message"); // Do not rename (binary serialization) _data = (IDictionary?)(info.GetValueNoThrow("Data", typeof(IDictionary))); // Do not rename (binary serialization) _innerException = (Exception?)(info.GetValue("InnerException", typeof(Exception))); // Do not rename (binary serialization) @@ -93,17 +90,9 @@ public virtual string? Source set => _source = value; } - public virtual void GetObjectData(SerializationInfo info, StreamingContext context) + public virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - - if (_source == null) - { - _source = Source; // Set the Source information correctly before serialization - } + _source ??= Source; // Set the Source information correctly before serialization info.AddValue("ClassName", GetClassName(), typeof(string)); // Do not rename (binary serialization) info.AddValue("Message", _message, typeof(string)); // Do not rename (binary serialization) diff --git a/src/libraries/System.Private.CoreLib/src/System/FormattableString.cs b/src/libraries/System.Private.CoreLib/src/System/FormattableString.cs index 6624b50c2953a4..6013b99da11d9d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/FormattableString.cs +++ b/src/libraries/System.Private.CoreLib/src/System/FormattableString.cs @@ -44,10 +44,8 @@ public abstract class FormattableString : IFormattable /// public abstract string ToString(IFormatProvider? formatProvider); - string IFormattable.ToString(string? ignored, IFormatProvider? formatProvider) - { - return ToString(formatProvider); - } + string IFormattable.ToString(string? ignored, IFormatProvider? formatProvider) => + ToString(formatProvider); /// /// Format the given object in the invariant culture. This static method may be @@ -62,15 +60,8 @@ string IFormattable.ToString(string? ignored, IFormatProvider? formatProvider) /// Invariant($"{{ lat = {latitude}; lon = {longitude} }}") /// /// - public static string Invariant(FormattableString formattable) - { - if (formattable == null) - { - throw new ArgumentNullException(nameof(formattable)); - } - - return formattable.ToString(Globalization.CultureInfo.InvariantCulture); - } + public static string Invariant(FormattableString formattable!!) => + formattable.ToString(Globalization.CultureInfo.InvariantCulture); /// /// Format the given object in the current culture. This static method may be @@ -85,19 +76,10 @@ public static string Invariant(FormattableString formattable) /// CurrentCulture($"{{ lat = {latitude}; lon = {longitude} }}") /// /// - public static string CurrentCulture(FormattableString formattable) - { - if (formattable == null) - { - throw new ArgumentNullException(nameof(formattable)); - } - - return formattable.ToString(Globalization.CultureInfo.CurrentCulture); - } + public static string CurrentCulture(FormattableString formattable!!) => + formattable.ToString(Globalization.CultureInfo.CurrentCulture); - public override string ToString() - { - return ToString(Globalization.CultureInfo.CurrentCulture); - } + public override string ToString() => + ToString(Globalization.CultureInfo.CurrentCulture); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/Calendar.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/Calendar.cs index 5daaf13004675c..4faea9c957d0d9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/Calendar.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/Calendar.cs @@ -82,12 +82,8 @@ public virtual object Clone() return o; } - public static Calendar ReadOnly(Calendar calendar) + public static Calendar ReadOnly(Calendar calendar!!) { - if (calendar == null) - { - throw new ArgumentNullException(nameof(calendar)); - } if (calendar.IsReadOnly) { return calendar; diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Icu.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Icu.cs index 02c846c457beea..58c81836dc762a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Icu.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Icu.cs @@ -613,13 +613,11 @@ private unsafe bool EndsWithOrdinalHelper(ReadOnlySpan source, ReadOnlySpa } } - private unsafe SortKey IcuCreateSortKey(string source, CompareOptions options) + private unsafe SortKey IcuCreateSortKey(string source!!, CompareOptions options) { Debug.Assert(!GlobalizationMode.Invariant); Debug.Assert(!GlobalizationMode.UseNls); - if (source==null) { throw new ArgumentNullException(nameof(source)); } - if ((options & ValidCompareMaskOffFlags) != 0) { throw new ArgumentException(SR.Argument_InvalidFlag, nameof(options)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Invariant.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Invariant.cs index c3d568002907b6..0de506a38d3b4f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Invariant.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Invariant.cs @@ -9,10 +9,8 @@ namespace System.Globalization { public partial class CompareInfo { - private SortKey InvariantCreateSortKey(string source, CompareOptions options) + private SortKey InvariantCreateSortKey(string source!!, CompareOptions options) { - if (source == null) { throw new ArgumentNullException(nameof(source)); } - if ((options & ValidCompareMaskOffFlags) != 0) { throw new ArgumentException(SR.Argument_InvalidFlag, nameof(options)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Nls.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Nls.cs index 1dc301b970aa5f..379a98b97fd2c6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Nls.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.Nls.cs @@ -366,13 +366,11 @@ private unsafe bool NlsEndsWith(ReadOnlySpan source, ReadOnlySpan su private const int FIND_FROMSTART = 0x00400000; private const int FIND_FROMEND = 0x00800000; - private unsafe SortKey NlsCreateSortKey(string source, CompareOptions options) + private unsafe SortKey NlsCreateSortKey(string source!!, CompareOptions options) { Debug.Assert(!GlobalizationMode.Invariant); Debug.Assert(GlobalizationMode.UseNls); - if (source == null) { throw new ArgumentNullException(nameof(source)); } - if ((options & ValidCompareMaskOffFlags) != 0) { throw new ArgumentException(SR.Argument_InvalidFlag, nameof(options)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs index bf68d1214d3616..1bf3346472d957 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs @@ -62,13 +62,9 @@ internal CompareInfo(CultureInfo culture) /// assembly for the specified culture. /// Warning: The assembly versioning mechanism is dead! /// - public static CompareInfo GetCompareInfo(int culture, Assembly assembly) + public static CompareInfo GetCompareInfo(int culture, Assembly assembly!!) { // Parameter checking. - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } if (assembly != typeof(object).Module.Assembly) { throw new ArgumentException(SR.Argument_OnlyMscorlib, nameof(assembly)); @@ -82,16 +78,8 @@ public static CompareInfo GetCompareInfo(int culture, Assembly assembly) /// assembly for the specified culture. /// The purpose of this method is to provide version for CompareInfo tables. /// - public static CompareInfo GetCompareInfo(string name, Assembly assembly) + public static CompareInfo GetCompareInfo(string name!!, Assembly assembly!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } if (assembly != typeof(object).Module.Assembly) { throw new ArgumentException(SR.Argument_OnlyMscorlib, nameof(assembly)); @@ -117,13 +105,8 @@ public static CompareInfo GetCompareInfo(int culture) /// /// Get the CompareInfo for the specified culture. /// - public static CompareInfo GetCompareInfo(string name) + public static CompareInfo GetCompareInfo(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - return CultureInfo.GetCultureInfo(name).CompareInfo; } @@ -132,13 +115,8 @@ public static bool IsSortable(char ch) return IsSortable(MemoryMarshal.CreateReadOnlySpan(ref ch, 1)); } - public static bool IsSortable(string text) + public static bool IsSortable(string text!!) { - if (text == null) - { - throw new ArgumentNullException(nameof(text)); - } - return IsSortable(text.AsSpan()); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureData.Windows.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureData.Windows.cs index 69de37e304589a..943d7dc829f710 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureData.Windows.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureData.Windows.cs @@ -186,6 +186,13 @@ internal static unsafe CultureData GetCurrentRegionData() { Debug.Assert(!GlobalizationMode.Invariant); + // LOCALE_CUSTOM_UNSPECIFIED ia an unspecified custom locale, used to identify all supplemental locales. + // Supplemental locales cannot be distinguished from one another by their locale identifiers, but can be distinguished by their locale names. + if (culture == CultureInfo.LOCALE_CUSTOM_UNSPECIFIED) + { + return null; + } + char* pBuffer = stackalloc char[Interop.Kernel32.LOCALE_NAME_MAX_LENGTH + 1]; // +1 for the null termination int length = Interop.Kernel32.LCIDToLocaleName(culture, pBuffer, Interop.Kernel32.LOCALE_NAME_MAX_LENGTH + 1, Interop.Kernel32.LOCALE_ALLOW_NEUTRAL_NAMES); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.cs index baf1e6dd215017..48ac59fc2fe608 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.cs @@ -164,13 +164,8 @@ public CultureInfo(string name) : this(name, true) { } - public CultureInfo(string name, bool useUserOverride) + public CultureInfo(string name!!, bool useUserOverride) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - // Get our data providing record CultureData? cultureData = CultureData.GetCultureData(name, useUserOverride); @@ -243,13 +238,8 @@ public CultureInfo(int culture, bool useUserOverride) /// name we create for it has to include both names, and the logic for this is in /// the GetCultureInfo override *only*. /// - internal CultureInfo(string cultureName, string textAndCompareCultureName) + internal CultureInfo(string cultureName, string textAndCompareCultureName!!) { - if (cultureName == null) - { - throw new ArgumentNullException(nameof(cultureName), SR.ArgumentNull_String); - } - CultureData? cultureData = CultureData.GetCultureData(cultureName, false) ?? throw new CultureNotFoundException(nameof(cultureName), cultureName, GetCultureNotSupportedExceptionMessage()); @@ -397,10 +387,7 @@ public static CultureInfo CurrentCulture } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (s_asyncLocalCurrentCulture == null) { @@ -420,10 +407,7 @@ public static CultureInfo CurrentUICulture } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); CultureInfo.VerifyCultureName(value, true); @@ -750,10 +734,7 @@ public virtual NumberFormatInfo NumberFormat } set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _numInfo = value; @@ -780,10 +761,7 @@ public virtual DateTimeFormatInfo DateTimeFormat set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _dateTimeInfo = value; @@ -971,13 +949,8 @@ public virtual object Clone() return ci; } - public static CultureInfo ReadOnly(CultureInfo ci) + public static CultureInfo ReadOnly(CultureInfo ci!!) { - if (ci == null) - { - throw new ArgumentNullException(nameof(ci)); - } - if (ci.IsReadOnly) { return ci; @@ -1083,14 +1056,8 @@ public static CultureInfo GetCultureInfo(int culture) /// Gets a cached copy of the specified culture from an internal /// hashtable (or creates it if not found). (Named version) /// - public static CultureInfo GetCultureInfo(string name) + public static CultureInfo GetCultureInfo(string name!!) { - // Make sure we have a valid, non-zero length string as name - if (name is null) - { - throw new ArgumentNullException(nameof(name)); - } - name = CultureData.AnsiToLower(name); Dictionary nameTable = CachedCulturesByName; CultureInfo? result; @@ -1123,17 +1090,8 @@ public static CultureInfo GetCultureInfo(string name) /// Gets a cached copy of the specified culture from an internal /// hashtable (or creates it if not found). /// - public static CultureInfo GetCultureInfo(string name, string altName) + public static CultureInfo GetCultureInfo(string name!!, string altName!!) { - if (name is null) - { - throw new ArgumentNullException(nameof(name)); - } - if (altName is null) - { - throw new ArgumentNullException(nameof(altName)); - } - name = CultureData.AnsiToLower(name); altName = CultureData.AnsiToLower(altName); string nameAndAltName = name + "\xfffd" + altName; @@ -1168,13 +1126,8 @@ public static CultureInfo GetCultureInfo(string name, string altName) return result; } - public static CultureInfo GetCultureInfo(string name, bool predefinedOnly) + public static CultureInfo GetCultureInfo(string name!!, bool predefinedOnly) { - if (name is null) - { - throw new ArgumentNullException(nameof(name)); - } - if (predefinedOnly && !GlobalizationMode.Invariant) { if (GlobalizationMode.UseNls ? !CultureData.NlsIsEnsurePredefinedLocaleName(name): !CultureData.IcuIsEnsurePredefinedLocaleName(name)) diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs index b4c44b86800614..77f18189633022 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/DateTimeFormatInfo.cs @@ -372,10 +372,7 @@ public string AMDesignator { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); ClearTokenHashTable(); amDesignator = value; @@ -396,10 +393,7 @@ public Calendar Calendar { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value == calendar) { @@ -482,13 +476,8 @@ public Calendar Calendar /// /// Get the era value by parsing the name of the era. /// - public int GetEra(string eraName) + public int GetEra(string eraName!!) { - if (eraName == null) - { - throw new ArgumentNullException(nameof(eraName)); - } - // The Era Name and Abbreviated Era Name // for Taiwan Calendar on non-Taiwan SKU returns empty string (which // would be matched below) but we don't want the empty string to give @@ -621,10 +610,7 @@ public string DateSeparator { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); ClearTokenHashTable(); dateSeparator = value; @@ -701,10 +687,7 @@ public string FullDateTimePattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); fullDateTimePattern = value; } @@ -725,10 +708,7 @@ public string LongDatePattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Remember the new string longDatePattern = value; @@ -762,10 +742,7 @@ public string LongTimePattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Remember the new string longTimePattern = value; @@ -807,10 +784,7 @@ public string MonthDayPattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); monthDayPattern = value; } @@ -834,10 +808,7 @@ public string PMDesignator { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); ClearTokenHashTable(); pmDesignator = value; @@ -865,10 +836,7 @@ public string ShortDatePattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Remember the new string shortDatePattern = value; @@ -904,10 +872,7 @@ public string ShortTimePattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Remember the new string shortTimePattern = value; @@ -1021,10 +986,7 @@ public string TimeSeparator { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); ClearTokenHashTable(); timeSeparator = value; @@ -1049,10 +1011,7 @@ public string YearMonthPattern { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); // Remember the new string yearMonthPattern = value; @@ -1092,10 +1051,7 @@ public string[] AbbreviatedDayNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 7) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 7), nameof(value)); @@ -1120,10 +1076,7 @@ public string[] ShortestDayNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 7) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 7), nameof(value)); @@ -1143,10 +1096,7 @@ public string[] DayNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 7) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 7), nameof(value)); @@ -1168,10 +1118,7 @@ public string[] AbbreviatedMonthNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 13) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 13), nameof(value)); @@ -1192,10 +1139,7 @@ public string[] MonthNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 13) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 13), nameof(value)); @@ -1639,13 +1583,8 @@ private string[] UnclonedLongTimePatterns } } - public static DateTimeFormatInfo ReadOnly(DateTimeFormatInfo dtfi) + public static DateTimeFormatInfo ReadOnly(DateTimeFormatInfo dtfi!!) { - if (dtfi == null) - { - throw new ArgumentNullException(nameof(dtfi)); - } - if (dtfi.IsReadOnly) { return dtfi; @@ -1694,10 +1633,7 @@ public void SetAllDateTimePatterns(string[] patterns, char format) { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (patterns == null) - { - throw new ArgumentNullException(nameof(patterns)); - } + ArgumentNullException.ThrowIfNull(patterns); if (patterns.Length == 0) { @@ -1760,10 +1696,7 @@ public string[] AbbreviatedMonthGenitiveNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 13) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 13), nameof(value)); @@ -1784,10 +1717,7 @@ public string[] MonthGenitiveNames { throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); if (value.Length != 13) { throw new ArgumentException(SR.Format(SR.Argument_InvalidArrayLength, 13), nameof(value)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationExtensions.cs index 8e2ee3d3af8acd..919f0cf7cc486c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationExtensions.cs @@ -5,13 +5,8 @@ namespace System.Globalization { public static class GlobalizationExtensions { - public static StringComparer GetStringComparer(this CompareInfo compareInfo, CompareOptions options) + public static StringComparer GetStringComparer(this CompareInfo compareInfo!!, CompareOptions options) { - if (compareInfo == null) - { - throw new ArgumentNullException(nameof(compareInfo)); - } - if (options == CompareOptions.Ordinal) { return StringComparer.Ordinal; diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/IdnMapping.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/IdnMapping.cs index 81b20d53e55a48..6b5a7b64c9ed87 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/IdnMapping.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/IdnMapping.cs @@ -56,17 +56,13 @@ public bool UseStd3AsciiRules public string GetAscii(string unicode) => GetAscii(unicode, 0); - public string GetAscii(string unicode, int index) + public string GetAscii(string unicode!!, int index) { - if (unicode == null) - throw new ArgumentNullException(nameof(unicode)); return GetAscii(unicode, index, unicode.Length - index); } - public string GetAscii(string unicode, int index, int count) + public string GetAscii(string unicode!!, int index, int count) { - if (unicode == null) - throw new ArgumentNullException(nameof(unicode)); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0) ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (index > unicode.Length) @@ -103,17 +99,13 @@ public string GetAscii(string unicode, int index, int count) public string GetUnicode(string ascii) => GetUnicode(ascii, 0); - public string GetUnicode(string ascii, int index) + public string GetUnicode(string ascii!!, int index) { - if (ascii == null) - throw new ArgumentNullException(nameof(ascii)); return GetUnicode(ascii, index, ascii.Length - index); } - public string GetUnicode(string ascii, int index, int count) + public string GetUnicode(string ascii!!, int index, int count) { - if (ascii == null) - throw new ArgumentNullException(nameof(ascii)); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0) ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (index > ascii.Length) @@ -438,7 +430,7 @@ private static string PunycodeEncode(string unicode) /* handled already. Find the next larger one: */ int j; int m; - int test = 0; + int test; for (m = c_maxint, j = iAfterLastDot; j < iNextDot; j += IsSupplementary(test) ? 2 : 1) diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/NumberFormatInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/NumberFormatInfo.cs index 8387dd024d17fd..fa8b8ab2680b97 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/NumberFormatInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/NumberFormatInfo.cs @@ -80,13 +80,8 @@ public NumberFormatInfo() { } - private static void VerifyNativeDigits(string[] nativeDig, string propertyName) + private static void VerifyNativeDigits(string[] nativeDig!!, string propertyName) { - if (nativeDig == null) - { - throw new ArgumentNullException(propertyName, SR.ArgumentNull_Array); - } - if (nativeDig.Length != 10) { throw new ArgumentException(SR.Argument_InvalidNativeDigitCount, propertyName); @@ -280,10 +275,7 @@ public int[] CurrencyGroupSizes get => (int[])_currencyGroupSizes.Clone(); set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); @@ -298,10 +290,7 @@ public int[] NumberGroupSizes get => (int[])_numberGroupSizes.Clone(); set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); @@ -316,10 +305,7 @@ public int[] PercentGroupSizes get => (int[])_percentGroupSizes.Clone(); set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); int[] inputSizes = (int[])value.Clone(); @@ -344,10 +330,7 @@ public string CurrencySymbol get => _currencySymbol; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _currencySymbol = value; @@ -381,10 +364,7 @@ public string NaNSymbol get => _nanSymbol; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _nanSymbol = value; @@ -471,10 +451,7 @@ public string NegativeInfinitySymbol get => _negativeInfinitySymbol; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _negativeInfinitySymbol = value; @@ -486,10 +463,7 @@ public string NegativeSign get => _negativeSign; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _negativeSign = value; @@ -560,10 +534,7 @@ public string PositiveInfinitySymbol get => _positiveInfinitySymbol; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _positiveInfinitySymbol = value; @@ -575,10 +546,7 @@ public string PositiveSign get => _positiveSign; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _positiveSign = value; @@ -642,10 +610,7 @@ public string PerMilleSymbol get => _perMilleSymbol; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _perMilleSymbol = value; @@ -679,13 +644,8 @@ public DigitShapes DigitSubstitution return formatType == typeof(NumberFormatInfo) ? this : null; } - public static NumberFormatInfo ReadOnly(NumberFormatInfo nfi) + public static NumberFormatInfo ReadOnly(NumberFormatInfo nfi!!) { - if (nfi == null) - { - throw new ArgumentNullException(nameof(nfi)); - } - if (nfi.IsReadOnly) { return nfi; diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/RegionInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/RegionInfo.cs index addd8a0a667851..01b1edd10cbf65 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/RegionInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/RegionInfo.cs @@ -23,13 +23,8 @@ public class RegionInfo // The RegionInfo for our current region internal static volatile RegionInfo? s_currentRegionInfo; - public RegionInfo(string name) + public RegionInfo(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - // The InvariantCulture has no matching region if (name.Length == 0) { @@ -63,7 +58,7 @@ public RegionInfo(int culture) throw new ArgumentException(SR.Format(SR.Argument_CultureIsNeutral, culture), nameof(culture)); } - if (culture == CultureInfo.LOCALE_CUSTOM_DEFAULT) + if (culture == CultureInfo.LOCALE_CUSTOM_DEFAULT || culture == CultureInfo.LOCALE_CUSTOM_UNSPECIFIED) { // Not supposed to be neutral throw new ArgumentException(SR.Format(SR.Argument_CustomCultureCannotBePassedByNumber, culture), nameof(culture)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/SortKey.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/SortKey.cs index a98b7b880d1fda..231a4594608b8a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/SortKey.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/SortKey.cs @@ -43,17 +43,8 @@ internal SortKey(CompareInfo compareInfo, string str, CompareOptions options, by /// equal, a number less than 0 if sortkey1 is less than sortkey2, /// and a number greater than 0 if sortkey1 is greater than sortkey2. /// - public static int Compare(SortKey sortkey1, SortKey sortkey2) + public static int Compare(SortKey sortkey1!!, SortKey sortkey2!!) { - if (sortkey1 == null) - { - throw new ArgumentNullException(nameof(sortkey1)); - } - if (sortkey2 == null) - { - throw new ArgumentNullException(nameof(sortkey2)); - } - byte[] key1Data = sortkey1._keyData; byte[] key2Data = sortkey2._keyData; diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/StringInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/StringInfo.cs index 1e4c69899de7c8..365bcb3f25d192 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/StringInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/StringInfo.cs @@ -58,7 +58,8 @@ public string String [MemberNotNull(nameof(_str))] set { - _str = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _str = value; _indexes = null; } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs index 4679beebb4a484..a0b71e7c6188f5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs @@ -90,13 +90,8 @@ public object Clone() /// Create a cloned readonly instance or return the input one if it is /// readonly. /// - public static TextInfo ReadOnly(TextInfo textInfo) + public static TextInfo ReadOnly(TextInfo textInfo!!) { - if (textInfo == null) - { - throw new ArgumentNullException(nameof(textInfo)); - } - if (textInfo.IsReadOnly) { return textInfo; @@ -128,10 +123,7 @@ public string ListSeparator get => _listSeparator ??= _cultureData.ListSeparator; set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); VerifyWritable(); _listSeparator = value; @@ -172,13 +164,8 @@ internal static char ToLowerInvariant(char c) return Invariant.ChangeCase(c, toUpper: false); } - public string ToLower(string str) + public string ToLower(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - if (GlobalizationMode.Invariant) { return InvariantModeCasing.ToLower(str); @@ -586,13 +573,8 @@ internal static char ToUpperInvariant(char c) return Invariant.ChangeCase(c, toUpper: true); } - public string ToUpper(string str) + public string ToUpper(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - if (GlobalizationMode.Invariant) { return InvariantModeCasing.ToUpper(str); @@ -664,13 +646,8 @@ public override string ToString() /// influence which letter or letters of a "word" are uppercased when titlecasing strings. For example /// "l'arbre" is considered two words in French, whereas "can't" is considered one word in English. /// - public unsafe string ToTitleCase(string str) + public unsafe string ToTitleCase(string str!!) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } - if (str.Length == 0) { return str; diff --git a/src/libraries/System.Private.CoreLib/src/System/Guid.cs b/src/libraries/System.Private.CoreLib/src/System/Guid.cs index a5ba1f6c870b20..de5a89ef5bc321 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Guid.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Guid.cs @@ -41,8 +41,8 @@ namespace System private readonly byte _k; // Do not rename (binary serialization) // Creates a new guid from an array of bytes. - public Guid(byte[] b) : - this(new ReadOnlySpan(b ?? throw new ArgumentNullException(nameof(b)))) + public Guid(byte[] b!!) : + this(new ReadOnlySpan(b)) { } @@ -91,12 +91,8 @@ public Guid(uint a, ushort b, ushort c, byte d, byte e, byte f, byte g, byte h, } // Creates a new GUID initialized to the value represented by the arguments. - public Guid(int a, short b, short c, byte[] d) + public Guid(int a, short b, short c, byte[] d!!) { - if (d == null) - { - throw new ArgumentNullException(nameof(d)); - } if (d.Length != 8) { throw new ArgumentException(SR.Format(SR.Arg_GuidArrayCtor, "8"), nameof(d)); @@ -213,13 +209,8 @@ public void ReverseAbcEndianness() // The string must be of the form dddddddd-dddd-dddd-dddd-dddddddddddd. where // d is a hex digit. (That is 8 hex digits, followed by 4, then 4, then 4, // then 12) such as: "CA761232-ED42-11CE-BACD-00AA0057B223" - public Guid(string g) + public Guid(string g!!) { - if (g == null) - { - throw new ArgumentNullException(nameof(g)); - } - var result = new GuidResult(GuidParseThrowStyle.All); bool success = TryParseGuid(g, ref result); Debug.Assert(success, "GuidParseThrowStyle.All means throw on all failures"); @@ -227,8 +218,8 @@ public Guid(string g) this = result.ToGuid(); } - public static Guid Parse(string input) => - Parse(input != null ? (ReadOnlySpan)input : throw new ArgumentNullException(nameof(input))); + public static Guid Parse(string input!!) => + Parse((ReadOnlySpan)input); public static Guid Parse(ReadOnlySpan input) { @@ -265,10 +256,8 @@ public static bool TryParse(ReadOnlySpan input, out Guid result) } } - public static Guid ParseExact(string input, string format) => - ParseExact( - input != null ? (ReadOnlySpan)input : throw new ArgumentNullException(nameof(input)), - format != null ? (ReadOnlySpan)format : throw new ArgumentNullException(nameof(format))); + public static Guid ParseExact(string input!!, string format!!) => + ParseExact((ReadOnlySpan)input, (ReadOnlySpan)format); public static Guid ParseExact(ReadOnlySpan input, ReadOnlySpan format) { diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/BinaryReader.cs b/src/libraries/System.Private.CoreLib/src/System/IO/BinaryReader.cs index cea8148a7d9186..a9e94ca5bce630 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/BinaryReader.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/BinaryReader.cs @@ -45,16 +45,8 @@ public BinaryReader(Stream input, Encoding encoding) : this(input, encoding, fal { } - public BinaryReader(Stream input, Encoding encoding, bool leaveOpen) + public BinaryReader(Stream input!!, Encoding encoding!!, bool leaveOpen) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - if (encoding == null) - { - throw new ArgumentNullException(nameof(encoding)); - } if (!input.CanRead) { throw new ArgumentException(SR.Argument_StreamNotReadable); @@ -317,12 +309,8 @@ public virtual string ReadString() return StringBuilderCache.GetStringAndRelease(sb); } - public virtual int Read(char[] buffer, int index, int count) + public virtual int Read(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -449,12 +437,8 @@ public virtual char[] ReadChars(int count) return chars; } - public virtual int Read(byte[] buffer, int index, int count) + public virtual int Read(byte[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/BinaryWriter.cs b/src/libraries/System.Private.CoreLib/src/System/IO/BinaryWriter.cs index a9cd6bd1575893..f81b64c4dd2160 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/BinaryWriter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/BinaryWriter.cs @@ -42,12 +42,8 @@ public BinaryWriter(Stream output, Encoding encoding) : this(output, encoding, f { } - public BinaryWriter(Stream output, Encoding encoding, bool leaveOpen) + public BinaryWriter(Stream output!!, Encoding encoding!!, bool leaveOpen) { - if (output == null) - throw new ArgumentNullException(nameof(output)); - if (encoding == null) - throw new ArgumentNullException(nameof(encoding)); if (!output.CanWrite) throw new ArgumentException(SR.Argument_StreamNotWritable); @@ -154,10 +150,8 @@ public virtual long Seek(int offset, SeekOrigin origin) // This default implementation calls the Write(Object, int, int) // method to write the byte array. // - public virtual void Write(byte[] buffer) + public virtual void Write(byte[] buffer!!) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer)); OutStream.Write(buffer, 0, buffer.Length); } @@ -215,11 +209,8 @@ public virtual void Write(char ch) // This default implementation calls the Write(Object, int, int) // method to write the character array. // - public virtual void Write(char[] chars) + public virtual void Write(char[] chars!!) { - if (chars == null) - throw new ArgumentNullException(nameof(chars)); - WriteCharsCommonWithoutLengthPrefix(chars, useThisWriteOverride: false); } @@ -228,10 +219,8 @@ public virtual void Write(char[] chars) // This default implementation calls the Write(Object, int, int) // method to write the character array. // - public virtual void Write(char[] chars, int index, int count) + public virtual void Write(char[] chars!!, int index, int count) { - if (chars == null) - throw new ArgumentNullException(nameof(chars)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) @@ -347,11 +336,8 @@ public virtual void Write(Half value) // an encoded unsigned integer with variable length, and then writes that many characters // to the stream. // - public virtual void Write(string value) + public virtual void Write(string value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // Common: UTF-8, small string, avoid 2-pass calculation // Less common: UTF-8, large string, avoid 2-pass calculation // Uncommon: excessively large string or not UTF-8 diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs index eea2cda3f8c974..c23e466380a5fc 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Directory.cs @@ -152,16 +152,11 @@ public static string[] GetFileSystemEntries(string path, string searchPattern, E => new List(InternalEnumeratePaths(path, searchPattern, SearchTarget.Both, enumerationOptions)).ToArray(); internal static IEnumerable InternalEnumeratePaths( - string path, - string searchPattern, + string path!!, + string searchPattern!!, SearchTarget searchTarget, EnumerationOptions options) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - if (searchPattern == null) - throw new ArgumentNullException(nameof(searchPattern)); - FileSystemEnumerableFactory.NormalizeInputs(ref path, ref searchPattern, options.MatchType); return searchTarget switch @@ -206,11 +201,8 @@ public static IEnumerable EnumerateFileSystemEntries(string path, string public static IEnumerable EnumerateFileSystemEntries(string path, string searchPattern, EnumerationOptions enumerationOptions) => InternalEnumeratePaths(path, searchPattern, SearchTarget.Both, enumerationOptions); - public static string GetDirectoryRoot(string path) + public static string GetDirectoryRoot(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - string fullPath = Path.GetFullPath(path); string root = Path.GetPathRoot(fullPath)!; @@ -231,48 +223,7 @@ public static void Move(string sourceDirName, string destDirName) ArgumentException.ThrowIfNullOrEmpty(sourceDirName); ArgumentException.ThrowIfNullOrEmpty(destDirName); - string fullsourceDirName = Path.GetFullPath(sourceDirName); - string sourcePath = PathInternal.EnsureTrailingSeparator(fullsourceDirName); - - string fulldestDirName = Path.GetFullPath(destDirName); - string destPath = PathInternal.EnsureTrailingSeparator(fulldestDirName); - - ReadOnlySpan sourceDirNameFromFullPath = Path.GetFileName(fullsourceDirName.AsSpan()); - ReadOnlySpan destDirNameFromFullPath = Path.GetFileName(fulldestDirName.AsSpan()); - - StringComparison fileSystemSensitivity = PathInternal.StringComparison; - bool directoriesAreCaseVariants = - !sourceDirNameFromFullPath.SequenceEqual(destDirNameFromFullPath) && - sourceDirNameFromFullPath.Equals(destDirNameFromFullPath, StringComparison.OrdinalIgnoreCase); - bool sameDirectoryDifferentCase = - directoriesAreCaseVariants && - destDirNameFromFullPath.Equals(sourceDirNameFromFullPath, fileSystemSensitivity); - - // If the destination directories are the exact same name - if (!sameDirectoryDifferentCase && string.Equals(sourcePath, destPath, fileSystemSensitivity)) - throw new IOException(SR.IO_SourceDestMustBeDifferent); - - ReadOnlySpan sourceRoot = Path.GetPathRoot(sourcePath.AsSpan()); - ReadOnlySpan destinationRoot = Path.GetPathRoot(destPath.AsSpan()); - - // Compare paths for the same, skip this step if we already know the paths are identical. - if (!sourceRoot.Equals(destinationRoot, StringComparison.OrdinalIgnoreCase)) - throw new IOException(SR.IO_SourceDestMustHaveSameRoot); - - // Windows will throw if the source file/directory doesn't exist, we preemptively check - // to make sure our cross platform behavior matches .NET Framework behavior. - if (!FileSystem.DirectoryExists(fullsourceDirName) && !FileSystem.FileExists(fullsourceDirName)) - throw new DirectoryNotFoundException(SR.Format(SR.IO_PathNotFound_Path, fullsourceDirName)); - - if (!sameDirectoryDifferentCase // This check is to allow renaming of directories - && FileSystem.DirectoryExists(fulldestDirName)) - throw new IOException(SR.Format(SR.IO_AlreadyExists_Name, fulldestDirName)); - - // If the directories aren't the same and the OS says the directory exists already, fail. - if (!sameDirectoryDifferentCase && Directory.Exists(fulldestDirName)) - throw new IOException(SR.Format(SR.IO_AlreadyExists_Name, fulldestDirName)); - - FileSystem.MoveDirectory(fullsourceDirName, fulldestDirName); + FileSystem.MoveDirectory(Path.GetFullPath(sourceDirName), Path.GetFullPath(destDirName)); } public static void Delete(string path) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/DirectoryInfo.cs b/src/libraries/System.Private.CoreLib/src/System/IO/DirectoryInfo.cs index 771b5e69a05ccd..f412243f097a2a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/DirectoryInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/DirectoryInfo.cs @@ -25,9 +25,9 @@ internal DirectoryInfo(string originalPath, string? fullPath = null, string? fil Init(originalPath, fullPath, fileName, isNormalized); } - private void Init(string originalPath, string? fullPath = null, string? fileName = null, bool isNormalized = false) + private void Init(string originalPath!!, string? fullPath = null, string? fileName = null, bool isNormalized = false) { - OriginalPath = originalPath ?? throw new ArgumentNullException(nameof(originalPath)); + OriginalPath = originalPath; fullPath = fullPath ?? originalPath; fullPath = isNormalized ? fullPath : Path.GetFullPath(fullPath); @@ -55,10 +55,8 @@ public DirectoryInfo? Parent } } - public DirectoryInfo CreateSubdirectory(string path) + public DirectoryInfo CreateSubdirectory(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); if (PathInternal.IsEffectivelyEmpty(path.AsSpan())) throw new ArgumentException(SR.Argument_PathEmpty, nameof(path)); if (Path.IsPathRooted(path)) @@ -165,13 +163,11 @@ public IEnumerable EnumerateFileSystemInfos(string searchPattern private IEnumerable InternalEnumerateInfos( string path, - string searchPattern, + string searchPattern!!, SearchTarget searchTarget, EnumerationOptions options) { Debug.Assert(path != null); - if (searchPattern == null) - throw new ArgumentNullException(nameof(searchPattern)); _isNormalized &= FileSystemEnumerableFactory.NormalizeInputs(ref path, ref searchPattern, options.MatchType); @@ -192,30 +188,10 @@ public void MoveTo(string destDirName) string destination = Path.GetFullPath(destDirName); - string destinationWithSeparator = PathInternal.EnsureTrailingSeparator(destination); - string sourceWithSeparator = PathInternal.EnsureTrailingSeparator(FullPath); - - if (string.Equals(sourceWithSeparator, destinationWithSeparator, PathInternal.StringComparison)) - throw new IOException(SR.IO_SourceDestMustBeDifferent); - - string? sourceRoot = Path.GetPathRoot(sourceWithSeparator); - string? destinationRoot = Path.GetPathRoot(destinationWithSeparator); - - if (!string.Equals(sourceRoot, destinationRoot, PathInternal.StringComparison)) - throw new IOException(SR.IO_SourceDestMustHaveSameRoot); - - // Windows will throw if the source file/directory doesn't exist, we preemptively check - // to make sure our cross platform behavior matches .NET Framework behavior. - if (!Exists && !FileSystem.FileExists(FullPath)) - throw new DirectoryNotFoundException(SR.Format(SR.IO_PathNotFound_Path, FullPath)); - - if (FileSystem.DirectoryExists(destination)) - throw new IOException(SR.Format(SR.IO_AlreadyExists_Name, destinationWithSeparator)); - FileSystem.MoveDirectory(FullPath, destination); Init(originalPath: destDirName, - fullPath: destinationWithSeparator, + fullPath: PathInternal.EnsureTrailingSeparator(destination), fileName: null, isNormalized: true); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerable.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerable.cs index 3f2e5a3b324ad4..f15399452c5958 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerable.cs @@ -23,10 +23,10 @@ public FileSystemEnumerable(string directory, FindTransform transform, Enumerati { } - internal FileSystemEnumerable(string directory, FindTransform transform, EnumerationOptions? options, bool isNormalized) + internal FileSystemEnumerable(string directory!!, FindTransform transform!!, EnumerationOptions? options, bool isNormalized) { - _directory = directory ?? throw new ArgumentNullException(nameof(directory)); - _transform = transform ?? throw new ArgumentNullException(nameof(transform)); + _directory = directory; + _transform = transform; _options = options ?? EnumerationOptions.Default; // We need to create the enumerator up front to ensure that we throw I/O exceptions for diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerator.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerator.cs index 6f22a9729b5d02..536cb8c41748fd 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerator.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemEnumerator.cs @@ -28,9 +28,9 @@ public FileSystemEnumerator(string directory, EnumerationOptions? options = null /// The directory to search in. /// Whether the directory path is already normalized or not. /// Enumeration options to use. - internal FileSystemEnumerator(string directory, bool isNormalized, EnumerationOptions? options = null) + internal FileSystemEnumerator(string directory!!, bool isNormalized, EnumerationOptions? options = null) { - _originalRootDirectory = directory ?? throw new ArgumentNullException(nameof(directory)); + _originalRootDirectory = directory; string path = isNormalized ? directory : Path.GetFullPath(directory); _rootDirectory = Path.TrimEndingDirectorySeparator(path); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/File.cs b/src/libraries/System.Private.CoreLib/src/System/IO/File.cs index d8b1124ed9b1b9..c2906595d49981 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/File.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/File.cs @@ -26,14 +26,14 @@ public static class File internal const int DefaultBufferSize = 4096; - public static StreamReader OpenText(string path) - => new StreamReader(path ?? throw new ArgumentNullException(nameof(path))); + public static StreamReader OpenText(string path!!) + => new StreamReader(path); - public static StreamWriter CreateText(string path) - => new StreamWriter(path ?? throw new ArgumentNullException(nameof(path)), append: false); + public static StreamWriter CreateText(string path!!) + => new StreamWriter(path, append: false); - public static StreamWriter AppendText(string path) - => new StreamWriter(path ?? throw new ArgumentNullException(nameof(path)), append: true); + public static StreamWriter AppendText(string path!!) + => new StreamWriter(path, append: true); /// /// Copies an existing file to a new file. @@ -78,8 +78,8 @@ public static FileStream Create(string path, int bufferSize, FileOptions options // // On Windows, Delete will fail for a file that is open for normal I/O // or a file that is memory mapped. - public static void Delete(string path) - => FileSystem.DeleteFile(Path.GetFullPath(path ?? throw new ArgumentNullException(nameof(path)))); + public static void Delete(string path!!) + => FileSystem.DeleteFile(Path.GetFullPath(path)); // Tests whether a file exists. The result is true if the file // given by the specified path exists; otherwise, the result is @@ -334,10 +334,7 @@ public static void WriteAllLines(string path, string[] contents, Encoding encodi public static void WriteAllLines(string path, IEnumerable contents, Encoding encoding) { Validate(path, encoding); - - if (contents == null) - throw new ArgumentNullException(nameof(contents)); - + ArgumentNullException.ThrowIfNull(contents); InternalWriteAllLines(new StreamWriter(path, false, encoding), contents); } @@ -371,23 +368,15 @@ public static void AppendAllLines(string path, IEnumerable contents) public static void AppendAllLines(string path, IEnumerable contents, Encoding encoding) { Validate(path, encoding); - - if (contents == null) - throw new ArgumentNullException(nameof(contents)); - + ArgumentNullException.ThrowIfNull(contents); InternalWriteAllLines(new StreamWriter(path, true, encoding), contents); } public static void Replace(string sourceFileName, string destinationFileName, string? destinationBackupFileName) => Replace(sourceFileName, destinationFileName, destinationBackupFileName, ignoreMetadataErrors: false); - public static void Replace(string sourceFileName, string destinationFileName, string? destinationBackupFileName, bool ignoreMetadataErrors) + public static void Replace(string sourceFileName!!, string destinationFileName!!, string? destinationBackupFileName, bool ignoreMetadataErrors) { - if (sourceFileName == null) - throw new ArgumentNullException(nameof(sourceFileName)); - if (destinationFileName == null) - throw new ArgumentNullException(nameof(destinationFileName)); - FileSystem.ReplaceFile( Path.GetFullPath(sourceFileName), Path.GetFullPath(destinationFileName), @@ -423,12 +412,12 @@ public static void Move(string sourceFileName, string destFileName, bool overwri } [SupportedOSPlatform("windows")] - public static void Encrypt(string path) - => FileSystem.Encrypt(path ?? throw new ArgumentNullException(nameof(path))); + public static void Encrypt(string path!!) + => FileSystem.Encrypt(path); [SupportedOSPlatform("windows")] - public static void Decrypt(string path) - => FileSystem.Decrypt(path ?? throw new ArgumentNullException(nameof(path))); + public static void Decrypt(string path!!) + => FileSystem.Decrypt(path); // If we use the path-taking constructors we will not have FileOptions.Asynchronous set and // we will have asynchronous file access faked by the thread pool. We want the real thing. @@ -645,10 +634,7 @@ private static async Task InternalReadAllLinesAsync(string path, Encod public static Task WriteAllLinesAsync(string path, IEnumerable contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { Validate(path, encoding); - - if (contents == null) - throw new ArgumentNullException(nameof(contents)); - + ArgumentNullException.ThrowIfNull(contents); return cancellationToken.IsCancellationRequested ? Task.FromCanceled(cancellationToken) : InternalWriteAllLinesAsync(AsyncStreamWriter(path, encoding, append: false), contents, cancellationToken); @@ -693,10 +679,7 @@ private static async Task InternalWriteAllLinesAsync(TextWriter writer, IEnumera public static Task AppendAllLinesAsync(string path, IEnumerable contents, Encoding encoding, CancellationToken cancellationToken = default(CancellationToken)) { Validate(path, encoding); - - if (contents == null) - throw new ArgumentNullException(nameof(contents)); - + ArgumentNullException.ThrowIfNull(contents); return cancellationToken.IsCancellationRequested ? Task.FromCanceled(cancellationToken) : InternalWriteAllLinesAsync(AsyncStreamWriter(path, encoding, append: true), contents, cancellationToken); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/FileInfo.cs b/src/libraries/System.Private.CoreLib/src/System/IO/FileInfo.cs index 0d9db030f900dd..cbc5ec0eca7e28 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/FileInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/FileInfo.cs @@ -18,10 +18,10 @@ public FileInfo(string fileName) { } - internal FileInfo(string originalPath, string? fullPath = null, string? fileName = null, bool isNormalized = false) + internal FileInfo(string originalPath!!, string? fullPath = null, string? fileName = null, bool isNormalized = false) { // Want to throw the original argument name - OriginalPath = originalPath ?? throw new ArgumentNullException(nameof(fileName)); + OriginalPath = originalPath; fullPath = fullPath ?? originalPath; Debug.Assert(!isNormalized || !PathInternal.IsPartiallyQualified(fullPath.AsSpan()), "should be fully qualified if normalized"); @@ -163,11 +163,8 @@ public void MoveTo(string destFileName, bool overwrite) public FileInfo Replace(string destinationFileName, string? destinationBackupFileName) => Replace(destinationFileName, destinationBackupFileName, ignoreMetadataErrors: false); - public FileInfo Replace(string destinationFileName, string? destinationBackupFileName, bool ignoreMetadataErrors) + public FileInfo Replace(string destinationFileName!!, string? destinationBackupFileName, bool ignoreMetadataErrors) { - if (destinationFileName == null) - throw new ArgumentNullException(nameof(destinationFileName)); - FileSystem.ReplaceFile( FullPath, Path.GetFullPath(destinationFileName), diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/FileStream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/FileStream.cs index 77685bb3b9a6a5..5e6314cf525d8a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/FileStream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/FileStream.cs @@ -520,13 +520,8 @@ public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, Asy return _strategy.BeginRead(buffer, offset, count, callback, state); } - public override int EndRead(IAsyncResult asyncResult) + public override int EndRead(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - return _strategy.EndRead(asyncResult); } @@ -546,13 +541,8 @@ public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, As return _strategy.BeginWrite(buffer, offset, count, callback, state); } - public override void EndWrite(IAsyncResult asyncResult) + public override void EndWrite(IAsyncResult asyncResult!!) { - if (asyncResult == null) - { - throw new ArgumentNullException(nameof(asyncResult)); - } - _strategy.EndWrite(asyncResult); } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Unix.cs b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Unix.cs index 3cff6ccd16e2bc..dab107f1aa7324 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Unix.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Unix.cs @@ -387,40 +387,58 @@ private static void CreateParentsAndDirectory(string fullPath) } } - public static void MoveDirectory(string sourceFullPath, string destFullPath) + private static void MoveDirectory(string sourceFullPath, string destFullPath, bool sameDirectoryDifferentCase) { - // Windows doesn't care if you try and copy a file via "MoveDirectory"... - if (FileExists(sourceFullPath)) - { - // ... but it doesn't like the source to have a trailing slash ... + ReadOnlySpan srcNoDirectorySeparator = Path.TrimEndingDirectorySeparator(sourceFullPath.AsSpan()); + ReadOnlySpan destNoDirectorySeparator = Path.TrimEndingDirectorySeparator(destFullPath.AsSpan()); + if (OperatingSystem.IsBrowser() && Path.EndsInDirectorySeparator(sourceFullPath) && FileExists(sourceFullPath)) + { // On Windows we end up with ERROR_INVALID_NAME, which is // "The filename, directory name, or volume label syntax is incorrect." - // - // This surfaces as an IOException, if we let it go beyond here it would - // give DirectoryNotFound. - - if (Path.EndsInDirectorySeparator(sourceFullPath)) - throw new IOException(SR.Format(SR.IO_PathNotFound_Path, sourceFullPath)); - - // ... but it doesn't care if the destination has a trailing separator. - destFullPath = Path.TrimEndingDirectorySeparator(destFullPath); + // On Unix, rename fails with ENOTDIR, but on WASM it does not. + // So if the path ends with directory separator, but it's a file, we just throw. + throw new IOException(SR.Format(SR.IO_PathNotFound_Path, sourceFullPath)); } - if (FileExists(destFullPath)) + if (!sameDirectoryDifferentCase) // This check is to allow renaming of directories { - // Some Unix distros will overwrite the destination file if it already exists. - // Throwing IOException to match Windows behavior. - throw new IOException(SR.Format(SR.IO_AlreadyExists_Name, destFullPath)); + if (Interop.Sys.Stat(destNoDirectorySeparator, out _) >= 0) + { + // destination exists, but before we throw we need to check whether source exists or not + + // Windows will throw if the source file/directory doesn't exist, we preemptively check + // to make sure our cross platform behavior matches .NET Framework behavior. + if (Interop.Sys.Stat(srcNoDirectorySeparator, out Interop.Sys.FileStatus sourceFileStatus) < 0) + { + throw new DirectoryNotFoundException(SR.Format(SR.IO_PathNotFound_Path, sourceFullPath)); + } + else if ((sourceFileStatus.Mode & Interop.Sys.FileTypes.S_IFMT) != Interop.Sys.FileTypes.S_IFDIR + && Path.EndsInDirectorySeparator(sourceFullPath)) + { + throw new IOException(SR.Format(SR.IO_PathNotFound_Path, sourceFullPath)); + } + + // Some Unix distros will overwrite the destination file if it already exists. + // Throwing IOException to match Windows behavior. + throw new IOException(SR.Format(SR.IO_AlreadyExists_Name, destFullPath)); + } } - if (Interop.Sys.Rename(sourceFullPath, destFullPath) < 0) + if (Interop.Sys.Rename(sourceFullPath, destNoDirectorySeparator) < 0) { Interop.ErrorInfo errorInfo = Interop.Sys.GetLastErrorInfo(); switch (errorInfo.Error) { case Interop.Error.EACCES: // match Win32 exception throw new IOException(SR.Format(SR.UnauthorizedAccess_IODenied_Path, sourceFullPath), errorInfo.RawErrno); + case Interop.Error.ENOENT: + throw new DirectoryNotFoundException(SR.Format(SR.IO_PathNotFound_Path, + Interop.Sys.Stat(srcNoDirectorySeparator, out _) >= 0 + ? destFullPath // the source directory exists, so destination does not. Example: Move("/tmp/existing/", "/tmp/nonExisting1/nonExisting2/") + : sourceFullPath)); + case Interop.Error.ENOTDIR: // sourceFullPath exists and it's not a directory + throw new IOException(SR.Format(SR.IO_PathNotFound_Path, sourceFullPath)); default: throw Interop.GetExceptionForIoErrno(errorInfo, isDirectory: true); } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Windows.cs b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Windows.cs index d554994b9d1006..899709e3892697 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Windows.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Windows.cs @@ -154,7 +154,7 @@ public static DateTimeOffset GetLastWriteTime(string fullPath) return data.ftLastWriteTime.ToDateTimeOffset(); } - public static void MoveDirectory(string sourceFullPath, string destFullPath) + private static void MoveDirectory(string sourceFullPath, string destFullPath, bool sameDirectoryDifferentCase) { if (!Interop.Kernel32.MoveFile(sourceFullPath, destFullPath, overwrite: false)) { diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.cs b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.cs index f475bcbfb59eb0..8aee470047f9f0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.cs @@ -13,5 +13,35 @@ internal static void VerifyValidPath(string path, string argName) throw new ArgumentException(SR.Argument_InvalidPathChars, argName); } } + + internal static void MoveDirectory(string sourceFullPath, string destFullPath) + { + ReadOnlySpan srcNoDirectorySeparator = Path.TrimEndingDirectorySeparator(sourceFullPath.AsSpan()); + ReadOnlySpan destNoDirectorySeparator = Path.TrimEndingDirectorySeparator(destFullPath.AsSpan()); + + ReadOnlySpan sourceDirNameFromFullPath = Path.GetFileName(sourceFullPath.AsSpan()); + ReadOnlySpan destDirNameFromFullPath = Path.GetFileName(destFullPath.AsSpan()); + + StringComparison fileSystemSensitivity = PathInternal.StringComparison; + bool directoriesAreCaseVariants = + !sourceDirNameFromFullPath.SequenceEqual(destDirNameFromFullPath) && + sourceDirNameFromFullPath.Equals(destDirNameFromFullPath, StringComparison.OrdinalIgnoreCase); + bool sameDirectoryDifferentCase = + directoriesAreCaseVariants && + destDirNameFromFullPath.Equals(sourceDirNameFromFullPath, fileSystemSensitivity); + + // If the destination directories are the exact same name + if (!sameDirectoryDifferentCase && srcNoDirectorySeparator.Equals(destNoDirectorySeparator, fileSystemSensitivity)) + throw new IOException(SR.IO_SourceDestMustBeDifferent); + + ReadOnlySpan sourceRoot = Path.GetPathRoot(srcNoDirectorySeparator); + ReadOnlySpan destinationRoot = Path.GetPathRoot(destNoDirectorySeparator); + + // Compare paths for the same, skip this step if we already know the paths are identical. + if (!sourceRoot.Equals(destinationRoot, StringComparison.OrdinalIgnoreCase)) + throw new IOException(SR.IO_SourceDestMustHaveSameRoot); + + MoveDirectory(sourceFullPath, destFullPath, sameDirectoryDifferentCase); + } } } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cs index 0c1739873f4031..1e217f6baab298 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/MemoryStream.cs @@ -59,11 +59,8 @@ public MemoryStream(byte[] buffer) { } - public MemoryStream(byte[] buffer, bool writable) + public MemoryStream(byte[] buffer!!, bool writable) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - _buffer = buffer; _length = _capacity = buffer.Length; _writable = writable; @@ -80,10 +77,8 @@ public MemoryStream(byte[] buffer, int index, int count, bool writable) { } - public MemoryStream(byte[] buffer, int index, int count, bool writable, bool publiclyVisible) + public MemoryStream(byte[] buffer!!, int index, int count, bool writable, bool publiclyVisible) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) @@ -769,11 +764,8 @@ public override void WriteByte(byte value) } // Writes this MemoryStream to another stream. - public virtual void WriteTo(Stream stream) + public virtual void WriteTo(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream), SR.ArgumentNull_Stream); - EnsureNotClosed(); stream.Write(_buffer, _origin, _length - _origin); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.cs index c3a06c618bf813..a3c2faa7487497 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Path.Unix.cs @@ -33,14 +33,8 @@ public static string GetFullPath(string path) return GetFullPathInternal(path); } - public static string GetFullPath(string path, string basePath) + public static string GetFullPath(string path!!, string basePath!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - - if (basePath == null) - throw new ArgumentNullException(nameof(basePath)); - if (!IsPathFullyQualified(basePath)) throw new ArgumentException(SR.Arg_BasePathNotFullyQualified, nameof(basePath)); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Path.Windows.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Path.Windows.cs index 655a70719b845e..1b4f0119202024 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Path.Windows.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Path.Windows.cs @@ -38,11 +38,8 @@ private static bool ExistsCore(string fullPath, out bool isDirectory) } // Expands the given path to a fully qualified path. - public static string GetFullPath(string path) + public static string GetFullPath(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - // If the path would normalize to string empty, we'll consider it empty if (PathInternal.IsEffectivelyEmpty(path.AsSpan())) throw new ArgumentException(SR.Arg_PathEmpty, nameof(path)); @@ -56,14 +53,8 @@ public static string GetFullPath(string path) return GetFullPathInternal(path); } - public static string GetFullPath(string path, string basePath) + public static string GetFullPath(string path!!, string basePath!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - - if (basePath == null) - throw new ArgumentNullException(nameof(basePath)); - if (!IsPathFullyQualified(basePath)) throw new ArgumentException(SR.Arg_BasePathNotFullyQualified, nameof(basePath)); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Path.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Path.cs index da52cdfd81e024..2afe0d303d1b47 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Path.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Path.cs @@ -303,11 +303,8 @@ public static unsafe string GetRandomFileName() /// /// Thrown if is null. /// - public static bool IsPathFullyQualified(string path) + public static bool IsPathFullyQualified(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - return IsPathFullyQualified(path.AsSpan()); } @@ -344,37 +341,23 @@ public static bool HasExtension(ReadOnlySpan path) return false; } - public static string Combine(string path1, string path2) + public static string Combine(string path1!!, string path2!!) { - if (path1 == null || path2 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : nameof(path2)); - return CombineInternal(path1, path2); } - public static string Combine(string path1, string path2, string path3) + public static string Combine(string path1!!, string path2!!, string path3!!) { - if (path1 == null || path2 == null || path3 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : (path2 == null) ? nameof(path2) : nameof(path3)); - return CombineInternal(path1, path2, path3); } - public static string Combine(string path1, string path2, string path3, string path4) + public static string Combine(string path1!!, string path2!!, string path3!!, string path4!!) { - if (path1 == null || path2 == null || path3 == null || path4 == null) - throw new ArgumentNullException((path1 == null) ? nameof(path1) : (path2 == null) ? nameof(path2) : (path3 == null) ? nameof(path3) : nameof(path4)); - return CombineInternal(path1, path2, path3, path4); } - public static string Combine(params string[] paths) + public static string Combine(params string[] paths!!) { - if (paths == null) - { - throw new ArgumentNullException(nameof(paths)); - } - int maxSize = 0; int firstComponent = 0; @@ -383,10 +366,7 @@ public static string Combine(params string[] paths) for (int i = 0; i < paths.Length; i++) { - if (paths[i] == null) - { - throw new ArgumentNullException(nameof(paths)); - } + ArgumentNullException.ThrowIfNull(paths[i], nameof(paths)); if (paths[i].Length == 0) { @@ -496,13 +476,8 @@ public static string Join(string? path1, string? path2, string? path3, string? p return Join(path1.AsSpan(), path2.AsSpan(), path3.AsSpan(), path4.AsSpan()); } - public static string Join(params string?[] paths) + public static string Join(params string?[] paths!!) { - if (paths == null) - { - throw new ArgumentNullException(nameof(paths)); - } - if (paths.Length == 0) { return string.Empty; @@ -867,17 +842,10 @@ public static string GetRelativePath(string relativeTo, string path) return GetRelativePath(relativeTo, path, PathInternal.StringComparison); } - private static string GetRelativePath(string relativeTo, string path, StringComparison comparisonType) + private static string GetRelativePath(string relativeTo!!, string path!!, StringComparison comparisonType) { - if (relativeTo == null) - throw new ArgumentNullException(nameof(relativeTo)); - if (PathInternal.IsEffectivelyEmpty(relativeTo.AsSpan())) throw new ArgumentException(SR.Arg_PathEmpty, nameof(relativeTo)); - - if (path == null) - throw new ArgumentNullException(nameof(path)); - if (PathInternal.IsEffectivelyEmpty(path.AsSpan())) throw new ArgumentException(SR.Arg_PathEmpty, nameof(path)); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Stream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Stream.cs index 49bc2272d6c029..ffec657b3312d8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Stream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Stream.cs @@ -719,10 +719,8 @@ public virtual void Write(ReadOnlySpan buffer) public virtual void WriteByte(byte value) => Write(new byte[1] { value }, 0, 1); - public static Stream Synchronized(Stream stream) => - stream is null ? throw new ArgumentNullException(nameof(stream)) : - stream is SyncStream ? stream : - new SyncStream(stream); + public static Stream Synchronized(Stream stream!!) => + stream as SyncStream ?? new SyncStream(stream); [Obsolete("Do not call or override this method.")] protected virtual void ObjectInvariant() { } @@ -763,13 +761,8 @@ protected static void ValidateBufferArguments(byte[] buffer, int offset, int cou /// was not a positive value. /// does not support writing. /// does not support writing or reading. - protected static void ValidateCopyToArguments(Stream destination, int bufferSize) + protected static void ValidateCopyToArguments(Stream destination!!, int bufferSize) { - if (destination is null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (bufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(bufferSize), bufferSize, SR.ArgumentOutOfRange_NeedPosNum); @@ -870,7 +863,7 @@ private sealed class SyncStream : Stream, IDisposable { private readonly Stream _stream; - internal SyncStream(Stream stream) => _stream = stream ?? throw new ArgumentNullException(nameof(stream)); + internal SyncStream(Stream stream!!) => _stream = stream; public override bool CanRead => _stream.CanRead; public override bool CanWrite => _stream.CanWrite; diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/StreamReader.cs b/src/libraries/System.Private.CoreLib/src/System/IO/StreamReader.cs index 785e2c8e4a0b6f..2d3db53b3d77b5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/StreamReader.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/StreamReader.cs @@ -344,12 +344,8 @@ public override int Read() return result; } - public override int Read(char[] buffer, int index, int count) + public override int Read(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -427,12 +423,8 @@ public override string ReadToEnd() return sb.ToString(); } - public override int ReadBlock(char[] buffer, int index, int count) + public override int ReadBlock(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -1006,12 +998,8 @@ private async Task ReadToEndAsyncInternal(CancellationToken cancellation return sb.ToString(); } - public override Task ReadAsync(char[] buffer, int index, int count) + public override Task ReadAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -1229,12 +1217,8 @@ internal override async ValueTask ReadAsyncInternal(Memory buffer, Ca return charsRead; } - public override Task ReadBlockAsync(char[] buffer, int index, int count) + public override Task ReadBlockAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/StreamWriter.cs b/src/libraries/System.Private.CoreLib/src/System/IO/StreamWriter.cs index 656739a7c855e7..691df19d999393 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/StreamWriter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/StreamWriter.cs @@ -367,12 +367,8 @@ public override void Write(char[]? buffer) } [MethodImpl(MethodImplOptions.NoInlining)] // prevent WriteSpan from bloating call sites - public override void Write(char[] buffer, int index, int count) + public override void Write(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -563,7 +559,7 @@ public override void Write(string format, params object?[] arg) { if (arg == null) { - throw new ArgumentNullException((format == null) ? nameof(format) : nameof(arg)); // same as base logic + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(arg)); // same as base logic } WriteFormatHelper(format, new ParamsArray(arg), appendNewLine: false); } @@ -613,10 +609,7 @@ public override void WriteLine(string format, params object?[] arg) { if (GetType() == typeof(StreamWriter)) { - if (arg == null) - { - throw new ArgumentNullException(nameof(arg)); - } + ArgumentNullException.ThrowIfNull(arg); WriteFormatHelper(format, new ParamsArray(arg), appendNewLine: true); } else @@ -700,12 +693,8 @@ public override Task WriteAsync(string? value) } } - public override Task WriteAsync(char[] buffer, int index, int count) + public override Task WriteAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -860,12 +849,8 @@ public override Task WriteLineAsync(string? value) return task; } - public override Task WriteLineAsync(char[] buffer, int index, int count) + public override Task WriteLineAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/StringReader.cs b/src/libraries/System.Private.CoreLib/src/System/IO/StringReader.cs index a8e07ad382d151..8ea5f1083f2331 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/StringReader.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/StringReader.cs @@ -83,12 +83,8 @@ public override int Read() // array starting at position index. Returns the actual number of // characters read, or zero if the end of the string is reached. // - public override int Read(char[] buffer, int index, int count) + public override int Read(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -292,12 +288,8 @@ public override Task ReadToEndAsync(CancellationToken cancellationToken) ? Task.FromCanceled(cancellationToken) : Task.FromResult(ReadToEnd()); - public override Task ReadBlockAsync(char[] buffer, int index, int count) + public override Task ReadBlockAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -314,12 +306,8 @@ public override ValueTask ReadBlockAsync(Memory buffer, CancellationT cancellationToken.IsCancellationRequested ? ValueTask.FromCanceled(cancellationToken) : new ValueTask(ReadBlock(buffer.Span)); - public override Task ReadAsync(char[] buffer, int index, int count) + public override Task ReadAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/StringWriter.cs b/src/libraries/System.Private.CoreLib/src/System/IO/StringWriter.cs index 080d7716e98bb9..1213573f6bb5fb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/StringWriter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/StringWriter.cs @@ -35,13 +35,8 @@ public StringWriter(StringBuilder sb) : this(sb, CultureInfo.CurrentCulture) { } - public StringWriter(StringBuilder sb, IFormatProvider? formatProvider) : base(formatProvider) + public StringWriter(StringBuilder sb!!, IFormatProvider? formatProvider) : base(formatProvider) { - if (sb == null) - { - throw new ArgumentNullException(nameof(sb), SR.ArgumentNull_Buffer); - } - _sb = sb; _isOpen = true; } @@ -98,12 +93,8 @@ public override void Write(char value) // StringWriter from the buffer character array starting at position // index. // - public override void Write(char[] buffer, int index, int count) + public override void Write(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/TextReader.cs b/src/libraries/System.Private.CoreLib/src/System/IO/TextReader.cs index a0536bd022e8ee..299103cf093eb0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/TextReader.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/TextReader.cs @@ -67,12 +67,8 @@ public virtual int Read() // buffer character array starting at position // index. Returns the actual number of characters read. // - public virtual int Read(char[] buffer, int index, int count) + public virtual int Read(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -265,12 +261,8 @@ public virtual async Task ReadToEndAsync(CancellationToken cancellationT return sb.ToString(); } - public virtual Task ReadAsync(char[] buffer, int index, int count) + public virtual Task ReadAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -299,12 +291,8 @@ internal virtual ValueTask ReadAsyncInternal(Memory buffer, Cancellat return t.Item1.Read(t.Item2.Span); }, new TupleSlim>(this, buffer), cancellationToken, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default)); - public virtual Task ReadBlockAsync(char[] buffer, int index, int count) + public virtual Task ReadBlockAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0 || count < 0) { throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -339,11 +327,8 @@ internal async ValueTask ReadBlockAsyncInternal(Memory buffer, Cancel } #endregion - public static TextReader Synchronized(TextReader reader) + public static TextReader Synchronized(TextReader reader!!) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); - return reader is SyncTextReader ? reader : new SyncTextReader(reader); } @@ -404,10 +389,8 @@ public override Task ReadToEndAsync(CancellationToken cancellationToken) => cancellationToken.IsCancellationRequested ? Task.FromCanceled(cancellationToken) : Task.FromResult(ReadToEnd()); [MethodImpl(MethodImplOptions.Synchronized)] - public override Task ReadBlockAsync(char[] buffer, int index, int count) + public override Task ReadBlockAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (buffer.Length - index < count) @@ -417,10 +400,8 @@ public override Task ReadBlockAsync(char[] buffer, int index, int count) } [MethodImpl(MethodImplOptions.Synchronized)] - public override Task ReadAsync(char[] buffer, int index, int count) + public override Task ReadAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); if (buffer.Length - index < count) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/TextWriter.cs b/src/libraries/System.Private.CoreLib/src/System/IO/TextWriter.cs index 3468c535df03ee..27658be661f71a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/TextWriter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/TextWriter.cs @@ -144,12 +144,8 @@ public virtual void Write(char[]? buffer) // write count characters of data into this TextWriter from the // buffer character array starting at position index. // - public virtual void Write(char[] buffer, int index, int count) + public virtual void Write(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer), SR.ArgumentNull_Buffer); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -702,11 +698,8 @@ public override void Write(char value) } } - public static TextWriter Synchronized(TextWriter writer) + public static TextWriter Synchronized(TextWriter writer!!) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); - return writer is SyncTextWriter ? writer : new SyncTextWriter(writer); } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryAccessor.cs b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryAccessor.cs index 78d0dab488a565..110abad93168c8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryAccessor.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryAccessor.cs @@ -45,12 +45,8 @@ public UnmanagedMemoryAccessor(SafeBuffer buffer, long offset, long capacity, Fi Initialize(buffer, offset, capacity, access); } - protected void Initialize(SafeBuffer buffer, long offset, long capacity, FileAccess access) + protected void Initialize(SafeBuffer buffer!!, long offset, long capacity, FileAccess access) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -329,12 +325,8 @@ public void Read(long position, out T structure) where T : struct // Reads 'count' structs of type T from unmanaged memory, into 'array' starting at 'offset'. // Note: this method is not safe, since it overwrites the contents of structures, it can // be used to modify the private members of a struct. - public int ReadArray(long position, T[] array, int offset, int count) where T : struct + public int ReadArray(long position, T[] array!!, int offset, int count) where T : struct { - if (array == null) - { - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Buffer); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -569,12 +561,8 @@ public void Write(long position, ref T structure) where T : struct } // Writes 'count' structs of type T from 'array' (starting at 'offset') into unmanaged memory. - public void WriteArray(long position, T[] array, int offset, int count) where T : struct + public void WriteArray(long position, T[] array!!, int offset, int count) where T : struct { - if (array == null) - { - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Buffer); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStream.cs b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStream.cs index 47b190dde4b49b..11a2727310919e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStream.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStream.cs @@ -82,12 +82,8 @@ public UnmanagedMemoryStream(SafeBuffer buffer, long offset, long length, FileAc /// /// /// - protected void Initialize(SafeBuffer buffer, long offset, long length, FileAccess access) + protected void Initialize(SafeBuffer buffer!!, long offset, long length, FileAccess access) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -161,10 +157,8 @@ public unsafe UnmanagedMemoryStream(byte* pointer, long length, long capacity, F /// Subclasses must call this method (or the other overload) to properly initialize all instance fields. /// [CLSCompliant(false)] - protected unsafe void Initialize(byte* pointer, long length, long capacity, FileAccess access) + protected unsafe void Initialize(byte* pointer!!, long length, long capacity, FileAccess access) { - if (pointer == null) - throw new ArgumentNullException(nameof(pointer)); if (length < 0 || capacity < 0) throw new ArgumentOutOfRangeException((length < 0) ? nameof(length) : nameof(capacity), SR.ArgumentOutOfRange_NeedNonNegNum); if (length > capacity) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStreamWrapper.cs b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStreamWrapper.cs index b1adbb1c022c45..43790c1e2a49c1 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStreamWrapper.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/UnmanagedMemoryStreamWrapper.cs @@ -119,11 +119,8 @@ public override void WriteByte(byte value) } // Writes this MemoryStream to another stream. - public override unsafe void WriteTo(Stream stream) + public override unsafe void WriteTo(Stream stream!!) { - if (stream == null) - throw new ArgumentNullException(nameof(stream), SR.ArgumentNull_Stream); - byte[] buffer = ToArray(); stream.Write(buffer, 0, buffer.Length); @@ -138,12 +135,8 @@ public override void SetLength(long value) } - public override Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken) + public override Task CopyToAsync(Stream destination!!, int bufferSize, CancellationToken cancellationToken) { - // The parameter checks must be in sync with the base version: - if (destination == null) - throw new ArgumentNullException(nameof(destination)); - if (bufferSize <= 0) throw new ArgumentOutOfRangeException(nameof(bufferSize), SR.ArgumentOutOfRange_NeedPosNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/IntPtr.cs b/src/libraries/System.Private.CoreLib/src/System/IntPtr.cs index 355578395db40d..843c17ea6c3083 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IntPtr.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IntPtr.cs @@ -75,11 +75,8 @@ private unsafe IntPtr(SerializationInfo info, StreamingContext context) _value = (void*)l; } - unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + unsafe void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - info.AddValue("value", ToInt64()); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Lazy.cs b/src/libraries/System.Private.CoreLib/src/System/Lazy.cs index b60daedce24224..80d52f297cc9f2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Lazy.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Lazy.cs @@ -296,8 +296,10 @@ public Lazy(Func valueFactory, LazyThreadSafetyMode mode) private Lazy(Func? valueFactory, LazyThreadSafetyMode mode, bool useDefaultConstructor) { - if (valueFactory == null && !useDefaultConstructor) - throw new ArgumentNullException(nameof(valueFactory)); + if (!useDefaultConstructor) + { + ArgumentNullException.ThrowIfNull(valueFactory); + } _factory = valueFactory; _state = LazyHelper.Create(mode, useDefaultConstructor); diff --git a/src/libraries/System.Private.CoreLib/src/System/Math.cs b/src/libraries/System.Private.CoreLib/src/System/Math.cs index a929322173585c..896f07cf855322 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Math.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Math.cs @@ -1452,6 +1452,7 @@ public static decimal Truncate(decimal d) return decimal.Truncate(d); } + [Intrinsic] public static unsafe double Truncate(double d) { ModF(d, &d); diff --git a/src/libraries/System.Private.CoreLib/src/System/MathF.cs b/src/libraries/System.Private.CoreLib/src/System/MathF.cs index 2c4d7dce969d34..f4cde2dc7f71a2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/MathF.cs +++ b/src/libraries/System.Private.CoreLib/src/System/MathF.cs @@ -508,6 +508,7 @@ public static int Sign(float x) return Math.Sign(x); } + [Intrinsic] public static unsafe float Truncate(float x) { ModF(x, &x); diff --git a/src/libraries/System.Private.CoreLib/src/System/Net/WebUtility.cs b/src/libraries/System.Private.CoreLib/src/System/Net/WebUtility.cs index f5b55e491352e0..d3e93f2fd78499 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Net/WebUtility.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Net/WebUtility.cs @@ -62,12 +62,8 @@ public static class WebUtility return sb.ToString(); } - public static void HtmlEncode(string? value, TextWriter output) + public static void HtmlEncode(string? value, TextWriter output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } if (string.IsNullOrEmpty(value)) { output.Write(value); @@ -205,13 +201,8 @@ private static void HtmlEncode(ReadOnlySpan input, ref ValueStringBuilder return sb.ToString(); } - public static void HtmlDecode(string? value, TextWriter output) + public static void HtmlDecode(string? value, TextWriter output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - if (string.IsNullOrEmpty(value)) { output.Write(value); @@ -697,10 +688,7 @@ private static bool ValidateUrlEncodingParameters(byte[]? bytes, int offset, int { if (bytes == null && count == 0) return false; - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes)); - } + ArgumentNullException.ThrowIfNull(bytes); if (offset < 0 || offset > bytes.Length) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Nullable.cs b/src/libraries/System.Private.CoreLib/src/System/Nullable.cs index 089f970057dc8a..9f83fbe6a9f46c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Nullable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Nullable.cs @@ -97,13 +97,8 @@ public static bool Equals(Nullable n1, Nullable n2) where T : struct // If the type provided is not a Nullable Type, return null. // Otherwise, returns the underlying type of the Nullable type - public static Type? GetUnderlyingType(Type nullableType) + public static Type? GetUnderlyingType(Type nullableType!!) { - if (nullableType is null) - { - throw new ArgumentNullException(nameof(nullableType)); - } - #if CORERT // This is necessary to handle types without reflection metadata if (nullableType.TryGetEEType(out EETypePtr nullableEEType)) diff --git a/src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs b/src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs index e6465da384e252..b4701ab96ac405 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Number.NumberToFloatingPointBits.cs @@ -1,7 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Buffers.Binary; using System.Diagnostics; +using System.Numerics; +using System.Runtime.CompilerServices; +using Internal.Runtime.CompilerServices; namespace System { @@ -14,7 +18,13 @@ public readonly struct FloatingPointInfo exponentBits: 11, maxBinaryExponent: 1023, exponentBias: 1023, - infinityBits: 0x7FF00000_00000000 + infinityBits: 0x7FF00000_00000000, + minFastFloatDecimalExponent: -342, + maxFastFloatDecimalExponent: 308, + infinityExponent: 0x7FF, + minExponentRoundToEven: -4, + maxExponentRoundToEven: 23, + maxExponentFastPath: 22 ); public static readonly FloatingPointInfo Single = new FloatingPointInfo( @@ -22,15 +32,26 @@ public readonly struct FloatingPointInfo exponentBits: 8, maxBinaryExponent: 127, exponentBias: 127, - infinityBits: 0x7F800000 + infinityBits: 0x7F800000, + minFastFloatDecimalExponent: -65, + maxFastFloatDecimalExponent: 38, + infinityExponent: 0xFF, + minExponentRoundToEven: -17, + maxExponentRoundToEven: 10, + maxExponentFastPath: 10 ); - public static readonly FloatingPointInfo Half = new FloatingPointInfo( denormalMantissaBits: 10, exponentBits: 5, maxBinaryExponent: 15, exponentBias: 15, - infinityBits: 0x7C00 + infinityBits: 0x7C00, + minFastFloatDecimalExponent: -8, + maxFastFloatDecimalExponent: 4, + infinityExponent: 0x1F, + minExponentRoundToEven: -21, + maxExponentRoundToEven: 5, + maxExponentFastPath: 4 ); public ulong ZeroBits { get; } @@ -48,9 +69,18 @@ public readonly struct FloatingPointInfo public ushort NormalMantissaBits { get; } public ushort DenormalMantissaBits { get; } + public int MinFastFloatDecimalExponent { get; } + public int InfinityExponent { get; } + public int MinExponentRoundToEven { get; } + public int MaxExponentRoundToEven { get; } + + public int MaxExponentFastPath { get; } + + public int MaxFastFloatDecimalExponent { get; } + public ulong MaxMantissaFastPath { get => 2UL << DenormalMantissaBits; } public ushort ExponentBits { get; } - public FloatingPointInfo(ushort denormalMantissaBits, ushort exponentBits, int maxBinaryExponent, int exponentBias, ulong infinityBits) + public FloatingPointInfo(ushort denormalMantissaBits, ushort exponentBits, int maxBinaryExponent, int exponentBias, ulong infinityBits, int minFastFloatDecimalExponent, int maxFastFloatDecimalExponent, int infinityExponent, int minExponentRoundToEven, int maxExponentRoundToEven, int maxExponentFastPath) { ExponentBits = exponentBits; @@ -68,26 +98,20 @@ public FloatingPointInfo(ushort denormalMantissaBits, ushort exponentBits, int m InfinityBits = infinityBits; ZeroBits = 0; + + MaxFastFloatDecimalExponent = maxFastFloatDecimalExponent; + MinFastFloatDecimalExponent = minFastFloatDecimalExponent; + + InfinityExponent = infinityExponent; + + MinExponentRoundToEven = minExponentRoundToEven; + MaxExponentRoundToEven = maxExponentRoundToEven; + + MaxExponentFastPath = maxExponentFastPath; } } - private static readonly float[] s_Pow10SingleTable = new float[] - { - 1e0f, // 10^0 - 1e1f, // 10^1 - 1e2f, // 10^2 - 1e3f, // 10^3 - 1e4f, // 10^4 - 1e5f, // 10^5 - 1e6f, // 10^6 - 1e7f, // 10^7 - 1e8f, // 10^8 - 1e9f, // 10^9 - 1e10f, // 10^10 - }; - - private static readonly double[] s_Pow10DoubleTable = new double[] - { + private static readonly double[] s_Pow10DoubleTable = { 1e0, // 10^0 1e1, // 10^1 1e2, // 10^2 @@ -113,6 +137,664 @@ public FloatingPointInfo(ushort denormalMantissaBits, ushort exponentBits, int m 1e22, // 10^22 }; + /// + /// Normalized 128 bits values for powers of 5^q for q in range [-342, 308] + /// stored as 2 64-bits integers for convenience + /// + private static readonly ulong[] s_Pow5128Table = { + 0xeef453d6923bd65a, 0x113faa2906a13b3f, + 0x9558b4661b6565f8, 0x4ac7ca59a424c507, + 0xbaaee17fa23ebf76, 0x5d79bcf00d2df649, + 0xe95a99df8ace6f53, 0xf4d82c2c107973dc, + 0x91d8a02bb6c10594, 0x79071b9b8a4be869, + 0xb64ec836a47146f9, 0x9748e2826cdee284, + 0xe3e27a444d8d98b7, 0xfd1b1b2308169b25, + 0x8e6d8c6ab0787f72, 0xfe30f0f5e50e20f7, + 0xb208ef855c969f4f, 0xbdbd2d335e51a935, + 0xde8b2b66b3bc4723, 0xad2c788035e61382, + 0x8b16fb203055ac76, 0x4c3bcb5021afcc31, + 0xaddcb9e83c6b1793, 0xdf4abe242a1bbf3d, + 0xd953e8624b85dd78, 0xd71d6dad34a2af0d, + 0x87d4713d6f33aa6b, 0x8672648c40e5ad68, + 0xa9c98d8ccb009506, 0x680efdaf511f18c2, + 0xd43bf0effdc0ba48, 0x212bd1b2566def2, + 0x84a57695fe98746d, 0x14bb630f7604b57, + 0xa5ced43b7e3e9188, 0x419ea3bd35385e2d, + 0xcf42894a5dce35ea, 0x52064cac828675b9, + 0x818995ce7aa0e1b2, 0x7343efebd1940993, + 0xa1ebfb4219491a1f, 0x1014ebe6c5f90bf8, + 0xca66fa129f9b60a6, 0xd41a26e077774ef6, + 0xfd00b897478238d0, 0x8920b098955522b4, + 0x9e20735e8cb16382, 0x55b46e5f5d5535b0, + 0xc5a890362fddbc62, 0xeb2189f734aa831d, + 0xf712b443bbd52b7b, 0xa5e9ec7501d523e4, + 0x9a6bb0aa55653b2d, 0x47b233c92125366e, + 0xc1069cd4eabe89f8, 0x999ec0bb696e840a, + 0xf148440a256e2c76, 0xc00670ea43ca250d, + 0x96cd2a865764dbca, 0x380406926a5e5728, + 0xbc807527ed3e12bc, 0xc605083704f5ecf2, + 0xeba09271e88d976b, 0xf7864a44c633682e, + 0x93445b8731587ea3, 0x7ab3ee6afbe0211d, + 0xb8157268fdae9e4c, 0x5960ea05bad82964, + 0xe61acf033d1a45df, 0x6fb92487298e33bd, + 0x8fd0c16206306bab, 0xa5d3b6d479f8e056, + 0xb3c4f1ba87bc8696, 0x8f48a4899877186c, + 0xe0b62e2929aba83c, 0x331acdabfe94de87, + 0x8c71dcd9ba0b4925, 0x9ff0c08b7f1d0b14, + 0xaf8e5410288e1b6f, 0x7ecf0ae5ee44dd9, + 0xdb71e91432b1a24a, 0xc9e82cd9f69d6150, + 0x892731ac9faf056e, 0xbe311c083a225cd2, + 0xab70fe17c79ac6ca, 0x6dbd630a48aaf406, + 0xd64d3d9db981787d, 0x92cbbccdad5b108, + 0x85f0468293f0eb4e, 0x25bbf56008c58ea5, + 0xa76c582338ed2621, 0xaf2af2b80af6f24e, + 0xd1476e2c07286faa, 0x1af5af660db4aee1, + 0x82cca4db847945ca, 0x50d98d9fc890ed4d, + 0xa37fce126597973c, 0xe50ff107bab528a0, + 0xcc5fc196fefd7d0c, 0x1e53ed49a96272c8, + 0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7a, + 0x9faacf3df73609b1, 0x77b191618c54e9ac, + 0xc795830d75038c1d, 0xd59df5b9ef6a2417, + 0xf97ae3d0d2446f25, 0x4b0573286b44ad1d, + 0x9becce62836ac577, 0x4ee367f9430aec32, + 0xc2e801fb244576d5, 0x229c41f793cda73f, + 0xf3a20279ed56d48a, 0x6b43527578c1110f, + 0x9845418c345644d6, 0x830a13896b78aaa9, + 0xbe5691ef416bd60c, 0x23cc986bc656d553, + 0xedec366b11c6cb8f, 0x2cbfbe86b7ec8aa8, + 0x94b3a202eb1c3f39, 0x7bf7d71432f3d6a9, + 0xb9e08a83a5e34f07, 0xdaf5ccd93fb0cc53, + 0xe858ad248f5c22c9, 0xd1b3400f8f9cff68, + 0x91376c36d99995be, 0x23100809b9c21fa1, + 0xb58547448ffffb2d, 0xabd40a0c2832a78a, + 0xe2e69915b3fff9f9, 0x16c90c8f323f516c, + 0x8dd01fad907ffc3b, 0xae3da7d97f6792e3, + 0xb1442798f49ffb4a, 0x99cd11cfdf41779c, + 0xdd95317f31c7fa1d, 0x40405643d711d583, + 0x8a7d3eef7f1cfc52, 0x482835ea666b2572, + 0xad1c8eab5ee43b66, 0xda3243650005eecf, + 0xd863b256369d4a40, 0x90bed43e40076a82, + 0x873e4f75e2224e68, 0x5a7744a6e804a291, + 0xa90de3535aaae202, 0x711515d0a205cb36, + 0xd3515c2831559a83, 0xd5a5b44ca873e03, + 0x8412d9991ed58091, 0xe858790afe9486c2, + 0xa5178fff668ae0b6, 0x626e974dbe39a872, + 0xce5d73ff402d98e3, 0xfb0a3d212dc8128f, + 0x80fa687f881c7f8e, 0x7ce66634bc9d0b99, + 0xa139029f6a239f72, 0x1c1fffc1ebc44e80, + 0xc987434744ac874e, 0xa327ffb266b56220, + 0xfbe9141915d7a922, 0x4bf1ff9f0062baa8, + 0x9d71ac8fada6c9b5, 0x6f773fc3603db4a9, + 0xc4ce17b399107c22, 0xcb550fb4384d21d3, + 0xf6019da07f549b2b, 0x7e2a53a146606a48, + 0x99c102844f94e0fb, 0x2eda7444cbfc426d, + 0xc0314325637a1939, 0xfa911155fefb5308, + 0xf03d93eebc589f88, 0x793555ab7eba27ca, + 0x96267c7535b763b5, 0x4bc1558b2f3458de, + 0xbbb01b9283253ca2, 0x9eb1aaedfb016f16, + 0xea9c227723ee8bcb, 0x465e15a979c1cadc, + 0x92a1958a7675175f, 0xbfacd89ec191ec9, + 0xb749faed14125d36, 0xcef980ec671f667b, + 0xe51c79a85916f484, 0x82b7e12780e7401a, + 0x8f31cc0937ae58d2, 0xd1b2ecb8b0908810, + 0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa15, + 0xdfbdcece67006ac9, 0x67a791e093e1d49a, + 0x8bd6a141006042bd, 0xe0c8bb2c5c6d24e0, + 0xaecc49914078536d, 0x58fae9f773886e18, + 0xda7f5bf590966848, 0xaf39a475506a899e, + 0x888f99797a5e012d, 0x6d8406c952429603, + 0xaab37fd7d8f58178, 0xc8e5087ba6d33b83, + 0xd5605fcdcf32e1d6, 0xfb1e4a9a90880a64, + 0x855c3be0a17fcd26, 0x5cf2eea09a55067f, + 0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481e, + 0xd0601d8efc57b08b, 0xf13b94daf124da26, + 0x823c12795db6ce57, 0x76c53d08d6b70858, + 0xa2cb1717b52481ed, 0x54768c4b0c64ca6e, + 0xcb7ddcdda26da268, 0xa9942f5dcf7dfd09, + 0xfe5d54150b090b02, 0xd3f93b35435d7c4c, + 0x9efa548d26e5a6e1, 0xc47bc5014a1a6daf, + 0xc6b8e9b0709f109a, 0x359ab6419ca1091b, + 0xf867241c8cc6d4c0, 0xc30163d203c94b62, + 0x9b407691d7fc44f8, 0x79e0de63425dcf1d, + 0xc21094364dfb5636, 0x985915fc12f542e4, + 0xf294b943e17a2bc4, 0x3e6f5b7b17b2939d, + 0x979cf3ca6cec5b5a, 0xa705992ceecf9c42, + 0xbd8430bd08277231, 0x50c6ff782a838353, + 0xece53cec4a314ebd, 0xa4f8bf5635246428, + 0x940f4613ae5ed136, 0x871b7795e136be99, + 0xb913179899f68584, 0x28e2557b59846e3f, + 0xe757dd7ec07426e5, 0x331aeada2fe589cf, + 0x9096ea6f3848984f, 0x3ff0d2c85def7621, + 0xb4bca50b065abe63, 0xfed077a756b53a9, + 0xe1ebce4dc7f16dfb, 0xd3e8495912c62894, + 0x8d3360f09cf6e4bd, 0x64712dd7abbbd95c, + 0xb080392cc4349dec, 0xbd8d794d96aacfb3, + 0xdca04777f541c567, 0xecf0d7a0fc5583a0, + 0x89e42caaf9491b60, 0xf41686c49db57244, + 0xac5d37d5b79b6239, 0x311c2875c522ced5, + 0xd77485cb25823ac7, 0x7d633293366b828b, + 0x86a8d39ef77164bc, 0xae5dff9c02033197, + 0xa8530886b54dbdeb, 0xd9f57f830283fdfc, + 0xd267caa862a12d66, 0xd072df63c324fd7b, + 0x8380dea93da4bc60, 0x4247cb9e59f71e6d, + 0xa46116538d0deb78, 0x52d9be85f074e608, + 0xcd795be870516656, 0x67902e276c921f8b, + 0x806bd9714632dff6, 0xba1cd8a3db53b6, + 0xa086cfcd97bf97f3, 0x80e8a40eccd228a4, + 0xc8a883c0fdaf7df0, 0x6122cd128006b2cd, + 0xfad2a4b13d1b5d6c, 0x796b805720085f81, + 0x9cc3a6eec6311a63, 0xcbe3303674053bb0, + 0xc3f490aa77bd60fc, 0xbedbfc4411068a9c, + 0xf4f1b4d515acb93b, 0xee92fb5515482d44, + 0x991711052d8bf3c5, 0x751bdd152d4d1c4a, + 0xbf5cd54678eef0b6, 0xd262d45a78a0635d, + 0xef340a98172aace4, 0x86fb897116c87c34, + 0x9580869f0e7aac0e, 0xd45d35e6ae3d4da0, + 0xbae0a846d2195712, 0x8974836059cca109, + 0xe998d258869facd7, 0x2bd1a438703fc94b, + 0x91ff83775423cc06, 0x7b6306a34627ddcf, + 0xb67f6455292cbf08, 0x1a3bc84c17b1d542, + 0xe41f3d6a7377eeca, 0x20caba5f1d9e4a93, + 0x8e938662882af53e, 0x547eb47b7282ee9c, + 0xb23867fb2a35b28d, 0xe99e619a4f23aa43, + 0xdec681f9f4c31f31, 0x6405fa00e2ec94d4, + 0x8b3c113c38f9f37e, 0xde83bc408dd3dd04, + 0xae0b158b4738705e, 0x9624ab50b148d445, + 0xd98ddaee19068c76, 0x3badd624dd9b0957, + 0x87f8a8d4cfa417c9, 0xe54ca5d70a80e5d6, + 0xa9f6d30a038d1dbc, 0x5e9fcf4ccd211f4c, + 0xd47487cc8470652b, 0x7647c3200069671f, + 0x84c8d4dfd2c63f3b, 0x29ecd9f40041e073, + 0xa5fb0a17c777cf09, 0xf468107100525890, + 0xcf79cc9db955c2cc, 0x7182148d4066eeb4, + 0x81ac1fe293d599bf, 0xc6f14cd848405530, + 0xa21727db38cb002f, 0xb8ada00e5a506a7c, + 0xca9cf1d206fdc03b, 0xa6d90811f0e4851c, + 0xfd442e4688bd304a, 0x908f4a166d1da663, + 0x9e4a9cec15763e2e, 0x9a598e4e043287fe, + 0xc5dd44271ad3cdba, 0x40eff1e1853f29fd, + 0xf7549530e188c128, 0xd12bee59e68ef47c, + 0x9a94dd3e8cf578b9, 0x82bb74f8301958ce, + 0xc13a148e3032d6e7, 0xe36a52363c1faf01, + 0xf18899b1bc3f8ca1, 0xdc44e6c3cb279ac1, + 0x96f5600f15a7b7e5, 0x29ab103a5ef8c0b9, + 0xbcb2b812db11a5de, 0x7415d448f6b6f0e7, + 0xebdf661791d60f56, 0x111b495b3464ad21, + 0x936b9fcebb25c995, 0xcab10dd900beec34, + 0xb84687c269ef3bfb, 0x3d5d514f40eea742, + 0xe65829b3046b0afa, 0xcb4a5a3112a5112, + 0x8ff71a0fe2c2e6dc, 0x47f0e785eaba72ab, + 0xb3f4e093db73a093, 0x59ed216765690f56, + 0xe0f218b8d25088b8, 0x306869c13ec3532c, + 0x8c974f7383725573, 0x1e414218c73a13fb, + 0xafbd2350644eeacf, 0xe5d1929ef90898fa, + 0xdbac6c247d62a583, 0xdf45f746b74abf39, + 0x894bc396ce5da772, 0x6b8bba8c328eb783, + 0xab9eb47c81f5114f, 0x66ea92f3f326564, + 0xd686619ba27255a2, 0xc80a537b0efefebd, + 0x8613fd0145877585, 0xbd06742ce95f5f36, + 0xa798fc4196e952e7, 0x2c48113823b73704, + 0xd17f3b51fca3a7a0, 0xf75a15862ca504c5, + 0x82ef85133de648c4, 0x9a984d73dbe722fb, + 0xa3ab66580d5fdaf5, 0xc13e60d0d2e0ebba, + 0xcc963fee10b7d1b3, 0x318df905079926a8, + 0xffbbcfe994e5c61f, 0xfdf17746497f7052, + 0x9fd561f1fd0f9bd3, 0xfeb6ea8bedefa633, + 0xc7caba6e7c5382c8, 0xfe64a52ee96b8fc0, + 0xf9bd690a1b68637b, 0x3dfdce7aa3c673b0, + 0x9c1661a651213e2d, 0x6bea10ca65c084e, + 0xc31bfa0fe5698db8, 0x486e494fcff30a62, + 0xf3e2f893dec3f126, 0x5a89dba3c3efccfa, + 0x986ddb5c6b3a76b7, 0xf89629465a75e01c, + 0xbe89523386091465, 0xf6bbb397f1135823, + 0xee2ba6c0678b597f, 0x746aa07ded582e2c, + 0x94db483840b717ef, 0xa8c2a44eb4571cdc, + 0xba121a4650e4ddeb, 0x92f34d62616ce413, + 0xe896a0d7e51e1566, 0x77b020baf9c81d17, + 0x915e2486ef32cd60, 0xace1474dc1d122e, + 0xb5b5ada8aaff80b8, 0xd819992132456ba, + 0xe3231912d5bf60e6, 0x10e1fff697ed6c69, + 0x8df5efabc5979c8f, 0xca8d3ffa1ef463c1, + 0xb1736b96b6fd83b3, 0xbd308ff8a6b17cb2, + 0xddd0467c64bce4a0, 0xac7cb3f6d05ddbde, + 0x8aa22c0dbef60ee4, 0x6bcdf07a423aa96b, + 0xad4ab7112eb3929d, 0x86c16c98d2c953c6, + 0xd89d64d57a607744, 0xe871c7bf077ba8b7, + 0x87625f056c7c4a8b, 0x11471cd764ad4972, + 0xa93af6c6c79b5d2d, 0xd598e40d3dd89bcf, + 0xd389b47879823479, 0x4aff1d108d4ec2c3, + 0x843610cb4bf160cb, 0xcedf722a585139ba, + 0xa54394fe1eedb8fe, 0xc2974eb4ee658828, + 0xce947a3da6a9273e, 0x733d226229feea32, + 0x811ccc668829b887, 0x806357d5a3f525f, + 0xa163ff802a3426a8, 0xca07c2dcb0cf26f7, + 0xc9bcff6034c13052, 0xfc89b393dd02f0b5, + 0xfc2c3f3841f17c67, 0xbbac2078d443ace2, + 0x9d9ba7832936edc0, 0xd54b944b84aa4c0d, + 0xc5029163f384a931, 0xa9e795e65d4df11, + 0xf64335bcf065d37d, 0x4d4617b5ff4a16d5, + 0x99ea0196163fa42e, 0x504bced1bf8e4e45, + 0xc06481fb9bcf8d39, 0xe45ec2862f71e1d6, + 0xf07da27a82c37088, 0x5d767327bb4e5a4c, + 0x964e858c91ba2655, 0x3a6a07f8d510f86f, + 0xbbe226efb628afea, 0x890489f70a55368b, + 0xeadab0aba3b2dbe5, 0x2b45ac74ccea842e, + 0x92c8ae6b464fc96f, 0x3b0b8bc90012929d, + 0xb77ada0617e3bbcb, 0x9ce6ebb40173744, + 0xe55990879ddcaabd, 0xcc420a6a101d0515, + 0x8f57fa54c2a9eab6, 0x9fa946824a12232d, + 0xb32df8e9f3546564, 0x47939822dc96abf9, + 0xdff9772470297ebd, 0x59787e2b93bc56f7, + 0x8bfbea76c619ef36, 0x57eb4edb3c55b65a, + 0xaefae51477a06b03, 0xede622920b6b23f1, + 0xdab99e59958885c4, 0xe95fab368e45eced, + 0x88b402f7fd75539b, 0x11dbcb0218ebb414, + 0xaae103b5fcd2a881, 0xd652bdc29f26a119, + 0xd59944a37c0752a2, 0x4be76d3346f0495f, + 0x857fcae62d8493a5, 0x6f70a4400c562ddb, + 0xa6dfbd9fb8e5b88e, 0xcb4ccd500f6bb952, + 0xd097ad07a71f26b2, 0x7e2000a41346a7a7, + 0x825ecc24c873782f, 0x8ed400668c0c28c8, + 0xa2f67f2dfa90563b, 0x728900802f0f32fa, + 0xcbb41ef979346bca, 0x4f2b40a03ad2ffb9, + 0xfea126b7d78186bc, 0xe2f610c84987bfa8, + 0x9f24b832e6b0f436, 0xdd9ca7d2df4d7c9, + 0xc6ede63fa05d3143, 0x91503d1c79720dbb, + 0xf8a95fcf88747d94, 0x75a44c6397ce912a, + 0x9b69dbe1b548ce7c, 0xc986afbe3ee11aba, + 0xc24452da229b021b, 0xfbe85badce996168, + 0xf2d56790ab41c2a2, 0xfae27299423fb9c3, + 0x97c560ba6b0919a5, 0xdccd879fc967d41a, + 0xbdb6b8e905cb600f, 0x5400e987bbc1c920, + 0xed246723473e3813, 0x290123e9aab23b68, + 0x9436c0760c86e30b, 0xf9a0b6720aaf6521, + 0xb94470938fa89bce, 0xf808e40e8d5b3e69, + 0xe7958cb87392c2c2, 0xb60b1d1230b20e04, + 0x90bd77f3483bb9b9, 0xb1c6f22b5e6f48c2, + 0xb4ecd5f01a4aa828, 0x1e38aeb6360b1af3, + 0xe2280b6c20dd5232, 0x25c6da63c38de1b0, + 0x8d590723948a535f, 0x579c487e5a38ad0e, + 0xb0af48ec79ace837, 0x2d835a9df0c6d851, + 0xdcdb1b2798182244, 0xf8e431456cf88e65, + 0x8a08f0f8bf0f156b, 0x1b8e9ecb641b58ff, + 0xac8b2d36eed2dac5, 0xe272467e3d222f3f, + 0xd7adf884aa879177, 0x5b0ed81dcc6abb0f, + 0x86ccbb52ea94baea, 0x98e947129fc2b4e9, + 0xa87fea27a539e9a5, 0x3f2398d747b36224, + 0xd29fe4b18e88640e, 0x8eec7f0d19a03aad, + 0x83a3eeeef9153e89, 0x1953cf68300424ac, + 0xa48ceaaab75a8e2b, 0x5fa8c3423c052dd7, + 0xcdb02555653131b6, 0x3792f412cb06794d, + 0x808e17555f3ebf11, 0xe2bbd88bbee40bd0, + 0xa0b19d2ab70e6ed6, 0x5b6aceaeae9d0ec4, + 0xc8de047564d20a8b, 0xf245825a5a445275, + 0xfb158592be068d2e, 0xeed6e2f0f0d56712, + 0x9ced737bb6c4183d, 0x55464dd69685606b, + 0xc428d05aa4751e4c, 0xaa97e14c3c26b886, + 0xf53304714d9265df, 0xd53dd99f4b3066a8, + 0x993fe2c6d07b7fab, 0xe546a8038efe4029, + 0xbf8fdb78849a5f96, 0xde98520472bdd033, + 0xef73d256a5c0f77c, 0x963e66858f6d4440, + 0x95a8637627989aad, 0xdde7001379a44aa8, + 0xbb127c53b17ec159, 0x5560c018580d5d52, + 0xe9d71b689dde71af, 0xaab8f01e6e10b4a6, + 0x9226712162ab070d, 0xcab3961304ca70e8, + 0xb6b00d69bb55c8d1, 0x3d607b97c5fd0d22, + 0xe45c10c42a2b3b05, 0x8cb89a7db77c506a, + 0x8eb98a7a9a5b04e3, 0x77f3608e92adb242, + 0xb267ed1940f1c61c, 0x55f038b237591ed3, + 0xdf01e85f912e37a3, 0x6b6c46dec52f6688, + 0x8b61313bbabce2c6, 0x2323ac4b3b3da015, + 0xae397d8aa96c1b77, 0xabec975e0a0d081a, + 0xd9c7dced53c72255, 0x96e7bd358c904a21, + 0x881cea14545c7575, 0x7e50d64177da2e54, + 0xaa242499697392d2, 0xdde50bd1d5d0b9e9, + 0xd4ad2dbfc3d07787, 0x955e4ec64b44e864, + 0x84ec3c97da624ab4, 0xbd5af13bef0b113e, + 0xa6274bbdd0fadd61, 0xecb1ad8aeacdd58e, + 0xcfb11ead453994ba, 0x67de18eda5814af2, + 0x81ceb32c4b43fcf4, 0x80eacf948770ced7, + 0xa2425ff75e14fc31, 0xa1258379a94d028d, + 0xcad2f7f5359a3b3e, 0x96ee45813a04330, + 0xfd87b5f28300ca0d, 0x8bca9d6e188853fc, + 0x9e74d1b791e07e48, 0x775ea264cf55347e, + 0xc612062576589dda, 0x95364afe032a819e, + 0xf79687aed3eec551, 0x3a83ddbd83f52205, + 0x9abe14cd44753b52, 0xc4926a9672793543, + 0xc16d9a0095928a27, 0x75b7053c0f178294, + 0xf1c90080baf72cb1, 0x5324c68b12dd6339, + 0x971da05074da7bee, 0xd3f6fc16ebca5e04, + 0xbce5086492111aea, 0x88f4bb1ca6bcf585, + 0xec1e4a7db69561a5, 0x2b31e9e3d06c32e6, + 0x9392ee8e921d5d07, 0x3aff322e62439fd0, + 0xb877aa3236a4b449, 0x9befeb9fad487c3, + 0xe69594bec44de15b, 0x4c2ebe687989a9b4, + 0x901d7cf73ab0acd9, 0xf9d37014bf60a11, + 0xb424dc35095cd80f, 0x538484c19ef38c95, + 0xe12e13424bb40e13, 0x2865a5f206b06fba, + 0x8cbccc096f5088cb, 0xf93f87b7442e45d4, + 0xafebff0bcb24aafe, 0xf78f69a51539d749, + 0xdbe6fecebdedd5be, 0xb573440e5a884d1c, + 0x89705f4136b4a597, 0x31680a88f8953031, + 0xabcc77118461cefc, 0xfdc20d2b36ba7c3e, + 0xd6bf94d5e57a42bc, 0x3d32907604691b4d, + 0x8637bd05af6c69b5, 0xa63f9a49c2c1b110, + 0xa7c5ac471b478423, 0xfcf80dc33721d54, + 0xd1b71758e219652b, 0xd3c36113404ea4a9, + 0x83126e978d4fdf3b, 0x645a1cac083126ea, + 0xa3d70a3d70a3d70a, 0x3d70a3d70a3d70a4, + 0xcccccccccccccccc, 0xcccccccccccccccd, + 0x8000000000000000, 0x0, + 0xa000000000000000, 0x0, + 0xc800000000000000, 0x0, + 0xfa00000000000000, 0x0, + 0x9c40000000000000, 0x0, + 0xc350000000000000, 0x0, + 0xf424000000000000, 0x0, + 0x9896800000000000, 0x0, + 0xbebc200000000000, 0x0, + 0xee6b280000000000, 0x0, + 0x9502f90000000000, 0x0, + 0xba43b74000000000, 0x0, + 0xe8d4a51000000000, 0x0, + 0x9184e72a00000000, 0x0, + 0xb5e620f480000000, 0x0, + 0xe35fa931a0000000, 0x0, + 0x8e1bc9bf04000000, 0x0, + 0xb1a2bc2ec5000000, 0x0, + 0xde0b6b3a76400000, 0x0, + 0x8ac7230489e80000, 0x0, + 0xad78ebc5ac620000, 0x0, + 0xd8d726b7177a8000, 0x0, + 0x878678326eac9000, 0x0, + 0xa968163f0a57b400, 0x0, + 0xd3c21bcecceda100, 0x0, + 0x84595161401484a0, 0x0, + 0xa56fa5b99019a5c8, 0x0, + 0xcecb8f27f4200f3a, 0x0, + 0x813f3978f8940984, 0x4000000000000000, + 0xa18f07d736b90be5, 0x5000000000000000, + 0xc9f2c9cd04674ede, 0xa400000000000000, + 0xfc6f7c4045812296, 0x4d00000000000000, + 0x9dc5ada82b70b59d, 0xf020000000000000, + 0xc5371912364ce305, 0x6c28000000000000, + 0xf684df56c3e01bc6, 0xc732000000000000, + 0x9a130b963a6c115c, 0x3c7f400000000000, + 0xc097ce7bc90715b3, 0x4b9f100000000000, + 0xf0bdc21abb48db20, 0x1e86d40000000000, + 0x96769950b50d88f4, 0x1314448000000000, + 0xbc143fa4e250eb31, 0x17d955a000000000, + 0xeb194f8e1ae525fd, 0x5dcfab0800000000, + 0x92efd1b8d0cf37be, 0x5aa1cae500000000, + 0xb7abc627050305ad, 0xf14a3d9e40000000, + 0xe596b7b0c643c719, 0x6d9ccd05d0000000, + 0x8f7e32ce7bea5c6f, 0xe4820023a2000000, + 0xb35dbf821ae4f38b, 0xdda2802c8a800000, + 0xe0352f62a19e306e, 0xd50b2037ad200000, + 0x8c213d9da502de45, 0x4526f422cc340000, + 0xaf298d050e4395d6, 0x9670b12b7f410000, + 0xdaf3f04651d47b4c, 0x3c0cdd765f114000, + 0x88d8762bf324cd0f, 0xa5880a69fb6ac800, + 0xab0e93b6efee0053, 0x8eea0d047a457a00, + 0xd5d238a4abe98068, 0x72a4904598d6d880, + 0x85a36366eb71f041, 0x47a6da2b7f864750, + 0xa70c3c40a64e6c51, 0x999090b65f67d924, + 0xd0cf4b50cfe20765, 0xfff4b4e3f741cf6d, + 0x82818f1281ed449f, 0xbff8f10e7a8921a4, + 0xa321f2d7226895c7, 0xaff72d52192b6a0d, + 0xcbea6f8ceb02bb39, 0x9bf4f8a69f764490, + 0xfee50b7025c36a08, 0x2f236d04753d5b4, + 0x9f4f2726179a2245, 0x1d762422c946590, + 0xc722f0ef9d80aad6, 0x424d3ad2b7b97ef5, + 0xf8ebad2b84e0d58b, 0xd2e0898765a7deb2, + 0x9b934c3b330c8577, 0x63cc55f49f88eb2f, + 0xc2781f49ffcfa6d5, 0x3cbf6b71c76b25fb, + 0xf316271c7fc3908a, 0x8bef464e3945ef7a, + 0x97edd871cfda3a56, 0x97758bf0e3cbb5ac, + 0xbde94e8e43d0c8ec, 0x3d52eeed1cbea317, + 0xed63a231d4c4fb27, 0x4ca7aaa863ee4bdd, + 0x945e455f24fb1cf8, 0x8fe8caa93e74ef6a, + 0xb975d6b6ee39e436, 0xb3e2fd538e122b44, + 0xe7d34c64a9c85d44, 0x60dbbca87196b616, + 0x90e40fbeea1d3a4a, 0xbc8955e946fe31cd, + 0xb51d13aea4a488dd, 0x6babab6398bdbe41, + 0xe264589a4dcdab14, 0xc696963c7eed2dd1, + 0x8d7eb76070a08aec, 0xfc1e1de5cf543ca2, + 0xb0de65388cc8ada8, 0x3b25a55f43294bcb, + 0xdd15fe86affad912, 0x49ef0eb713f39ebe, + 0x8a2dbf142dfcc7ab, 0x6e3569326c784337, + 0xacb92ed9397bf996, 0x49c2c37f07965404, + 0xd7e77a8f87daf7fb, 0xdc33745ec97be906, + 0x86f0ac99b4e8dafd, 0x69a028bb3ded71a3, + 0xa8acd7c0222311bc, 0xc40832ea0d68ce0c, + 0xd2d80db02aabd62b, 0xf50a3fa490c30190, + 0x83c7088e1aab65db, 0x792667c6da79e0fa, + 0xa4b8cab1a1563f52, 0x577001b891185938, + 0xcde6fd5e09abcf26, 0xed4c0226b55e6f86, + 0x80b05e5ac60b6178, 0x544f8158315b05b4, + 0xa0dc75f1778e39d6, 0x696361ae3db1c721, + 0xc913936dd571c84c, 0x3bc3a19cd1e38e9, + 0xfb5878494ace3a5f, 0x4ab48a04065c723, + 0x9d174b2dcec0e47b, 0x62eb0d64283f9c76, + 0xc45d1df942711d9a, 0x3ba5d0bd324f8394, + 0xf5746577930d6500, 0xca8f44ec7ee36479, + 0x9968bf6abbe85f20, 0x7e998b13cf4e1ecb, + 0xbfc2ef456ae276e8, 0x9e3fedd8c321a67e, + 0xefb3ab16c59b14a2, 0xc5cfe94ef3ea101e, + 0x95d04aee3b80ece5, 0xbba1f1d158724a12, + 0xbb445da9ca61281f, 0x2a8a6e45ae8edc97, + 0xea1575143cf97226, 0xf52d09d71a3293bd, + 0x924d692ca61be758, 0x593c2626705f9c56, + 0xb6e0c377cfa2e12e, 0x6f8b2fb00c77836c, + 0xe498f455c38b997a, 0xb6dfb9c0f956447, + 0x8edf98b59a373fec, 0x4724bd4189bd5eac, + 0xb2977ee300c50fe7, 0x58edec91ec2cb657, + 0xdf3d5e9bc0f653e1, 0x2f2967b66737e3ed, + 0x8b865b215899f46c, 0xbd79e0d20082ee74, + 0xae67f1e9aec07187, 0xecd8590680a3aa11, + 0xda01ee641a708de9, 0xe80e6f4820cc9495, + 0x884134fe908658b2, 0x3109058d147fdcdd, + 0xaa51823e34a7eede, 0xbd4b46f0599fd415, + 0xd4e5e2cdc1d1ea96, 0x6c9e18ac7007c91a, + 0x850fadc09923329e, 0x3e2cf6bc604ddb0, + 0xa6539930bf6bff45, 0x84db8346b786151c, + 0xcfe87f7cef46ff16, 0xe612641865679a63, + 0x81f14fae158c5f6e, 0x4fcb7e8f3f60c07e, + 0xa26da3999aef7749, 0xe3be5e330f38f09d, + 0xcb090c8001ab551c, 0x5cadf5bfd3072cc5, + 0xfdcb4fa002162a63, 0x73d9732fc7c8f7f6, + 0x9e9f11c4014dda7e, 0x2867e7fddcdd9afa, + 0xc646d63501a1511d, 0xb281e1fd541501b8, + 0xf7d88bc24209a565, 0x1f225a7ca91a4226, + 0x9ae757596946075f, 0x3375788de9b06958, + 0xc1a12d2fc3978937, 0x52d6b1641c83ae, + 0xf209787bb47d6b84, 0xc0678c5dbd23a49a, + 0x9745eb4d50ce6332, 0xf840b7ba963646e0, + 0xbd176620a501fbff, 0xb650e5a93bc3d898, + 0xec5d3fa8ce427aff, 0xa3e51f138ab4cebe, + 0x93ba47c980e98cdf, 0xc66f336c36b10137, + 0xb8a8d9bbe123f017, 0xb80b0047445d4184, + 0xe6d3102ad96cec1d, 0xa60dc059157491e5, + 0x9043ea1ac7e41392, 0x87c89837ad68db2f, + 0xb454e4a179dd1877, 0x29babe4598c311fb, + 0xe16a1dc9d8545e94, 0xf4296dd6fef3d67a, + 0x8ce2529e2734bb1d, 0x1899e4a65f58660c, + 0xb01ae745b101e9e4, 0x5ec05dcff72e7f8f, + 0xdc21a1171d42645d, 0x76707543f4fa1f73, + 0x899504ae72497eba, 0x6a06494a791c53a8, + 0xabfa45da0edbde69, 0x487db9d17636892, + 0xd6f8d7509292d603, 0x45a9d2845d3c42b6, + 0x865b86925b9bc5c2, 0xb8a2392ba45a9b2, + 0xa7f26836f282b732, 0x8e6cac7768d7141e, + 0xd1ef0244af2364ff, 0x3207d795430cd926, + 0x8335616aed761f1f, 0x7f44e6bd49e807b8, + 0xa402b9c5a8d3a6e7, 0x5f16206c9c6209a6, + 0xcd036837130890a1, 0x36dba887c37a8c0f, + 0x802221226be55a64, 0xc2494954da2c9789, + 0xa02aa96b06deb0fd, 0xf2db9baa10b7bd6c, + 0xc83553c5c8965d3d, 0x6f92829494e5acc7, + 0xfa42a8b73abbf48c, 0xcb772339ba1f17f9, + 0x9c69a97284b578d7, 0xff2a760414536efb, + 0xc38413cf25e2d70d, 0xfef5138519684aba, + 0xf46518c2ef5b8cd1, 0x7eb258665fc25d69, + 0x98bf2f79d5993802, 0xef2f773ffbd97a61, + 0xbeeefb584aff8603, 0xaafb550ffacfd8fa, + 0xeeaaba2e5dbf6784, 0x95ba2a53f983cf38, + 0x952ab45cfa97a0b2, 0xdd945a747bf26183, + 0xba756174393d88df, 0x94f971119aeef9e4, + 0xe912b9d1478ceb17, 0x7a37cd5601aab85d, + 0x91abb422ccb812ee, 0xac62e055c10ab33a, + 0xb616a12b7fe617aa, 0x577b986b314d6009, + 0xe39c49765fdf9d94, 0xed5a7e85fda0b80b, + 0x8e41ade9fbebc27d, 0x14588f13be847307, + 0xb1d219647ae6b31c, 0x596eb2d8ae258fc8, + 0xde469fbd99a05fe3, 0x6fca5f8ed9aef3bb, + 0x8aec23d680043bee, 0x25de7bb9480d5854, + 0xada72ccc20054ae9, 0xaf561aa79a10ae6a, + 0xd910f7ff28069da4, 0x1b2ba1518094da04, + 0x87aa9aff79042286, 0x90fb44d2f05d0842, + 0xa99541bf57452b28, 0x353a1607ac744a53, + 0xd3fa922f2d1675f2, 0x42889b8997915ce8, + 0x847c9b5d7c2e09b7, 0x69956135febada11, + 0xa59bc234db398c25, 0x43fab9837e699095, + 0xcf02b2c21207ef2e, 0x94f967e45e03f4bb, + 0x8161afb94b44f57d, 0x1d1be0eebac278f5, + 0xa1ba1ba79e1632dc, 0x6462d92a69731732, + 0xca28a291859bbf93, 0x7d7b8f7503cfdcfe, + 0xfcb2cb35e702af78, 0x5cda735244c3d43e, + 0x9defbf01b061adab, 0x3a0888136afa64a7, + 0xc56baec21c7a1916, 0x88aaa1845b8fdd0, + 0xf6c69a72a3989f5b, 0x8aad549e57273d45, + 0x9a3c2087a63f6399, 0x36ac54e2f678864b, + 0xc0cb28a98fcf3c7f, 0x84576a1bb416a7dd, + 0xf0fdf2d3f3c30b9f, 0x656d44a2a11c51d5, + 0x969eb7c47859e743, 0x9f644ae5a4b1b325, + 0xbc4665b596706114, 0x873d5d9f0dde1fee, + 0xeb57ff22fc0c7959, 0xa90cb506d155a7ea, + 0x9316ff75dd87cbd8, 0x9a7f12442d588f2, + 0xb7dcbf5354e9bece, 0xc11ed6d538aeb2f, + 0xe5d3ef282a242e81, 0x8f1668c8a86da5fa, + 0x8fa475791a569d10, 0xf96e017d694487bc, + 0xb38d92d760ec4455, 0x37c981dcc395a9ac, + 0xe070f78d3927556a, 0x85bbe253f47b1417, + 0x8c469ab843b89562, 0x93956d7478ccec8e, + 0xaf58416654a6babb, 0x387ac8d1970027b2, + 0xdb2e51bfe9d0696a, 0x6997b05fcc0319e, + 0x88fcf317f22241e2, 0x441fece3bdf81f03, + 0xab3c2fddeeaad25a, 0xd527e81cad7626c3, + 0xd60b3bd56a5586f1, 0x8a71e223d8d3b074, + 0x85c7056562757456, 0xf6872d5667844e49, + 0xa738c6bebb12d16c, 0xb428f8ac016561db, + 0xd106f86e69d785c7, 0xe13336d701beba52, + 0x82a45b450226b39c, 0xecc0024661173473, + 0xa34d721642b06084, 0x27f002d7f95d0190, + 0xcc20ce9bd35c78a5, 0x31ec038df7b441f4, + 0xff290242c83396ce, 0x7e67047175a15271, + 0x9f79a169bd203e41, 0xf0062c6e984d386, + 0xc75809c42c684dd1, 0x52c07b78a3e60868, + 0xf92e0c3537826145, 0xa7709a56ccdf8a82, + 0x9bbcc7a142b17ccb, 0x88a66076400bb691, + 0xc2abf989935ddbfe, 0x6acff893d00ea435, + 0xf356f7ebf83552fe, 0x583f6b8c4124d43, + 0x98165af37b2153de, 0xc3727a337a8b704a, + 0xbe1bf1b059e9a8d6, 0x744f18c0592e4c5c, + 0xeda2ee1c7064130c, 0x1162def06f79df73, + 0x9485d4d1c63e8be7, 0x8addcb5645ac2ba8, + 0xb9a74a0637ce2ee1, 0x6d953e2bd7173692, + 0xe8111c87c5c1ba99, 0xc8fa8db6ccdd0437, + 0x910ab1d4db9914a0, 0x1d9c9892400a22a2, + 0xb54d5e4a127f59c8, 0x2503beb6d00cab4b, + 0xe2a0b5dc971f303a, 0x2e44ae64840fd61d, + 0x8da471a9de737e24, 0x5ceaecfed289e5d2, + 0xb10d8e1456105dad, 0x7425a83e872c5f47, + 0xdd50f1996b947518, 0xd12f124e28f77719, + 0x8a5296ffe33cc92f, 0x82bd6b70d99aaa6f, + 0xace73cbfdc0bfb7b, 0x636cc64d1001550b, + 0xd8210befd30efa5a, 0x3c47f7e05401aa4e, + 0x8714a775e3e95c78, 0x65acfaec34810a71, + 0xa8d9d1535ce3b396, 0x7f1839a741a14d0d, + 0xd31045a8341ca07c, 0x1ede48111209a050, + 0x83ea2b892091e44d, 0x934aed0aab460432, + 0xa4e4b66b68b65d60, 0xf81da84d5617853f, + 0xce1de40642e3f4b9, 0x36251260ab9d668e, + 0x80d2ae83e9ce78f3, 0xc1d72b7c6b426019, + 0xa1075a24e4421730, 0xb24cf65b8612f81f, + 0xc94930ae1d529cfc, 0xdee033f26797b627, + 0xfb9b7cd9a4a7443c, 0x169840ef017da3b1, + 0x9d412e0806e88aa5, 0x8e1f289560ee864e, + 0xc491798a08a2ad4e, 0xf1a6f2bab92a27e2, + 0xf5b5d7ec8acb58a2, 0xae10af696774b1db, + 0x9991a6f3d6bf1765, 0xacca6da1e0a8ef29, + 0xbff610b0cc6edd3f, 0x17fd090a58d32af3, + 0xeff394dcff8a948e, 0xddfc4b4cef07f5b0, + 0x95f83d0a1fb69cd9, 0x4abdaf101564f98e, + 0xbb764c4ca7a4440f, 0x9d6d1ad41abe37f1, + 0xea53df5fd18d5513, 0x84c86189216dc5ed, + 0x92746b9be2f8552c, 0x32fd3cf5b4e49bb4, + 0xb7118682dbb66a77, 0x3fbc8c33221dc2a1, + 0xe4d5e82392a40515, 0xfabaf3feaa5334a, + 0x8f05b1163ba6832d, 0x29cb4d87f2a7400e, + 0xb2c71d5bca9023f8, 0x743e20e9ef511012, + 0xdf78e4b2bd342cf6, 0x914da9246b255416, + 0x8bab8eefb6409c1a, 0x1ad089b6c2f7548e, + 0xae9672aba3d0c320, 0xa184ac2473b529b1, + 0xda3c0f568cc4f3e8, 0xc9e5d72d90a2741e, + 0x8865899617fb1871, 0x7e2fa67c7a658892, + 0xaa7eebfb9df9de8d, 0xddbb901b98feeab7, + 0xd51ea6fa85785631, 0x552a74227f3ea565, + 0x8533285c936b35de, 0xd53a88958f87275f, + 0xa67ff273b8460356, 0x8a892abaf368f137, + 0xd01fef10a657842c, 0x2d2b7569b0432d85, + 0x8213f56a67f6b29b, 0x9c3b29620e29fc73, + 0xa298f2c501f45f42, 0x8349f3ba91b47b8f, + 0xcb3f2f7642717713, 0x241c70a936219a73, + 0xfe0efb53d30dd4d7, 0xed238cd383aa0110, + 0x9ec95d1463e8a506, 0xf4363804324a40aa, + 0xc67bb4597ce2ce48, 0xb143c6053edcd0d5, + 0xf81aa16fdc1b81da, 0xdd94b7868e94050a, + 0x9b10a4e5e9913128, 0xca7cf2b4191c8326, + 0xc1d4ce1f63f57d72, 0xfd1c2f611f63a3f0, + 0xf24a01a73cf2dccf, 0xbc633b39673c8cec, + 0x976e41088617ca01, 0xd5be0503e085d813, + 0xbd49d14aa79dbc82, 0x4b2d8644d8a74e18, + 0xec9c459d51852ba2, 0xddf8e7d60ed1219e, + 0x93e1ab8252f33b45, 0xcabb90e5c942b503, + 0xb8da1662e7b00a17, 0x3d6a751f3b936243, + 0xe7109bfba19c0c9d, 0xcc512670a783ad4, + 0x906a617d450187e2, 0x27fb2b80668b24c5, + 0xb484f9dc9641e9da, 0xb1f9f660802dedf6, + 0xe1a63853bbd26451, 0x5e7873f8a0396973, + 0x8d07e33455637eb2, 0xdb0b487b6423e1e8, + 0xb049dc016abc5e5f, 0x91ce1a9a3d2cda62, + 0xdc5c5301c56b75f7, 0x7641a140cc7810fb, + 0x89b9b3e11b6329ba, 0xa9e904c87fcb0a9d, + 0xac2820d9623bf429, 0x546345fa9fbdcd44, + 0xd732290fbacaf133, 0xa97c177947ad4095, + 0x867f59a9d4bed6c0, 0x49ed8eabcccc485d, + 0xa81f301449ee8c70, 0x5c68f256bfff5a74, + 0xd226fc195c6a2f8c, 0x73832eec6fff3111, + 0x83585d8fd9c25db7, 0xc831fd53c5ff7eab, + 0xa42e74f3d032f525, 0xba3e7ca8b77f5e55, + 0xcd3a1230c43fb26f, 0x28ce1bd2e55f35eb, + 0x80444b5e7aa7cf85, 0x7980d163cf5b81b3, + 0xa0555e361951c366, 0xd7e105bcc332621f, + 0xc86ab5c39fa63440, 0x8dd9472bf3fefaa7, + 0xfa856334878fc150, 0xb14f98f6f0feb951, + 0x9c935e00d4b9d8d2, 0x6ed1bf9a569f33d3, + 0xc3b8358109e84f07, 0xa862f80ec4700c8, + 0xf4a642e14c6262c8, 0xcd27bb612758c0fa, + 0x98e7e9cccfbd7dbd, 0x8038d51cb897789c, + 0xbf21e44003acdd2c, 0xe0470a63e6bd56c3, + 0xeeea5d5004981478, 0x1858ccfce06cac74, + 0x95527a5202df0ccb, 0xf37801e0c43ebc8, + 0xbaa718e68396cffd, 0xd30560258f54e6ba, + 0xe950df20247c83fd, 0x47c6b82ef32a2069, + 0x91d28b7416cdd27e, 0x4cdc331d57fa5441, + 0xb6472e511c81471d, 0xe0133fe4adf8e952, + 0xe3d8f9e563a198e5, 0x58180fddd97723a6, + 0x8e679c2f5e44ff8f, 0x570f09eaa7ea7648 + }; + private static void AccumulateDecimalDigitsIntoBigInteger(ref NumberBuffer number, uint firstIndex, uint lastIndex, out BigInteger result) { BigInteger.SetZero(out result); @@ -196,9 +878,9 @@ private static ulong AssembleFloatingPointBits(in FloatingPointInfo info, ulong // appropriately, to form a normal number: if (mantissa > info.DenormalMantissaMask) { - // We add one to the denormal_mantissa_shift to account for the + // We add one to the denormalMantissaShift to account for the // hidden mantissa bit (we subtracted one to account for this bit - // when we computed the denormal_mantissa_shift above). + // when we computed the denormalMantissaShift above). exponent = initialExponent - (denormalMantissaShift + 1) - normalMantissaShift; } } @@ -310,11 +992,19 @@ private static uint DigitsToUInt32(byte* p, int count) Debug.Assert((1 <= count) && (count <= 9)); byte* end = (p + count); - uint res = (uint)(p[0] - '0'); + uint res = 0; + + // parse batches of 8 digits with SWAR + while (p <= end - 8) + { + res = (res * 100000000) + ParseEightDigitsUnrolled(p); + p += 8; + } - for (p++; p < end; p++) + while (p != end) { res = (10 * res) + p[0] - '0'; + ++p; } return res; @@ -326,16 +1016,56 @@ private static ulong DigitsToUInt64(byte* p, int count) Debug.Assert((1 <= count) && (count <= 19)); byte* end = (p + count); - ulong res = (ulong)(p[0] - '0'); + ulong res = 0; + + // parse batches of 8 digits with SWAR + while (end - p >= 8) + { + res = (res * 100000000) + ParseEightDigitsUnrolled(p); + p += 8; + } - for (p++; p < end; p++) + while (p != end) { res = (10 * res) + p[0] - '0'; + ++p; } return res; } + /// + /// Parse eight consecutive digits using SWAR + /// https://lemire.me/blog/2022/01/21/swar-explained-parsing-eight-digits/ + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static uint ParseEightDigitsUnrolled(byte* chars) + { + // let's take the following value (byte*) 12345678 and read it unaligned : + // we get a ulong value of 0x3837363534333231 + // 1. Subtract character '0' 0x30 for each byte to get 0x0807060504030201 + // 2. Consider this sequence as bytes sequence : b8b7b6b5b4b3b2b1 + // we need to transform it to b1b2b3b4b5b6b7b8 by computing : + // 10000 * (100 * (10*b1+b2) + 10*b3+b4) + 100*(10*b5+b6) + 10*b7+b8 + // this is achieved by masking and shifting values + ulong val = Unsafe.ReadUnaligned(chars); + + // With BigEndian system an endianness swap has to be performed + // before the following operations as if it has been read with LittleEndian system + if (!BitConverter.IsLittleEndian) + { + val = BinaryPrimitives.ReverseEndianness(val); + } + + const ulong mask = 0x000000FF000000FF; + const ulong mul1 = 0x000F424000000064; // 100 + (1000000ULL << 32) + const ulong mul2 = 0x0000271000000001; // 1 + (10000ULL << 32) + val -= 0x3030303030303030; + val = (val * 10) + (val >> 8); // val = (val * 2561) >> 8; + val = (((val & mask) * mul1) + (((val >> 16) & mask) * mul2)) >> 32; + return (uint)val; + } + private static ulong NumberToDoubleFloatingPointBits(ref NumberBuffer number, in FloatingPointInfo info) { Debug.Assert(info.DenormalMantissaBits == 52); @@ -361,34 +1091,56 @@ private static ulong NumberToDoubleFloatingPointBits(ref NumberBuffer number, in uint integerDigitsPresent = Math.Min(positiveExponent, totalDigits); uint fractionalDigitsPresent = totalDigits - integerDigitsPresent; - uint fastExponent = (uint)(Math.Abs(number.Scale - integerDigitsPresent - fractionalDigitsPresent)); + // Above 19 digits, we rely on slow path + if (totalDigits <= 19) + { + byte* src = number.GetDigitsPointer(); - // When the number of significant digits is less than or equal to 15 and the - // scale is less than or equal to 22, we can take some shortcuts and just rely - // on floating-point arithmetic to compute the correct result. This is - // because each floating-point precision values allows us to exactly represent - // different whole integers and certain powers of 10, depending on the underlying - // formats exact range. Additionally, IEEE operations dictate that the result is - // computed to the infinitely precise result and then rounded, which means that - // we can rely on it to produce the correct result when both inputs are exact. + ulong mantissa = DigitsToUInt64(src, (int)(totalDigits)); - byte* src = number.GetDigitsPointer(); + int exponent = (int)(number.Scale - integerDigitsPresent - fractionalDigitsPresent); + int fastExponent = Math.Abs(exponent); - if ((totalDigits <= 15) && (fastExponent <= 22)) - { - double result = DigitsToUInt64(src, (int)(totalDigits)); - double scale = s_Pow10DoubleTable[fastExponent]; + // When the number of significant digits is less than or equal to MaxMantissaFastPath and the + // scale is less than or equal to MaxExponentFastPath, we can take some shortcuts and just rely + // on floating-point arithmetic to compute the correct result. This is + // because each floating-point precision values allows us to exactly represent + // different whole integers and certain powers of 10, depending on the underlying + // formats exact range. Additionally, IEEE operations dictate that the result is + // computed to the infinitely precise result and then rounded, which means that + // we can rely on it to produce the correct result when both inputs are exact. + // This is known as Clinger's fast path - if (fractionalDigitsPresent != 0) + if ((mantissa <= info.MaxMantissaFastPath) && (fastExponent <= info.MaxExponentFastPath)) { - result /= scale; + double mantissa_d = mantissa; + double scale = s_Pow10DoubleTable[fastExponent]; + + if (fractionalDigitsPresent != 0) + { + mantissa_d /= scale; + } + else + { + mantissa_d *= scale; + } + + return BitConverter.DoubleToUInt64Bits(mantissa_d); } - else + + // Number Parsing at a Gigabyte per Second, Software: Practice and Experience 51(8), 2021 + // https://arxiv.org/abs/2101.11408 + (int Exponent, ulong Mantissa) am = ComputeFloat(exponent, mantissa, info); + + // If we called ComputeFloat and we have an invalid power of 2 (Exponent < 0), + // then we need to go the slow way around again. This is very uncommon. + if (am.Exponent > 0) { - result *= scale; - } + ulong word = am.Mantissa; + word |= (ulong)(uint)(am.Exponent) << info.DenormalMantissaBits; + return word; - return BitConverter.DoubleToUInt64Bits(result); + } } return NumberToFloatingPointBitsSlow(ref number, in info, positiveExponent, integerDigitsPresent, fractionalDigitsPresent); @@ -419,57 +1171,57 @@ private static ushort NumberToHalfFloatingPointBits(ref NumberBuffer number, in uint integerDigitsPresent = Math.Min(positiveExponent, totalDigits); uint fractionalDigitsPresent = totalDigits - integerDigitsPresent; - uint fastExponent = (uint)(Math.Abs(number.Scale - integerDigitsPresent - fractionalDigitsPresent)); + int exponent = (int)(number.Scale - integerDigitsPresent - fractionalDigitsPresent); + int fastExponent = Math.Abs(exponent); - // When the number of significant digits is less than or equal to 15 and the - // scale is less than or equal to 22, we can take some shortcuts and just rely - // on floating-point arithmetic to compute the correct result. This is - // because each floating-point precision values allows us to exactly represent - // different whole integers and certain powers of 10, depending on the underlying - // formats exact range. Additionally, IEEE operations dictate that the result is - // computed to the infinitely precise result and then rounded, which means that - // we can rely on it to produce the correct result when both inputs are exact. - - byte* src = number.GetDigitsPointer(); - - if ((totalDigits <= 7) && (fastExponent <= 10)) + // Above 19 digits, we rely on slow path + if (totalDigits <= 19) { - // It is only valid to do this optimization for half and single-precision floating-point - // values since we can lose some of the mantissa bits and would return the - // wrong value when upcasting to double. + byte* src = number.GetDigitsPointer(); - float result = DigitsToUInt32(src, (int)(totalDigits)); - float scale = s_Pow10SingleTable[fastExponent]; + // When the number of significant digits is less than or equal to MaxMantissaFastPath and the + // scale is less than or equal to MaxExponentFastPath, we can take some shortcuts and just rely + // on floating-point arithmetic to compute the correct result. This is + // because each floating-point precision values allows us to exactly represent + // different whole integers and certain powers of 10, depending on the underlying + // formats exact range. Additionally, IEEE operations dictate that the result is + // computed to the infinitely precise result and then rounded, which means that + // we can rely on it to produce the correct result when both inputs are exact. + // This is known as Clinger's fast path - if (fractionalDigitsPresent != 0) - { - result /= scale; - } - else - { - result *= scale; - } + ulong mantissa = DigitsToUInt64(src, (int)(totalDigits)); - return BitConverter.HalfToUInt16Bits((Half)result); - } + if ((mantissa <= info.MaxMantissaFastPath) && (fastExponent <= info.MaxExponentFastPath)) + { + double mantissa_d = mantissa; + double scale = s_Pow10DoubleTable[fastExponent]; - if ((totalDigits <= 15) && (fastExponent <= 22)) - { - double result = DigitsToUInt64(src, (int)(totalDigits)); - double scale = s_Pow10DoubleTable[fastExponent]; + if (fractionalDigitsPresent != 0) + { + mantissa_d /= scale; + } + else + { + mantissa_d *= scale; + } - if (fractionalDigitsPresent != 0) - { - result /= scale; + return BitConverter.HalfToUInt16Bits((Half)(mantissa_d)); } - else + + // Number Parsing at a Gigabyte per Second, Software: Practice and Experience 51(8), 2021 + // https://arxiv.org/abs/2101.11408 + (int Exponent, ulong Mantissa) am = ComputeFloat(exponent, mantissa, info); + + // If we called ComputeFloat and we have an invalid power of 2 (Exponent < 0), + // then we need to go the slow way around again. This is very uncommon. + if (am.Exponent > 0) { - result *= scale; + ulong word = am.Mantissa; + word |= (ulong)(uint)(am.Exponent) << info.DenormalMantissaBits; + return (ushort)word; } - return BitConverter.HalfToUInt16Bits((Half)(result)); } - return (ushort)NumberToFloatingPointBitsSlow(ref number, in info, positiveExponent, integerDigitsPresent, fractionalDigitsPresent); } @@ -498,57 +1250,58 @@ private static uint NumberToSingleFloatingPointBits(ref NumberBuffer number, in uint integerDigitsPresent = Math.Min(positiveExponent, totalDigits); uint fractionalDigitsPresent = totalDigits - integerDigitsPresent; - uint fastExponent = (uint)(Math.Abs(number.Scale - integerDigitsPresent - fractionalDigitsPresent)); - - // When the number of significant digits is less than or equal to 15 and the - // scale is less than or equal to 22, we can take some shortcuts and just rely - // on floating-point arithmetic to compute the correct result. This is - // because each floating-point precision values allows us to exactly represent - // different whole integers and certain powers of 10, depending on the underlying - // formats exact range. Additionally, IEEE operations dictate that the result is - // computed to the infinitely precise result and then rounded, which means that - // we can rely on it to produce the correct result when both inputs are exact. + int exponent = (int)(number.Scale - integerDigitsPresent - fractionalDigitsPresent); + int fastExponent = Math.Abs(exponent); - byte* src = number.GetDigitsPointer(); - if ((totalDigits <= 7) && (fastExponent <= 10)) + // Above 19 digits, we rely on slow path + if (totalDigits <= 19) { - // It is only valid to do this optimization for single-precision floating-point - // values since we can lose some of the mantissa bits and would return the - // wrong value when upcasting to double. - - float result = DigitsToUInt32(src, (int)(totalDigits)); - float scale = s_Pow10SingleTable[fastExponent]; - if (fractionalDigitsPresent != 0) - { - result /= scale; - } - else - { - result *= scale; - } + byte* src = number.GetDigitsPointer(); - return BitConverter.SingleToUInt32Bits(result); - } + // When the number of significant digits is less than or equal to MaxMantissaFastPath and the + // scale is less than or equal to MaxExponentFastPath, we can take some shortcuts and just rely + // on floating-point arithmetic to compute the correct result. This is + // because each floating-point precision values allows us to exactly represent + // different whole integers and certain powers of 10, depending on the underlying + // formats exact range. Additionally, IEEE operations dictate that the result is + // computed to the infinitely precise result and then rounded, which means that + // we can rely on it to produce the correct result when both inputs are exact. + // This is known as Clinger's fast path - if ((totalDigits <= 15) && (fastExponent <= 22)) - { - double result = DigitsToUInt64(src, (int)(totalDigits)); - double scale = s_Pow10DoubleTable[fastExponent]; + ulong mantissa = DigitsToUInt64(src, (int)(totalDigits)); - if (fractionalDigitsPresent != 0) + if ((mantissa <= info.MaxMantissaFastPath) && (fastExponent <= info.MaxExponentFastPath)) { - result /= scale; + double mantissa_d = mantissa; + double scale = s_Pow10DoubleTable[fastExponent]; + + if (fractionalDigitsPresent != 0) + { + mantissa_d /= scale; + } + else + { + mantissa_d *= scale; + } + + return BitConverter.SingleToUInt32Bits((float)(mantissa_d)); } - else + + // Number Parsing at a Gigabyte per Second, Software: Practice and Experience 51(8), 2021 + // https://arxiv.org/abs/2101.11408 + (int Exponent, ulong Mantissa) am = ComputeFloat(exponent, mantissa, info); + + // If we called ComputeFloat and we have an invalid power of 2 (Exponent < 0), + // then we need to go the slow way around again. This is very uncommon. + if (am.Exponent > 0) { - result *= scale; + ulong word = am.Mantissa; + word |= (ulong)(uint)(am.Exponent) << info.DenormalMantissaBits; + return (uint)word; } - - return BitConverter.SingleToUInt32Bits((float)(result)); } - return (uint)NumberToFloatingPointBitsSlow(ref number, in info, positiveExponent, integerDigitsPresent, fractionalDigitsPresent); } @@ -569,7 +1322,7 @@ private static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in F uint fractionalFirstIndex = integerLastIndex; uint fractionalLastIndex = totalDigits; - // First, we accumulate the integer part of the mantissa into a big_integer: + // First, we accumulate the integer part of the mantissa into a BigInteger: AccumulateDecimalDigitsIntoBigInteger(ref number, IntegerFirstIndex, integerLastIndex, out BigInteger integerValue); if (integerDigitsMissing > 0) @@ -582,7 +1335,7 @@ private static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in F integerValue.MultiplyPow10(integerDigitsMissing); } - // At this point, the integer_value contains the value of the integer part + // At this point, the integerValue contains the value of the integer part // of the mantissa. If either [1] this number has more than the required // number of bits of precision or [2] the mantissa has no fractional part, // then we can assemble the result immediately: @@ -764,5 +1517,168 @@ private static bool ShouldRoundUp(bool lsbBit, bool roundBit, bool hasTailBits) // two is even (this is "round-to-even"). return roundBit && (hasTailBits || lsbBit); } + + + /// + /// Daniel Lemire's Fast-float algorithm please refer to https://arxiv.org/abs/2101.11408 + /// Ojective is to calculate m and p, adjusted mantissa and power of 2, based on the + /// following equality : (m x 2^p) = (w x 10^q) + /// + /// decimal exponent + /// decimal significant (mantissa) + /// parameters for calculations for the value's type (double, float, half) + /// Tuple : Exponent (power of 2) and adjusted mantissa + internal static (int Exponent, ulong Mantissa) ComputeFloat(long q, ulong w, FloatingPointInfo info) + { + int exponent; + ulong mantissa = 0; + + if ((w == 0) || (q < info.MinFastFloatDecimalExponent)) + { + // result should be zero + return default; + } + if (q > info.MaxFastFloatDecimalExponent) + { + // we want to get infinity: + exponent = info.InfinityExponent; + mantissa = 0; + return (exponent, mantissa); + } + + // We want the most significant bit of i to be 1. Shift if needed. + int lz = BitOperations.LeadingZeroCount(w); + w <<= lz; + + // The required precision is info.DenormalMantissaBits + 3 because + // 1. We need the implicit bit + // 2. We need an extra bit for rounding purposes + // 3. We might lose a bit due to the "upperbit" routine (result too small, requiring a shift) + + var product = ComputeProductApproximation(info.DenormalMantissaBits + 3, q, w); + if (product.low == 0xFFFFFFFFFFFFFFFF) + { + // could guard it further + // In some very rare cases, this could happen, in which case we might need a more accurate + // computation that what we can provide cheaply. This is very, very unlikely. + // + bool insideSafeExponent = (q >= -27) && (q <= 55); // always good because 5**q <2**128 when q>=0, + // and otherwise, for q<0, we have 5**-q<2**64 and the 128-bit reciprocal allows for exact computation. + if (!insideSafeExponent) + { + exponent = -1; // This (a negative value) indicates an error condition. + return (exponent, mantissa); + } + } + // The "ComputeProductApproximation" function can be slightly slower than a branchless approach: + // but in practice, we can win big with the ComputeProductApproximation if its additional branch + // is easily predicted. Which is best is data specific. + int upperBit = (int)(product.high >> 63); + + mantissa = product.high >> (upperBit + 64 - info.DenormalMantissaBits - 3); + + exponent = (int)(CalculatePower((int)(q)) + upperBit - lz - (-info.MaxBinaryExponent)); + if (exponent <= 0) + { + // we have a subnormal? + // Here have that answer.power2 <= 0 so -answer.power2 >= 0 + if (-exponent + 1 >= 64) + { + // if we have more than 64 bits below the minimum exponent, you have a zero for sure. + exponent = 0; + mantissa = 0; + // result should be zero + return (exponent, mantissa); + } + // next line is safe because -answer.power2 + 1 < 64 + mantissa >>= -exponent + 1; + // Thankfully, we can't have both "round-to-even" and subnormals because + // "round-to-even" only occurs for powers close to 0. + mantissa += (mantissa & 1); // round up + mantissa >>= 1; + // There is a weird scenario where we don't have a subnormal but just + // suppose we start with 2.2250738585072013e-308, we end up + // with 0x3fffffffffffff x 2^-1023-53 which is technically subnormal + // whereas 0x40000000000000 x 2^-1023-53 is normal. Now, we need to round + // up 0x3fffffffffffff x 2^-1023-53 and once we do, we are no longer + // subnormal, but we can only know this after rounding. + // So we only declare a subnormal if we are smaller than the threshold. + exponent = (mantissa < (1UL << info.DenormalMantissaBits)) ? 0 : 1; + return (exponent, mantissa); + } + + // usually, we round *up*, but if we fall right in between and and we have an + // even basis, we need to round down + // We are only concerned with the cases where 5**q fits in single 64-bit word. + if ((product.low <= 1) && (q >= info.MinExponentRoundToEven) && (q <= info.MaxExponentRoundToEven) && + ((mantissa & 3) == 1)) + { + // We may fall between two floats! + // To be in-between two floats we need that in doing + // answer.mantissa = product.high >> (upperBit + 64 - info.DenormalMantissaBits - 3); + // ... we dropped out only zeroes. But if this happened, then we can go back!!! + if ((mantissa << (upperBit + 64 - info.DenormalMantissaBits - 3)) == product.high) + { + // flip it so that we do not round up + mantissa &= ~1UL; + } + } + + mantissa += (mantissa & 1); // round up + mantissa >>= 1; + if (mantissa >= (2UL << info.DenormalMantissaBits)) + { + mantissa = (1UL << info.DenormalMantissaBits); + // undo previous addition + exponent++; + } + + mantissa &= ~(1UL << info.DenormalMantissaBits); + if (exponent >= info.InfinityExponent) + { + // infinity + exponent = info.InfinityExponent; + mantissa = 0; + } + return (exponent, mantissa); + } + private static (ulong high, ulong low) ComputeProductApproximation(int bitPrecision, long q, ulong w) + { + // -342 being the SmallestPowerOfFive + int index = 2 * (int)(q - -342); + // For small values of q, e.g., q in [0,27], the answer is always exact because + // Math.BigMul gives the exact answer. + ulong high = Math.BigMul(w, s_Pow5128Table[index], out ulong low); + ulong precisionMask = (bitPrecision < 64) ? (0xFFFFFFFFFFFFFFFFUL >> bitPrecision) : 0xFFFFFFFFFFFFFFFFUL; + if ((high & precisionMask) == precisionMask) + { + // could further guard with (lower + w < lower) + // regarding the second product, we only need secondproduct.high, but our expectation is that the compiler will optimize this extra work away if needed. + ulong high2 = Math.BigMul(w, s_Pow5128Table[index + 1], out ulong _); + low += high2; + if (high2 > low) + { + high++; + } + } + return (high, low); + } + + // For q in (0,350), we have that : + // f = (((152170 + 65536) * q) >> 16); + // is equal to + // floor(p) + q + // where + // p = log(5**q)/log(2) = q* log(5)/log(2) + // + // For negative values of q in (-400,0), we have that + // f = (((152170 + 65536) * q) >> 16); + // is equal to : + // -ceil(p) + q + // where + // p = log(5**-q)/log(2) = -q* log(5)/log(2) + // + internal static int CalculatePower(int q) + => (((152170 + 65536) * q) >> 16) + 63; } } diff --git a/src/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs b/src/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs index ce70c49dfc1471..c1d63f8a3bfa38 100644 --- a/src/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs +++ b/src/libraries/System.Private.CoreLib/src/System/OperatingSystem.cs @@ -29,10 +29,7 @@ internal OperatingSystem(PlatformID platform, Version version, string? servicePa throw new ArgumentOutOfRangeException(nameof(platform), platform, SR.Format(SR.Arg_EnumIllegalVal, platform)); } - if (version == null) - { - throw new ArgumentNullException(nameof(version)); - } + ArgumentNullException.ThrowIfNull(version); _platform = platform; _version = version; @@ -90,13 +87,8 @@ public string VersionString /// Indicates whether the current application is running on the specified platform. /// /// Case-insensitive platform name. Examples: Browser, Linux, FreeBSD, Android, iOS, macOS, tvOS, watchOS, Windows. - public static bool IsOSPlatform(string platform) + public static bool IsOSPlatform(string platform!!) { - if (platform == null) - { - throw new ArgumentNullException(nameof(platform)); - } - #if TARGET_BROWSER return platform.Equals("BROWSER", StringComparison.OrdinalIgnoreCase); #elif TARGET_WINDOWS diff --git a/src/libraries/System.Private.CoreLib/src/System/Progress.cs b/src/libraries/System.Private.CoreLib/src/System/Progress.cs index 6cc12c448c767c..462ca510be8fa5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Progress.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Progress.cs @@ -45,9 +45,9 @@ public Progress() /// could be invoked concurrently with itself. /// /// The is null (Nothing in Visual Basic). - public Progress(Action handler) : this() + public Progress(Action handler!!) : this() { - _handler = handler ?? throw new ArgumentNullException(nameof(handler)); + _handler = handler; } /// Raised for each reported progress value. diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Assembly.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Assembly.cs index 3612e751aee285..a5b088b878cfeb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Assembly.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Assembly.cs @@ -203,17 +203,7 @@ public override string ToString() public static string CreateQualifiedName(string? assemblyName, string? typeName) => typeName + ", " + assemblyName; - public static Assembly? GetAssembly(Type type) - { - if (type == null) - throw new ArgumentNullException(nameof(type)); - - Module m = type.Module; - if (m == null) - return null; - else - return m.Assembly; - } + public static Assembly? GetAssembly(Type type!!) => type.Module?.Assembly; // internal test hook private static bool s_forceNullEntryPoint; @@ -233,11 +223,8 @@ public override string ToString() // an emitted assembly. The assembly is loaded into a fully isolated ALC with resolution fully deferred to the AssemblyLoadContext.Default. // The second parameter is the raw bytes representing the symbol store that matches the assembly. [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public static Assembly Load(byte[] rawAssembly, byte[]? rawSymbolStore) + public static Assembly Load(byte[] rawAssembly!!, byte[]? rawSymbolStore) { - if (rawAssembly == null) - throw new ArgumentNullException(nameof(rawAssembly)); - if (rawAssembly.Length == 0) throw new BadImageFormatException(SR.BadImageFormat_BadILFormat); @@ -249,11 +236,8 @@ public static Assembly Load(byte[] rawAssembly, byte[]? rawSymbolStore) } [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public static Assembly LoadFile(string path) + public static Assembly LoadFile(string path!!) { - if (path == null) - throw new ArgumentNullException(nameof(path)); - if (PathInternal.IsPartiallyQualified(path)) { throw new ArgumentException(SR.Format(SR.Argument_AbsolutePathRequired, path), nameof(path)); @@ -335,11 +319,8 @@ public static Assembly LoadFile(string path) } [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public static Assembly LoadFrom(string assemblyFile) + public static Assembly LoadFrom(string assemblyFile!!) { - if (assemblyFile == null) - throw new ArgumentNullException(nameof(assemblyFile)); - string fullPath = Path.GetFullPath(assemblyFile); if (!s_loadFromHandlerSet) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyFileVersionAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyFileVersionAttribute.cs index aa3864d1a415dd..32265d443bcda9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyFileVersionAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyFileVersionAttribute.cs @@ -6,9 +6,9 @@ namespace System.Reflection [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] public sealed class AssemblyFileVersionAttribute : Attribute { - public AssemblyFileVersionAttribute(string version) + public AssemblyFileVersionAttribute(string version!!) { - Version = version ?? throw new ArgumentNullException(nameof(version)); + Version = version; } public string Version { get; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyName.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyName.cs index 5594d4fdef7f22..084805b66ce482 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyName.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/AssemblyName.cs @@ -28,10 +28,8 @@ public sealed partial class AssemblyName : ICloneable, IDeserializationCallback, public AssemblyName(string assemblyName) : this() { - if (assemblyName == null) - throw new ArgumentNullException(nameof(assemblyName)); - if ((assemblyName.Length == 0) || - (assemblyName[0] == '\0')) + ArgumentException.ThrowIfNullOrEmpty(assemblyName); + if (assemblyName[0] == '\0') throw new ArgumentException(SR.Format_StringZeroLength); AssemblyNameParser.AssemblyNameParts parts = AssemblyNameParser.Parse(assemblyName); @@ -165,11 +163,11 @@ public object Clone() private static Func? s_getAssemblyName; private static Func InitGetAssemblyName() { - Type? readerType = Type.GetType( + Type readerType = Type.GetType( "System.Reflection.Metadata.MetadataReader, System.Reflection.Metadata", - throwOnError: true); + throwOnError: true)!; - MethodInfo? getAssemblyNameMethod = readerType!.GetMethod( + MethodInfo? getAssemblyNameMethod = readerType.GetMethod( "GetAssemblyName", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, null, @@ -297,12 +295,8 @@ public static bool ReferenceMatchesDefinition(AssemblyName? reference, AssemblyN { if (object.ReferenceEquals(reference, definition)) return true; - - if (reference == null) - throw new ArgumentNullException(nameof(reference)); - - if (definition == null) - throw new ArgumentNullException(nameof(definition)); + ArgumentNullException.ThrowIfNull(reference); + ArgumentNullException.ThrowIfNull(definition); string refName = reference.Name ?? string.Empty; string defName = definition.Name ?? string.Empty; diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeData.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeData.cs index 69c9db7aba2c81..39d9968e0d84dc 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeData.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeData.cs @@ -10,35 +10,23 @@ namespace System.Reflection public class CustomAttributeData { #region Public Static Members - public static IList GetCustomAttributes(MemberInfo target) + public static IList GetCustomAttributes(MemberInfo target!!) { - if (target is null) - throw new ArgumentNullException(nameof(target)); - return target.GetCustomAttributesData(); } - public static IList GetCustomAttributes(Module target) + public static IList GetCustomAttributes(Module target!!) { - if (target is null) - throw new ArgumentNullException(nameof(target)); - return target.GetCustomAttributesData(); } - public static IList GetCustomAttributes(Assembly target) + public static IList GetCustomAttributes(Assembly target!!) { - if (target is null) - throw new ArgumentNullException(nameof(target)); - return target.GetCustomAttributesData(); } - public static IList GetCustomAttributes(ParameterInfo target) + public static IList GetCustomAttributes(ParameterInfo target!!) { - if (target is null) - throw new ArgumentNullException(nameof(target)); - return target.GetCustomAttributesData(); } #endregion diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeNamedArgument.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeNamedArgument.cs index b2baa777460a6b..1ec818145a76af 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeNamedArgument.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeNamedArgument.cs @@ -13,11 +13,8 @@ namespace System.Reflection private readonly MemberInfo _memberInfo; private readonly CustomAttributeTypedArgument _value; - public CustomAttributeNamedArgument(MemberInfo memberInfo, object? value) + public CustomAttributeNamedArgument(MemberInfo memberInfo!!, object? value) { - if (memberInfo is null) - throw new ArgumentNullException(nameof(memberInfo)); - Type type = memberInfo switch { FieldInfo field => field.FieldType, @@ -29,9 +26,9 @@ public CustomAttributeNamedArgument(MemberInfo memberInfo, object? value) _value = new CustomAttributeTypedArgument(type, value); } - public CustomAttributeNamedArgument(MemberInfo memberInfo, CustomAttributeTypedArgument typedArgument) + public CustomAttributeNamedArgument(MemberInfo memberInfo!!, CustomAttributeTypedArgument typedArgument) { - _memberInfo = memberInfo ?? throw new ArgumentNullException(nameof(memberInfo)); + _memberInfo = memberInfo; _value = typedArgument; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeTypedArgument.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeTypedArgument.cs index b0e306af8f838e..0ed140d4f821ea 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeTypedArgument.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/CustomAttributeTypedArgument.cs @@ -15,20 +15,14 @@ namespace System.Reflection private readonly object? _value; private readonly Type _argumentType; - public CustomAttributeTypedArgument(Type argumentType, object? value) + public CustomAttributeTypedArgument(Type argumentType!!, object? value) { - if (argumentType is null) - throw new ArgumentNullException(nameof(argumentType)); - _value = CanonicalizeValue(value); _argumentType = argumentType; } - public CustomAttributeTypedArgument(object value) + public CustomAttributeTypedArgument(object value!!) { - if (value is null) - throw new ArgumentNullException(nameof(value)); - _value = CanonicalizeValue(value); _argumentType = value.GetType(); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/IntrospectionExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/IntrospectionExtensions.cs index 648f61ab653ae9..6ce244b43309b6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/IntrospectionExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/IntrospectionExtensions.cs @@ -5,11 +5,8 @@ namespace System.Reflection { public static class IntrospectionExtensions { - public static TypeInfo GetTypeInfo(this Type type) + public static TypeInfo GetTypeInfo(this Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - if (type is IReflectableType reflectableType) return reflectableType.GetTypeInfo(); diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Module.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Module.cs index fc762fee949775..cbf100581b0037 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Module.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Module.cs @@ -35,27 +35,19 @@ protected Module() { } public virtual object[] GetCustomAttributes(Type attributeType, bool inherit) { throw NotImplemented.ByDesign; } [RequiresUnreferencedCode("Methods might be removed")] - public MethodInfo? GetMethod(string name) + public MethodInfo? GetMethod(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - return GetMethodImpl(name, Module.DefaultLookup, null, CallingConventions.Any, null, null); } [RequiresUnreferencedCode("Methods might be removed")] public MethodInfo? GetMethod(string name, Type[] types) => GetMethod(name, Module.DefaultLookup, null, CallingConventions.Any, types, null); [RequiresUnreferencedCode("Methods might be removed")] - public MethodInfo? GetMethod(string name, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types, ParameterModifier[]? modifiers) + public MethodInfo? GetMethod(string name!!, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types!!, ParameterModifier[]? modifiers) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (types == null) - throw new ArgumentNullException(nameof(types)); for (int i = 0; i < types.Length; i++) { - if (types[i] == null) - throw new ArgumentNullException(nameof(types)); + ArgumentNullException.ThrowIfNull(types[i], nameof(types)); } return GetMethodImpl(name, bindingAttr, binder, callConvention, types, modifiers); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/NullabilityInfoContext.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/NullabilityInfoContext.cs index 1a87dc84ee96bd..28a1902466407a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/NullabilityInfoContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/NullabilityInfoContext.cs @@ -63,13 +63,8 @@ private enum NotAnnotatedStatus /// The parameter which nullability info gets populated /// If the parameterInfo parameter is null /// - public NullabilityInfo Create(ParameterInfo parameterInfo) + public NullabilityInfo Create(ParameterInfo parameterInfo!!) { - if (parameterInfo is null) - { - throw new ArgumentNullException(nameof(parameterInfo)); - } - EnsureIsSupported(); IList attributes = parameterInfo.GetCustomAttributesData(); @@ -179,13 +174,8 @@ private void CheckNullabilityAttributes(NullabilityInfo nullability, IListThe parameter which nullability info gets populated /// If the propertyInfo parameter is null /// - public NullabilityInfo Create(PropertyInfo propertyInfo) + public NullabilityInfo Create(PropertyInfo propertyInfo!!) { - if (propertyInfo is null) - { - throw new ArgumentNullException(nameof(propertyInfo)); - } - EnsureIsSupported(); MethodInfo? getter = propertyInfo.GetGetMethod(true); @@ -235,13 +225,8 @@ private bool IsPrivateOrInternalMethodAndAnnotationDisabled(MethodBase method) /// The parameter which nullability info gets populated /// If the eventInfo parameter is null /// - public NullabilityInfo Create(EventInfo eventInfo) + public NullabilityInfo Create(EventInfo eventInfo!!) { - if (eventInfo is null) - { - throw new ArgumentNullException(nameof(eventInfo)); - } - EnsureIsSupported(); return GetNullabilityInfo(eventInfo, eventInfo.EventHandlerType!, CreateParser(eventInfo.GetCustomAttributesData())); @@ -255,13 +240,8 @@ public NullabilityInfo Create(EventInfo eventInfo) /// The parameter which nullability info gets populated /// If the fieldInfo parameter is null /// - public NullabilityInfo Create(FieldInfo fieldInfo) + public NullabilityInfo Create(FieldInfo fieldInfo!!) { - if (fieldInfo is null) - { - throw new ArgumentNullException(nameof(fieldInfo)); - } - EnsureIsSupported(); IList attributes = fieldInfo.GetCustomAttributesData(); diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/ParameterInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/ParameterInfo.cs index 9396cd5c2f80bc..5154011e6b9717 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/ParameterInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/ParameterInfo.cs @@ -26,25 +26,13 @@ protected ParameterInfo() { } public virtual object? RawDefaultValue => throw NotImplemented.ByDesign; public virtual bool HasDefaultValue => throw NotImplemented.ByDesign; - public virtual bool IsDefined(Type attributeType, bool inherit) - { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - - return false; - } + public virtual bool IsDefined(Type attributeType!!, bool inherit) => false; public virtual IEnumerable CustomAttributes => GetCustomAttributesData(); public virtual IList GetCustomAttributesData() { throw NotImplemented.ByDesign; } public virtual object[] GetCustomAttributes(bool inherit) => Array.Empty(); - public virtual object[] GetCustomAttributes(Type attributeType, bool inherit) - { - if (attributeType == null) - throw new ArgumentNullException(nameof(attributeType)); - - return Array.Empty(); - } + public virtual object[] GetCustomAttributes(Type attributeType!!, bool inherit) => Array.Empty(); public virtual Type[] GetOptionalCustomModifiers() => Type.EmptyTypes; public virtual Type[] GetRequiredCustomModifiers() => Type.EmptyTypes; diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Pointer.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Pointer.cs index e7b03169043d8c..38e82b50ab1372 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Pointer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Pointer.cs @@ -20,10 +20,8 @@ private Pointer(void* ptr, RuntimeType ptrType) _ptrType = ptrType; } - public static object Box(void* ptr, Type type) + public static object Box(void* ptr, Type type!!) { - if (type == null) - throw new ArgumentNullException(nameof(type)); if (!type.IsPointer) throw new ArgumentException(SR.Arg_MustBePointer, nameof(ptr)); if (type is not RuntimeType rtType) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/ReflectionContext.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/ReflectionContext.cs index 7cb11c5abe6dc7..3b7cd22a8adedb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/ReflectionContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/ReflectionContext.cs @@ -11,11 +11,8 @@ protected ReflectionContext() { } public abstract TypeInfo MapType(TypeInfo type); - public virtual TypeInfo GetTypeForObject(object value) + public virtual TypeInfo GetTypeForObject(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - return MapType(value.GetType().GetTypeInfo()); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs index 8ee3b14a658ccf..ee8b2a02de4613 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.cs @@ -48,11 +48,8 @@ private static InvocationFlags ComputeAndUpdateInvocationFlags(ConstructorInfo c return invocationFlags; } - internal static void CheckCanCreateInstance(Type declaringType, bool isVarArg) + internal static void CheckCanCreateInstance(Type declaringType!!, bool isVarArg) { - if (declaringType == null) - throw new ArgumentNullException(nameof(declaringType)); - // ctor is declared on interface class if (declaringType.IsInterface) throw new MemberAccessException( @@ -175,4 +172,4 @@ public override object Invoke(BindingFlags invokeAttr, Binder? binder, object?[] return retValue; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs index 7d2f60c2a78167..27ba0a0d51bc6b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeMethodInfo.cs @@ -133,4 +133,4 @@ private void ThrowNoInvokeException() return retValue; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeReflectionExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeReflectionExtensions.cs index 7a1ae78f24eabf..f0950b7e45307b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeReflectionExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/RuntimeReflectionExtensions.cs @@ -12,116 +12,72 @@ public static partial class RuntimeReflectionExtensions public static IEnumerable GetRuntimeFields( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - this Type type) + this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetFields(Everything); } public static IEnumerable GetRuntimeMethods( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - this Type type) + this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetMethods(Everything); } public static IEnumerable GetRuntimeProperties( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - this Type type) + this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetProperties(Everything); } public static IEnumerable GetRuntimeEvents( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - this Type type) + this Type type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetEvents(Everything); } public static FieldInfo? GetRuntimeField( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] - this Type type, string name) + this Type type!!, string name) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetField(name); } public static MethodInfo? GetRuntimeMethod( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] - this Type type, string name, Type[] parameters) + this Type type!!, string name, Type[] parameters) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetMethod(name, parameters); } public static PropertyInfo? GetRuntimeProperty( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] - this Type type, string name) + this Type type!!, string name) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetProperty(name); } public static EventInfo? GetRuntimeEvent( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] - this Type type, string name) + this Type type!!, string name) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return type.GetEvent(name); } - public static MethodInfo? GetRuntimeBaseDefinition(this MethodInfo method) + public static MethodInfo? GetRuntimeBaseDefinition(this MethodInfo method!!) { - if (method == null) - { - throw new ArgumentNullException(nameof(method)); - } return method.GetBaseDefinition(); } - public static InterfaceMapping GetRuntimeInterfaceMap(this TypeInfo typeInfo, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type interfaceType) + public static InterfaceMapping GetRuntimeInterfaceMap(this TypeInfo typeInfo!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type interfaceType) { - if (typeInfo == null) - { - throw new ArgumentNullException(nameof(typeInfo)); - } return typeInfo.GetInterfaceMap(interfaceType); } - public static MethodInfo GetMethodInfo(this Delegate del) + public static MethodInfo GetMethodInfo(this Delegate del!!) { - if (del == null) - { - throw new ArgumentNullException(nameof(del)); - } return del.Method; } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/SignatureConstructedGenericType.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/SignatureConstructedGenericType.cs index 854a08f6a184c4..4b1a91d891be5b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/SignatureConstructedGenericType.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/SignatureConstructedGenericType.cs @@ -9,19 +9,12 @@ internal sealed class SignatureConstructedGenericType : SignatureType { // The exception-visible name "typeArguments" is chosen to match the parameter name to Type.MakeGenericType() since that's the // intended user of this constructor. - internal SignatureConstructedGenericType(Type genericTypeDefinition, Type[] typeArguments) + internal SignatureConstructedGenericType(Type genericTypeDefinition!!, Type[] typeArguments!!) { - if (genericTypeDefinition is null) - throw new ArgumentNullException(nameof(genericTypeDefinition)); - - if (typeArguments is null) - throw new ArgumentNullException(nameof(typeArguments)); - typeArguments = (Type[])(typeArguments.Clone()); for (int i = 0; i < typeArguments.Length; i++) { - if (typeArguments[i] is null) - throw new ArgumentNullException(nameof(typeArguments)); + ArgumentNullException.ThrowIfNull(typeArguments[i], nameof(typeArguments)); } _genericTypeDefinition = genericTypeDefinition; diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeDelegator.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeDelegator.cs index d9de5027ce0a20..4551aaf0ce67f6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeDelegator.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/TypeDelegator.cs @@ -27,11 +27,8 @@ protected TypeDelegator() { } // NOTE: delegatingType is marked as DynamicallyAccessedMemberTypes.All, but analysis tools special case // calls to this constructor and propagate the existing dataflow metadata from delegatingType to this // TypeDelegator. The only purpose of the annotation here is to avoid dataflow warnings _within_ this type. - public TypeDelegator([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type delegatingType) + public TypeDelegator([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type delegatingType!!) { - if (delegatingType is null) - throw new ArgumentNullException(nameof(delegatingType)); - typeImpl = delegatingType; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/NeutralResourcesLanguageAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/NeutralResourcesLanguageAttribute.cs index 14f582f0371075..134dc0a721e3be 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/NeutralResourcesLanguageAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/NeutralResourcesLanguageAttribute.cs @@ -6,19 +6,14 @@ namespace System.Resources [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)] public sealed class NeutralResourcesLanguageAttribute : Attribute { - public NeutralResourcesLanguageAttribute(string cultureName) + public NeutralResourcesLanguageAttribute(string cultureName!!) { - if (cultureName == null) - throw new ArgumentNullException(nameof(cultureName)); - CultureName = cultureName; Location = UltimateResourceFallbackLocation.MainAssembly; } - public NeutralResourcesLanguageAttribute(string cultureName, UltimateResourceFallbackLocation location) + public NeutralResourcesLanguageAttribute(string cultureName!!, UltimateResourceFallbackLocation location) { - if (cultureName == null) - throw new ArgumentNullException(nameof(cultureName)); if (!Enum.IsDefined(typeof(UltimateResourceFallbackLocation), location)) throw new ArgumentException(SR.Format(SR.Arg_InvalidNeutralResourcesLanguage_FallbackLoc, location)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceManager.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceManager.cs index e928bcd21ea599..2c7ca1dddebdbc 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceManager.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceManager.cs @@ -168,15 +168,10 @@ protected ResourceManager() // // Note: System.Windows.Forms uses this method at design time. // - private ResourceManager(string baseName, string resourceDir, + private ResourceManager(string baseName!!, string resourceDir!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type? userResourceSet) { - if (null == baseName) - throw new ArgumentNullException(nameof(baseName)); - if (null == resourceDir) - throw new ArgumentNullException(nameof(resourceDir)); - BaseNameField = baseName; _moduleDir = resourceDir; @@ -188,12 +183,8 @@ private ResourceManager(string baseName, string resourceDir, _resourceGroveler = new FileBasedResourceGroveler(mediator); } - public ResourceManager(string baseName, Assembly assembly) + public ResourceManager(string baseName!!, Assembly assembly!!) { - if (null == baseName) - throw new ArgumentNullException(nameof(baseName)); - if (null == assembly) - throw new ArgumentNullException(nameof(assembly)); if (assembly is not RuntimeAssembly) throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); @@ -203,14 +194,10 @@ public ResourceManager(string baseName, Assembly assembly) CommonAssemblyInit(); } - public ResourceManager(string baseName, Assembly assembly, + public ResourceManager(string baseName!!, Assembly assembly!!, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type? usingResourceSet) { - if (null == baseName) - throw new ArgumentNullException(nameof(baseName)); - if (null == assembly) - throw new ArgumentNullException(nameof(assembly)); if (assembly is not RuntimeAssembly) throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); @@ -224,10 +211,8 @@ public ResourceManager(string baseName, Assembly assembly, CommonAssemblyInit(); } - public ResourceManager(Type resourceSource) + public ResourceManager(Type resourceSource!!) { - if (null == resourceSource) - throw new ArgumentNullException(nameof(resourceSource)); if (resourceSource is not RuntimeType) throw new ArgumentException(SR.Argument_MustBeRuntimeType); @@ -392,11 +377,8 @@ protected virtual string GetResourceFileName(CultureInfo culture) // if it hasn't yet been loaded and if parent CultureInfos should be // loaded as well for resource inheritance. // - public virtual ResourceSet? GetResourceSet(CultureInfo culture, bool createIfNotExists, bool tryParents) + public virtual ResourceSet? GetResourceSet(CultureInfo culture!!, bool createIfNotExists, bool tryParents) { - if (null == culture) - throw new ArgumentNullException(nameof(culture)); - Dictionary? localResourceSets = _resourceSets; ResourceSet? rs; if (localResourceSets != null) @@ -527,14 +509,8 @@ private static void AddResourceSet(Dictionary localResource } } - protected static Version? GetSatelliteContractVersion(Assembly a) + protected static Version? GetSatelliteContractVersion(Assembly a!!) { - // Ensure that the assembly reference is not null - if (a == null) - { - throw new ArgumentNullException(nameof(a), SR.ArgumentNull_Assembly); - } - string? v = a.GetCustomAttribute()?.Version; if (v == null) { @@ -599,11 +575,8 @@ internal static bool IsDefaultType(string asmTypeName, // specified CultureInfo, and if not found, all parent CultureInfos. // Returns null if the resource wasn't found. // - public virtual string? GetString(string name, CultureInfo? culture) + public virtual string? GetString(string name!!, CultureInfo? culture) { - if (null == name) - throw new ArgumentNullException(nameof(name)); - culture ??= CultureInfo.CurrentUICulture; ResourceSet? last = GetFirstResourceSet(culture); @@ -666,11 +639,8 @@ internal static bool IsDefaultType(string asmTypeName, return GetObject(name, culture, true); } - private object? GetObject(string name, CultureInfo? culture, bool wrapUnmanagedMemStream) + private object? GetObject(string name!!, CultureInfo? culture, bool wrapUnmanagedMemStream) { - if (null == name) - throw new ArgumentNullException(nameof(name)); - if (null == culture) { culture = CultureInfo.CurrentUICulture; @@ -747,12 +717,8 @@ internal sealed class ResourceManagerMediator { private readonly ResourceManager _rm; - internal ResourceManagerMediator(ResourceManager rm) + internal ResourceManagerMediator(ResourceManager rm!!) { - if (rm == null) - { - throw new ArgumentNullException(nameof(rm)); - } _rm = rm; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.Core.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.Core.cs index 2153d23ee97c66..d87c3d1d122b33 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.Core.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.Core.cs @@ -126,10 +126,8 @@ private static bool ValidateReaderType(string readerType) return ResourceManager.IsDefaultType(readerType, ResourceManager.ResReaderTypeName); } - public void GetResourceData(string resourceName, out string resourceType, out byte[] resourceData) + public void GetResourceData(string resourceName!!, out string resourceType, out byte[] resourceData) { - if (resourceName == null) - throw new ArgumentNullException(nameof(resourceName)); if (_resCache == null) throw new InvalidOperationException(SR.ResourceReaderIsClosed); diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.cs index 9aa2c73bb74719..31fb6574b06445 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceReader.cs @@ -110,13 +110,11 @@ public sealed partial class public #if RESOURCES_EXTENSIONS - DeserializingResourceReader(Stream stream) + DeserializingResourceReader(Stream stream!!) #else - ResourceReader(Stream stream) + ResourceReader(Stream stream!!) #endif { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); if (!stream.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable); diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceSet.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceSet.cs index 4cc4f920f8aed2..020d270b9fbb08 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceSet.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/ResourceSet.cs @@ -58,10 +58,10 @@ public ResourceSet(Stream stream) ReadResources(); } - public ResourceSet(IResourceReader reader) + public ResourceSet(IResourceReader reader!!) : this() { - Reader = reader ?? throw new ArgumentNullException(nameof(reader)); + Reader = reader; ReadResources(); } @@ -198,11 +198,8 @@ protected virtual void ReadResources() // to help with some WinRes lifetime issues. } - private object? GetObjectInternal(string name) + private object? GetObjectInternal(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - Dictionary? copyOfTable = _table; // Avoid a race with Dispose if (copyOfTable == null) diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/RuntimeResourceSet.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/RuntimeResourceSet.cs index 90c55d9f304067..dd9e6e10e91600 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/RuntimeResourceSet.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/RuntimeResourceSet.cs @@ -188,14 +188,11 @@ internal RuntimeResourceSet(Stream stream, bool permitDeserialization = false) : _defaultReader = new ResourceReader(stream, _resCache, permitDeserialization); } #else - internal RuntimeResourceSet(IResourceReader reader) : + internal RuntimeResourceSet(IResourceReader reader!!) : // explicitly do not call IResourceReader constructor since it caches all resources // the purpose of RuntimeResourceSet is to lazily load and cache. base() { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); - _defaultReader = reader as DeserializingResourceReader ?? throw new ArgumentException(SR.Format(SR.NotSupported_WrongResourceReader_Type, reader.GetType()), nameof(reader)); _resCache = new Dictionary(FastResourceComparer.Default); @@ -263,11 +260,8 @@ private IDictionaryEnumerator GetEnumeratorHelper() return GetObject(key, ignoreCase, false); } - private object? GetObject(string key, bool ignoreCase, bool isString) + private object? GetObject(string key!!, bool ignoreCase, bool isString) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - ResourceReader? reader = _defaultReader; Dictionary? cache = _resCache; if (reader is null || cache is null) diff --git a/src/libraries/System.Private.CoreLib/src/System/Resources/SatelliteContractVersionAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Resources/SatelliteContractVersionAttribute.cs index 2691b72467f68e..d1b073405abaf7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Resources/SatelliteContractVersionAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Resources/SatelliteContractVersionAttribute.cs @@ -18,10 +18,8 @@ namespace System.Resources [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)] public sealed class SatelliteContractVersionAttribute : Attribute { - public SatelliteContractVersionAttribute(string version) + public SatelliteContractVersionAttribute(string version!!) { - if (version == null) - throw new ArgumentNullException(nameof(version)); Version = version; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs index 88b8187f3dfd22..2dc7c898b9ecb6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs @@ -178,15 +178,9 @@ public void Clear() /// This rule permits the table to invoke createValueCallback outside the internal table lock /// to prevent deadlocks. /// - public TValue GetValue(TKey key, CreateValueCallback createValueCallback) + public TValue GetValue(TKey key, CreateValueCallback createValueCallback!!) { // key is validated by TryGetValue - - if (createValueCallback is null) - { - throw new ArgumentNullException(nameof(createValueCallback)); - } - return TryGetValue(key, out TValue? existingValue) ? existingValue : GetValueLocked(key, createValueCallback); diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/FormattableStringFactory.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/FormattableStringFactory.cs index aed8034bc55f72..7083359bb0ed77 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/FormattableStringFactory.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/FormattableStringFactory.cs @@ -21,20 +21,8 @@ public static class FormattableStringFactory /// Create a from a composite format string and object /// array containing zero or more objects to format. /// - public static FormattableString Create(string format, params object?[] arguments) - { - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - - if (arguments == null) - { - throw new ArgumentNullException(nameof(arguments)); - } - - return new ConcreteFormattableString(format, arguments); - } + public static FormattableString Create(string format!!, params object?[] arguments!!) => + new ConcreteFormattableString(format, arguments); private sealed class ConcreteFormattableString : FormattableString { diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.cs index 498055ad6a1c51..68e96db5cc268e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.cs @@ -66,13 +66,8 @@ ref Unsafe.Add(ref MemoryMarshal.GetArrayDataReference(array), offset), } [Obsolete(Obsoletions.ConstrainedExecutionRegionMessage, DiagnosticId = Obsoletions.ConstrainedExecutionRegionDiagId, UrlFormat = Obsoletions.SharedUrlFormat)] - public static void ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, object? userData) + public static void ExecuteCodeWithGuaranteedCleanup(TryCode code!!, CleanupCode backoutCode!!, object? userData) { - if (code == null) - throw new ArgumentNullException(nameof(code)); - if (backoutCode == null) - throw new ArgumentNullException(nameof(backoutCode)); - bool exceptionThrown = true; try diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TaskAwaiter.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TaskAwaiter.cs index 913cf3ae13abf5..7f091be304f082 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TaskAwaiter.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TaskAwaiter.cs @@ -198,10 +198,8 @@ private static void ThrowForNonSuccess(Task task) /// The argument is null (Nothing in Visual Basic). /// The awaiter was not properly initialized. /// This method is intended for compiler use rather than use directly in code. - internal static void OnCompletedInternal(Task task, Action continuation, bool continueOnCapturedContext, bool flowExecutionContext) + internal static void OnCompletedInternal(Task task, Action continuation!!, bool continueOnCapturedContext, bool flowExecutionContext) { - if (continuation == null) throw new ArgumentNullException(nameof(continuation)); - // If TaskWait* ETW events are enabled, trace a beginning event for this await // and set up an ending event to be traced when the asynchronous await completes. if (TplEventSource.Log.IsEnabled() || Task.s_asyncDebuggingEnabled) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TupleElementNamesAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TupleElementNamesAttribute.cs index 2ca88637df2f6c..a190b75504fef7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TupleElementNamesAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/TupleElementNamesAttribute.cs @@ -36,13 +36,8 @@ public sealed class TupleElementNamesAttribute : Attribute /// transformNames value of { "name1", "name2", null, null, /// null }. /// - public TupleElementNamesAttribute(string?[] transformNames) + public TupleElementNamesAttribute(string?[] transformNames!!) { - if (transformNames == null) - { - throw new ArgumentNullException(nameof(transformNames)); - } - _transformNames = transformNames; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/YieldAwaitable.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/YieldAwaitable.cs index 3e17c5b74d973c..03b0be93b195d3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/YieldAwaitable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/YieldAwaitable.cs @@ -69,15 +69,13 @@ public void UnsafeOnCompleted(Action continuation) /// The action to invoke asynchronously. /// true to flow ExecutionContext; false if flowing is not required. /// The argument is null (Nothing in Visual Basic). - private static void QueueContinuation(Action continuation, bool flowContext) + private static void QueueContinuation(Action continuation!!, bool flowContext) { - // Validate arguments - if (continuation == null) throw new ArgumentNullException(nameof(continuation)); - if (TplEventSource.Log.IsEnabled()) { continuation = OutputCorrelationEtwEvent(continuation); } + // Get the current SynchronizationContext, and if there is one, // post the continuation to it. However, treat the base type // as if there wasn't a SynchronizationContext, since that's what it diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/ExceptionServices/ExceptionDispatchInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/ExceptionServices/ExceptionDispatchInfo.cs index 1279da2d974fa7..cc0888dc96b456 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/ExceptionServices/ExceptionDispatchInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/ExceptionServices/ExceptionDispatchInfo.cs @@ -27,15 +27,8 @@ private ExceptionDispatchInfo(Exception exception) // This static method is used to create an instance of ExceptionDispatchInfo for // the specified exception object and save all the required details that maybe // needed to be propagated when the exception is "rethrown" on a different thread. - public static ExceptionDispatchInfo Capture(Exception source) - { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - - return new ExceptionDispatchInfo(source); - } + public static ExceptionDispatchInfo Capture(Exception source!!) => + new ExceptionDispatchInfo(source); // Return the exception object represented by this ExceptionDispatchInfo instance public Exception SourceException => _exception; @@ -68,13 +61,8 @@ public void Throw() /// The argument was previously thrown or previously had a stack trace stored into it. /// The exception instance. [StackTraceHidden] - public static Exception SetCurrentStackTrace(Exception source) + public static Exception SetCurrentStackTrace(Exception source!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - source.SetCurrentStackTrace(); return source; @@ -98,17 +86,8 @@ public static Exception SetCurrentStackTrace(Exception source) /// The caller is responsible for canonicalizing line endings if required. /// can be used to canonicalize line endings. /// - public static Exception SetRemoteStackTrace(Exception source, string stackTrace) + public static Exception SetRemoteStackTrace(Exception source!!, string stackTrace!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (stackTrace is null) - { - throw new ArgumentNullException(nameof(stackTrace)); - } - source.SetRemoteStackTrace(stackTrace); return source; diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.NoCom.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.NoCom.cs index 9229f26f57a484..5a28db6ff101d2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.NoCom.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.NoCom.cs @@ -182,24 +182,9 @@ public static object GetUniqueObjectForIUnknown(IntPtr unknown) throw new PlatformNotSupportedException(SR.PlatformNotSupported_ComInterop); } - public static bool IsComObject(object o) - { - if (o is null) - { - throw new ArgumentNullException(nameof(o)); - } - - return false; - } + public static bool IsComObject(object o!!) => false; - public static bool IsTypeVisibleFromCom(Type t) - { - if (t is null) - { - throw new ArgumentNullException(nameof(t)); - } - return false; - } + public static bool IsTypeVisibleFromCom(Type t!!) => false; [SupportedOSPlatform("windows")] public static int ReleaseComObject(object o) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Unix.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Unix.cs index 49ef8223c370f9..b613fc8cd7ebbb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Unix.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Unix.cs @@ -160,11 +160,8 @@ public static unsafe void FreeBSTR(IntPtr ptr) } } - internal static Type? GetTypeFromProgID(string progID, string? server, bool throwOnError) + internal static Type? GetTypeFromProgID(string progID!!, string? server, bool throwOnError) { - if (progID == null) - throw new ArgumentNullException(nameof(progID)); - if (throwOnError) throw new PlatformNotSupportedException(SR.PlatformNotSupported_ComInterop); diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Windows.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Windows.cs index b7f4c11f7ccb42..fe9d6f8c59688f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Windows.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.Windows.cs @@ -218,11 +218,8 @@ public static void FreeBSTR(IntPtr ptr) } } - internal static Type? GetTypeFromProgID(string progID, string? server, bool throwOnError) + internal static Type? GetTypeFromProgID(string progID!!, string? server, bool throwOnError) { - if (progID == null) - throw new ArgumentNullException(nameof(progID)); - int hr = Interop.Ole32.CLSIDFromProgID(progID, out Guid clsid); if (hr < 0) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.cs index b2e9302a8dd78f..20a04f0e161ca0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.cs @@ -43,10 +43,7 @@ public static partial class Marshal public static unsafe string PtrToStringAnsi(IntPtr ptr, int len) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } + ArgumentNullException.ThrowIfNull(ptr); if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len), len, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -67,10 +64,7 @@ public static unsafe string PtrToStringAnsi(IntPtr ptr, int len) public static unsafe string PtrToStringUni(IntPtr ptr, int len) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } + ArgumentNullException.ThrowIfNull(ptr); if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len), len, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -92,10 +86,7 @@ public static unsafe string PtrToStringUni(IntPtr ptr, int len) public static unsafe string PtrToStringUTF8(IntPtr ptr, int byteLen) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } + ArgumentNullException.ThrowIfNull(ptr); if (byteLen < 0) { throw new ArgumentOutOfRangeException(nameof(byteLen), byteLen, SR.ArgumentOutOfRange_NeedNonNegNum); @@ -105,33 +96,19 @@ public static unsafe string PtrToStringUTF8(IntPtr ptr, int byteLen) } [RequiresDynamicCode("Marshalling code for the object might not be available. Use the SizeOf overload instead.")] - public static int SizeOf(object structure) + public static int SizeOf(object structure!!) { - if (structure is null) - { - throw new ArgumentNullException(nameof(structure)); - } - return SizeOfHelper(structure.GetType(), throwIfNotMarshalable: true); } - public static int SizeOf(T structure) + public static int SizeOf(T structure!!) { - if (structure is null) - { - throw new ArgumentNullException(nameof(structure)); - } - return SizeOfHelper(structure.GetType(), throwIfNotMarshalable: true); } [RequiresDynamicCode("Marshalling code for the object might not be available. Use the SizeOf overload instead.")] - public static int SizeOf(Type t) + public static int SizeOf(Type t!!) { - if (t is null) - { - throw new ArgumentNullException(nameof(t)); - } if (t is not RuntimeType) { throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(t)); @@ -157,8 +134,7 @@ public static int SizeOf() public static unsafe int QueryInterface(IntPtr pUnk, ref Guid iid, out IntPtr ppv) { - if (pUnk == IntPtr.Zero) - throw new ArgumentNullException(nameof(pUnk)); + ArgumentNullException.ThrowIfNull(pUnk); fixed (Guid* pIID = &iid) fixed (IntPtr* p = &ppv) @@ -169,16 +145,14 @@ public static unsafe int QueryInterface(IntPtr pUnk, ref Guid iid, out IntPtr pp public static unsafe int AddRef(IntPtr pUnk) { - if (pUnk == IntPtr.Zero) - throw new ArgumentNullException(nameof(pUnk)); + ArgumentNullException.ThrowIfNull(pUnk); return ((delegate* unmanaged)(*(*(void***)pUnk + 1 /* IUnknown.AddRef slot */)))(pUnk); } public static unsafe int Release(IntPtr pUnk) { - if (pUnk == IntPtr.Zero) - throw new ArgumentNullException(nameof(pUnk)); + ArgumentNullException.ThrowIfNull(pUnk); return ((delegate* unmanaged)(*(*(void***)pUnk + 2 /* IUnknown.Release slot */)))(pUnk); } @@ -188,20 +162,14 @@ public static unsafe int Release(IntPtr pUnk) /// It must be used with EXTREME CAUTION since passing in invalid index or /// an array that is not pinned can cause unexpected results. /// - public static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index) + public static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(Array arr!!, int index) { - if (arr is null) - throw new ArgumentNullException(nameof(arr)); - void* pRawData = Unsafe.AsPointer(ref MemoryMarshal.GetArrayDataReference(arr)); return (IntPtr)((byte*)pRawData + (uint)index * (nuint)arr.GetElementSize()); } - public static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(T[] arr, int index) + public static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(T[] arr!!, int index) { - if (arr is null) - throw new ArgumentNullException(nameof(arr)); - void* pRawData = Unsafe.AsPointer(ref MemoryMarshal.GetArrayDataReference(arr)); return (IntPtr)((byte*)pRawData + (uint)index * (nuint)Unsafe.SizeOf()); } @@ -248,15 +216,11 @@ public static void Copy(IntPtr[] source, int startIndex, IntPtr destination, int CopyToNative(source, startIndex, destination, length); } - private static unsafe void CopyToNative(T[] source, int startIndex, IntPtr destination, int length) + private static unsafe void CopyToNative(T[] source!!, int startIndex, IntPtr destination, int length) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - if (destination == IntPtr.Zero) - throw new ArgumentNullException(nameof(destination)); + ArgumentNullException.ThrowIfNull(destination); // The rest of the argument validation is done by CopyTo - new Span(source, startIndex, length).CopyTo(new Span((void*)destination, length)); } @@ -300,12 +264,9 @@ public static void Copy(IntPtr source, IntPtr[] destination, int startIndex, int CopyToManaged(source, destination, startIndex, length); } - private static unsafe void CopyToManaged(IntPtr source, T[] destination, int startIndex, int length) + private static unsafe void CopyToManaged(IntPtr source, T[] destination!!, int startIndex, int length) { - if (source == IntPtr.Zero) - throw new ArgumentNullException(nameof(source)); - if (destination is null) - throw new ArgumentNullException(nameof(destination)); + ArgumentNullException.ThrowIfNull(source); if (startIndex < 0) throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_StartIndex); if (length < 0) @@ -541,25 +502,15 @@ public static unsafe void WriteInt64(IntPtr ptr, int ofs, long val) public static void WriteInt64(IntPtr ptr, long val) => WriteInt64(ptr, 0, val); - public static void Prelink(MethodInfo m) + public static void Prelink(MethodInfo m!!) { - if (m is null) - { - throw new ArgumentNullException(nameof(m)); - } - PrelinkCore(m); } [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", Justification = "This only needs to prelink methods that are actually used")] - public static void PrelinkAll(Type c) + public static void PrelinkAll(Type c!!) { - if (c is null) - { - throw new ArgumentNullException(nameof(c)); - } - MethodInfo[] mi = c.GetMethods(); for (int i = 0; i < mi.Length; i++) @@ -582,17 +533,13 @@ public static void StructureToPtr([DisallowNull] T structure, IntPtr ptr, boo [RequiresDynamicCode("Marshalling code for the object might not be available")] public static object? PtrToStructure(IntPtr ptr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - Type structureType) + Type structureType!!) { if (ptr == IntPtr.Zero) { return null; } - if (structureType is null) - { - throw new ArgumentNullException(nameof(structureType)); - } if (structureType.IsGenericType) { throw new ArgumentException(SR.Argument_NeedNonGenericType, nameof(structureType)); @@ -646,14 +593,11 @@ public static void PtrToStructure(IntPtr ptr, [DisallowNull] T structure) Justification = "AOT compilers can see the T.")] public static void DestroyStructure(IntPtr ptr) => DestroyStructure(ptr, typeof(T)); -// CoreCLR has a different implementation for Windows only + // CoreCLR has a different implementation for Windows only #if !CORECLR || !TARGET_WINDOWS public static IntPtr GetHINSTANCE(Module m) { - if (m is null) - { - throw new ArgumentNullException(nameof(m)); - } + ArgumentNullException.ThrowIfNull(m); return (IntPtr)(-1); } @@ -1118,12 +1062,8 @@ public static unsafe IntPtr StringToCoTaskMemAnsi(string? s) /// metadata then it is returned otherwise a stable guid is generated based /// on the fully qualified name of the type. /// - public static Guid GenerateGuidForType(Type type) + public static Guid GenerateGuidForType(Type type!!) { - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } if (type is not RuntimeType) { throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(type)); @@ -1137,12 +1077,8 @@ public static Guid GenerateGuidForType(Type type) /// a PROGID in the metadata then it is returned otherwise a stable PROGID /// is generated based on the fully qualified name of the type. /// - public static string? GenerateProgIdForType(Type type) + public static string? GenerateProgIdForType(Type type!!) { - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } if (type.IsImport) { throw new ArgumentException(SR.Argument_TypeMustNotBeComImport, nameof(type)); @@ -1163,16 +1099,9 @@ public static Guid GenerateGuidForType(Type type) } [RequiresDynamicCode("Marshalling code for the delegate might not be available. Use the GetDelegateForFunctionPointer overload instead.")] - public static Delegate GetDelegateForFunctionPointer(IntPtr ptr, Type t) + public static Delegate GetDelegateForFunctionPointer(IntPtr ptr, Type t!!) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } - if (t is null) - { - throw new ArgumentNullException(nameof(t)); - } + ArgumentNullException.ThrowIfNull(ptr); if (t is not RuntimeType) { throw new ArgumentException(SR.Argument_MustBeRuntimeType, nameof(t)); @@ -1195,10 +1124,7 @@ public static Delegate GetDelegateForFunctionPointer(IntPtr ptr, Type t) public static TDelegate GetDelegateForFunctionPointer(IntPtr ptr) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } + ArgumentNullException.ThrowIfNull(ptr); Type t = typeof(TDelegate); if (t.IsGenericType) @@ -1218,13 +1144,8 @@ public static TDelegate GetDelegateForFunctionPointer(IntPtr ptr) } [RequiresDynamicCode("Marshalling code for the delegate might not be available. Use the GetFunctionPointerForDelegate overload instead.")] - public static IntPtr GetFunctionPointerForDelegate(Delegate d) + public static IntPtr GetFunctionPointerForDelegate(Delegate d!!) { - if (d is null) - { - throw new ArgumentNullException(nameof(d)); - } - return GetFunctionPointerForDelegateInternal(d); } @@ -1317,10 +1238,7 @@ public static unsafe IntPtr StringToBSTR(string? s) public static string PtrToStringBSTR(IntPtr ptr) { - if (ptr == IntPtr.Zero) - { - throw new ArgumentNullException(nameof(ptr)); - } + ArgumentNullException.ThrowIfNull(ptr); return PtrToStringUni(ptr, (int)(SysStringByteLen(ptr) / sizeof(char))); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.cs index 681ad442f94ae4..0cd98bb914629d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/NativeLibrary.cs @@ -36,11 +36,8 @@ public static partial class NativeLibrary /// If libraryPath is null /// If the library can't be found. /// If the library is not valid. - public static IntPtr Load(string libraryPath) + public static IntPtr Load(string libraryPath!!) { - if (libraryPath == null) - throw new ArgumentNullException(nameof(libraryPath)); - return LoadFromPath(libraryPath, throwOnError: true); } @@ -51,11 +48,8 @@ public static IntPtr Load(string libraryPath) /// The out-parameter for the loaded native library handle /// True on successful load, false otherwise /// If libraryPath is null - public static bool TryLoad(string libraryPath, out IntPtr handle) + public static bool TryLoad(string libraryPath!!, out IntPtr handle) { - if (libraryPath == null) - throw new ArgumentNullException(nameof(libraryPath)); - handle = LoadFromPath(libraryPath, throwOnError: false); return handle != IntPtr.Zero; } @@ -82,12 +76,8 @@ public static bool TryLoad(string libraryPath, out IntPtr handle) /// If assembly is not a RuntimeAssembly /// If the library can't be found. /// If the library is not valid. - public static IntPtr Load(string libraryName, Assembly assembly, DllImportSearchPath? searchPath) + public static IntPtr Load(string libraryName!!, Assembly assembly!!, DllImportSearchPath? searchPath) { - if (libraryName == null) - throw new ArgumentNullException(nameof(libraryName)); - if (assembly == null) - throw new ArgumentNullException(nameof(assembly)); if (assembly is not RuntimeAssembly) throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); @@ -118,12 +108,8 @@ public static IntPtr Load(string libraryName, Assembly assembly, DllImportSearch /// True on successful load, false otherwise /// If libraryPath or assembly is null /// If assembly is not a RuntimeAssembly - public static bool TryLoad(string libraryName, Assembly assembly, DllImportSearchPath? searchPath, out IntPtr handle) + public static bool TryLoad(string libraryName!!, Assembly assembly!!, DllImportSearchPath? searchPath, out IntPtr handle) { - if (libraryName == null) - throw new ArgumentNullException(nameof(libraryName)); - if (assembly == null) - throw new ArgumentNullException(nameof(assembly)); if (assembly is not RuntimeAssembly) throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); @@ -156,12 +142,9 @@ public static void Free(IntPtr handle) /// The address of the symbol /// If handle or name is null /// If the symbol is not found - public static IntPtr GetExport(IntPtr handle, string name) + public static IntPtr GetExport(IntPtr handle, string name!!) { - if (handle == IntPtr.Zero) - throw new ArgumentNullException(nameof(handle)); - if (name == null) - throw new ArgumentNullException(nameof(name)); + ArgumentNullException.ThrowIfNull(handle); return GetSymbol(handle, name, throwOnError: true); } @@ -174,13 +157,9 @@ public static IntPtr GetExport(IntPtr handle, string name) /// The out-parameter for the symbol address, if it exists /// True on success, false otherwise /// If handle or name is null - public static bool TryGetExport(IntPtr handle, string name, out IntPtr address) + public static bool TryGetExport(IntPtr handle, string name!!, out IntPtr address) { - if (handle == IntPtr.Zero) - throw new ArgumentNullException(nameof(handle)); - if (name == null) - throw new ArgumentNullException(nameof(name)); - + ArgumentNullException.ThrowIfNull(handle); address = GetSymbol(handle, name, throwOnError: false); return address != IntPtr.Zero; } @@ -205,12 +184,8 @@ public static bool TryGetExport(IntPtr handle, string name, out IntPtr address) /// The resolver callback to register /// If assembly or resolver is null /// If a resolver is already set for this assembly - public static void SetDllImportResolver(Assembly assembly, DllImportResolver resolver) + public static void SetDllImportResolver(Assembly assembly!!, DllImportResolver resolver!!) { - if (assembly == null) - throw new ArgumentNullException(nameof(assembly)); - if (resolver == null) - throw new ArgumentNullException(nameof(resolver)); if (assembly is not RuntimeAssembly) throw new ArgumentException(SR.Argument_MustBeRuntimeAssembly); diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCMarshal.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCMarshal.cs index 3f3d55e355742f..cfdac60dff53ee 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCMarshal.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCMarshal.cs @@ -58,20 +58,11 @@ public static partial class ObjectiveCMarshal /// referenced. Any other value has undefined behavior. /// public static unsafe void Initialize( - delegate* unmanaged beginEndCallback, - delegate* unmanaged isReferencedCallback, - delegate* unmanaged trackedObjectEnteredFinalization, - UnhandledExceptionPropagationHandler unhandledExceptionPropagationHandler) + delegate* unmanaged beginEndCallback!!, + delegate* unmanaged isReferencedCallback!!, + delegate* unmanaged trackedObjectEnteredFinalization!!, + UnhandledExceptionPropagationHandler unhandledExceptionPropagationHandler!!) { - if (beginEndCallback is null) - throw new ArgumentNullException(nameof(beginEndCallback)); - if (isReferencedCallback is null) - throw new ArgumentNullException(nameof(isReferencedCallback)); - if (trackedObjectEnteredFinalization is null) - throw new ArgumentNullException(nameof(trackedObjectEnteredFinalization)); - if (unhandledExceptionPropagationHandler is null) - throw new ArgumentNullException(nameof(unhandledExceptionPropagationHandler)); - if (s_unhandledExceptionPropagationHandler != null || !TryInitializeReferenceTracker(beginEndCallback, isReferencedCallback, trackedObjectEnteredFinalization)) { @@ -107,12 +98,9 @@ public static unsafe void Initialize( /// The caller is responsible for freeing the returned . /// public static GCHandle CreateReferenceTrackingHandle( - object obj, + object obj!!, out Span taggedMemory) { - if (obj is null) - throw new ArgumentNullException(nameof(obj)); - IntPtr refCountHandle = CreateReferenceTrackingHandleInternal( ObjectHandleOnStack.Create(ref obj), out int memInSizeT, @@ -164,8 +152,7 @@ public enum MessageSendFunction /// public static void SetMessageSendCallback(MessageSendFunction msgSendFunction, IntPtr func) { - if (func == IntPtr.Zero) - throw new ArgumentNullException(nameof(func)); + ArgumentNullException.ThrowIfNull(func); if (msgSendFunction < MessageSendFunction.MsgSend || msgSendFunction > MessageSendFunction.MsgSendSuperStret) throw new ArgumentOutOfRangeException(nameof(msgSendFunction)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCTrackedTypeAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCTrackedTypeAttribute.cs index 48ace516677c7d..20c51d6f189cf9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCTrackedTypeAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveC/ObjectiveCTrackedTypeAttribute.cs @@ -17,4 +17,4 @@ public sealed class ObjectiveCTrackedTypeAttribute : Attribute /// public ObjectiveCTrackedTypeAttribute() { } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/PosixSignalRegistration.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/PosixSignalRegistration.cs index c6c0c29dea8b4c..178d81b5cc7e31 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/PosixSignalRegistration.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/PosixSignalRegistration.cs @@ -34,15 +34,8 @@ public sealed partial class PosixSignalRegistration : IDisposable [UnsupportedOSPlatform("browser")] [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] - public static PosixSignalRegistration Create(PosixSignal signal, Action handler) - { - if (handler is null) - { - throw new ArgumentNullException(nameof(handler)); - } - - return Register(signal, handler); - } + public static PosixSignalRegistration Create(PosixSignal signal, Action handler!!) => + Register(signal, handler); /// Initializes the registration to wrap the specified token. private PosixSignalRegistration(Token token) => _token = token; diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/SafeBuffer.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/SafeBuffer.cs index 7fe55f25b34d66..bad9b6d9d0b8c4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/SafeBuffer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/SafeBuffer.cs @@ -213,11 +213,9 @@ public T Read(ulong byteOffset) where T : struct /// The location in the output array to begin writing to. /// The number of value types to read from the input array and to write to the output array. [CLSCompliant(false)] - public void ReadArray(ulong byteOffset, T[] array, int index, int count) + public void ReadArray(ulong byteOffset, T[] array!!, int index, int count) where T : struct { - if (array == null) - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Buffer); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) @@ -302,11 +300,9 @@ public void Write(ulong byteOffset, T value) where T : struct /// The offset in the array to start reading from. /// The number of value types to write. [CLSCompliant(false)] - public void WriteArray(ulong byteOffset, T[] array, int index, int count) + public void WriteArray(ulong byteOffset, T[] array!!, int index, int count) where T : struct { - if (array == null) - throw new ArgumentNullException(nameof(array), SR.ArgumentNull_Buffer); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs index cdbc064cf11456..969312264b5b31 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/UnmanagedCallConvAttribute.cs @@ -22,4 +22,4 @@ public UnmanagedCallConvAttribute() /// public Type[]? CallConvs; } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs index 2fcc2efcfc9cad..d53236e7116da8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.PlatformNotSupported.cs @@ -1567,6 +1567,236 @@ internal Arm64() { } /// public static unsafe Vector128 LoadAndReplicateToVector128(ulong* address) { throw new PlatformNotSupportedException(); } + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(byte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(double* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(short* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(long* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(sbyte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(ushort* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(ulong* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(byte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(double* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(short* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(long* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(sbyte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(ushort* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(ulong* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(byte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(double* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(short* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(long* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(sbyte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(ushort* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(ulong* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(byte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(double* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(short* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(int* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(long* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(sbyte* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(float* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(ushort* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(uint* address) { throw new PlatformNotSupportedException(); } + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(ulong* address) { throw new PlatformNotSupportedException(); } + /// /// float64x2_t vmaxq_f64 (float64x2_t a, float64x2_t b) /// A64: FMAX Vd.2D, Vn.2D, Vm.2D diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs index a8db248ef75c22..11177c4fd59ee5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Arm/AdvSimd.cs @@ -1565,6 +1565,236 @@ internal Arm64() { } /// public static unsafe Vector128 LoadAndReplicateToVector128(ulong* address) => LoadAndReplicateToVector128(address); + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(byte* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(double* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(short* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(int* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(long* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(sbyte* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(float* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(ushort* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(uint* address) => LoadPairVector64(address); + + /// + /// A64: LDP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64(ulong* address) => LoadPairVector64(address); + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(int* address) => LoadPairScalarVector64(address); + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(float* address) => LoadPairScalarVector64(address); + + /// + /// A64: LDP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64(uint* address) => LoadPairScalarVector64(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(byte* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(double* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(short* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(int* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(long* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(sbyte* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(float* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(ushort* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(uint* address) => LoadPairVector128(address); + + /// + /// A64: LDP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128(ulong* address) => LoadPairVector128(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(byte* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(double* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(short* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(int* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(long* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(sbyte* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(float* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(ushort* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(uint* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP Dt1, Dt2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairVector64NonTemporal(ulong* address) => LoadPairVector64NonTemporal(address); + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(int* address) => LoadPairScalarVector64NonTemporal(address); + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(float* address) => LoadPairScalarVector64NonTemporal(address); + + /// + /// A64: LDNP St1, St2, [Xn] + /// + public static unsafe (Vector64 Value1, Vector64 Value2) LoadPairScalarVector64NonTemporal(uint* address) => LoadPairScalarVector64NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(byte* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(double* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(short* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(int* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(long* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(sbyte* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(float* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(ushort* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(uint* address) => LoadPairVector128NonTemporal(address); + + /// + /// A64: LDNP Qt1, Qt2, [Xn] + /// + public static unsafe (Vector128 Value1, Vector128 Value2) LoadPairVector128NonTemporal(ulong* address) => LoadPairVector128NonTemporal(address); + /// /// float64x2_t vmaxq_f64 (float64x2_t a, float64x2_t b) /// A64: FMAX Vd.2D, Vn.2D, Vm.2D diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs index 1f9b95fb73299c..4483e3bc0c8977 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs @@ -984,7 +984,7 @@ static Vector128 SoftwareFallback(sbyte value) [Intrinsic] public static unsafe Vector128 Create(float value) { - if (Sse.IsSupported || AdvSimd.IsSupported) + if (Sse2.IsSupported || AdvSimd.IsSupported) { return Create(value); } @@ -1391,7 +1391,7 @@ static Vector128 SoftwareFallback(sbyte e0, sbyte e1, sbyte e2, sbyte e3, [Intrinsic] public static unsafe Vector128 Create(float e0, float e1, float e2, float e3) { - if (Sse.IsSupported || AdvSimd.IsSupported) + if (Sse2.IsSupported || AdvSimd.IsSupported) { return Create(e0, e1, e2, e3); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/JitInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/JitInfo.cs index 9176bdd84eb5a2..0f28761e718315 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/JitInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/JitInfo.cs @@ -20,4 +20,4 @@ public static TimeSpan GetCompilationTime(bool currentThread = false) return TimeSpan.FromTicks(GetCompilationTimeInTicks(currentThread)); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyDependencyResolver.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyDependencyResolver.cs index 68ed52102dc1c1..b15601da4214f3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyDependencyResolver.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyDependencyResolver.cs @@ -31,13 +31,8 @@ public sealed class AssemblyDependencyResolver private readonly string[] _resourceSearchPaths; private readonly string[] _assemblyDirectorySearchPaths; - public AssemblyDependencyResolver(string componentAssemblyPath) + public AssemblyDependencyResolver(string componentAssemblyPath!!) { - if (componentAssemblyPath == null) - { - throw new ArgumentNullException(nameof(componentAssemblyPath)); - } - string? assemblyPathsList = null; string? nativeSearchPathsList = null; string? resourceSearchPathsList = null; @@ -48,7 +43,7 @@ public AssemblyDependencyResolver(string componentAssemblyPath) { // Setup error writer for this thread. This makes the hostpolicy redirect all error output // to the writer specified. Have to store the previous writer to set it back once this is done. - var errorWriter = new Interop.HostPolicy.corehost_error_writer_fn(message => errorMessage.AppendLine(message)); + var errorWriter = new Interop.HostPolicy.corehost_error_writer_fn(message => errorMessage.AppendLine(Marshal.PtrToStringAuto(message))); IntPtr errorWriterPtr = Marshal.GetFunctionPointerForDelegate(errorWriter); IntPtr previousErrorWriterPtr = Interop.HostPolicy.corehost_set_error_writer(errorWriterPtr); @@ -61,9 +56,9 @@ public AssemblyDependencyResolver(string componentAssemblyPath) componentAssemblyPath, (assemblyPaths, nativeSearchPaths, resourceSearchPaths) => { - assemblyPathsList = assemblyPaths; - nativeSearchPathsList = nativeSearchPaths; - resourceSearchPathsList = resourceSearchPaths; + assemblyPathsList = Marshal.PtrToStringAuto(assemblyPaths); + nativeSearchPathsList = Marshal.PtrToStringAuto(nativeSearchPaths); + resourceSearchPathsList = Marshal.PtrToStringAuto(resourceSearchPaths); }); } finally @@ -110,13 +105,8 @@ public AssemblyDependencyResolver(string componentAssemblyPath) _assemblyDirectorySearchPaths = new string[1] { Path.GetDirectoryName(componentAssemblyPath)! }; } - public string? ResolveAssemblyToPath(AssemblyName assemblyName) + public string? ResolveAssemblyToPath(AssemblyName assemblyName!!) { - if (assemblyName == null) - { - throw new ArgumentNullException(nameof(assemblyName)); - } - // Determine if the assembly name is for a satellite assembly or not // This is the same logic as in AssemblyBinder::BindByTpaList in CoreCLR // - If the culture name is non-empty and it's not 'neutral' @@ -161,13 +151,8 @@ public AssemblyDependencyResolver(string componentAssemblyPath) return null; } - public string? ResolveUnmanagedDllToPath(string unmanagedDllName) + public string? ResolveUnmanagedDllToPath(string unmanagedDllName!!) { - if (unmanagedDllName == null) - { - throw new ArgumentNullException(nameof(unmanagedDllName)); - } - string[] searchPaths; if (unmanagedDllName.Contains(Path.DirectorySeparatorChar)) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs index c6b3478cf9bb69..d67ae7a2e9aaff 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs @@ -293,13 +293,8 @@ public static IEnumerable All } // Helper to return AssemblyName corresponding to the path of an IL assembly - public static AssemblyName GetAssemblyName(string assemblyPath) + public static AssemblyName GetAssemblyName(string assemblyPath!!) { - if (assemblyPath == null) - { - throw new ArgumentNullException(nameof(assemblyPath)); - } - return AssemblyName.GetAssemblyName(assemblyPath); } @@ -313,11 +308,8 @@ public static AssemblyName GetAssemblyName(string assemblyPath) #if !CORERT [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod - public Assembly LoadFromAssemblyName(AssemblyName assemblyName) + public Assembly LoadFromAssemblyName(AssemblyName assemblyName!!) { - if (assemblyName == null) - throw new ArgumentNullException(nameof(assemblyName)); - // Attempt to load the assembly, using the same ordering as static load, in the current load context. StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller; return RuntimeAssembly.InternalLoad(assemblyName, ref stackMark, this); @@ -327,13 +319,8 @@ public Assembly LoadFromAssemblyName(AssemblyName assemblyName) // These methods load assemblies into the current AssemblyLoadContext // They may be used in the implementation of an AssemblyLoadContext derivation [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public Assembly LoadFromAssemblyPath(string assemblyPath) + public Assembly LoadFromAssemblyPath(string assemblyPath!!) { - if (assemblyPath == null) - { - throw new ArgumentNullException(nameof(assemblyPath)); - } - if (PathInternal.IsPartiallyQualified(assemblyPath)) { throw new ArgumentException(SR.Format(SR.Argument_AbsolutePathRequired, assemblyPath), nameof(assemblyPath)); @@ -348,13 +335,8 @@ public Assembly LoadFromAssemblyPath(string assemblyPath) } [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public Assembly LoadFromNativeImagePath(string nativeImagePath, string? assemblyPath) + public Assembly LoadFromNativeImagePath(string nativeImagePath!!, string? assemblyPath) { - if (nativeImagePath == null) - { - throw new ArgumentNullException(nameof(nativeImagePath)); - } - if (PathInternal.IsPartiallyQualified(nativeImagePath)) { throw new ArgumentException(SR.Format(SR.Argument_AbsolutePathRequired, nativeImagePath), nameof(nativeImagePath)); @@ -380,13 +362,8 @@ public Assembly LoadFromStream(Stream assembly) } [RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")] - public Assembly LoadFromStream(Stream assembly, Stream? assemblySymbols) + public Assembly LoadFromStream(Stream assembly!!, Stream? assemblySymbols) { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - int iAssemblyStreamLength = (int)assembly.Length; if (iAssemblyStreamLength <= 0) diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Serialization/SerializationInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Serialization/SerializationInfo.cs index 863e04326086e0..2689acceae7c66 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Serialization/SerializationInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Serialization/SerializationInfo.cs @@ -24,18 +24,8 @@ public sealed partial class SerializationInfo private Type _rootType; [CLSCompliant(false)] - public SerializationInfo(Type type, IFormatterConverter converter) + public SerializationInfo(Type type!!, IFormatterConverter converter!!) { - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (converter == null) - { - throw new ArgumentNullException(nameof(converter)); - } - _rootType = type; _rootTypeName = type.FullName!; _rootTypeAssemblyName = type.Module.Assembly.FullName!; @@ -61,11 +51,7 @@ public string FullTypeName get => _rootTypeName; set { - if (null == value) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _rootTypeName = value; IsFullTypeNameSetExplicit = true; } @@ -76,10 +62,7 @@ public string AssemblyName get => _rootTypeAssemblyName; set { - if (null == value) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _rootTypeAssemblyName = value; IsAssemblyNameSetExplicit = true; } @@ -89,13 +72,8 @@ public string AssemblyName public bool IsAssemblyNameSetExplicit { get; private set; } - public void SetType(Type type) + public void SetType(Type type!!) { - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } - if (!ReferenceEquals(_rootType, type)) { _rootType = type; @@ -143,18 +121,8 @@ private void ExpandArrays() _types = newTypes; } - public void AddValue(string name, object? value, Type type) + public void AddValue(string name!!, object? value, Type type!!) { - if (name is null) - { - throw new ArgumentNullException(nameof(name)); - } - - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } - AddValueInternal(name, value, type); } @@ -300,12 +268,8 @@ public void UpdateValue(string name, object value, Type type) } } - private int FindElement(string name) + private int FindElement(string name!!) { - if (null == name) - { - throw new ArgumentNullException(nameof(name)); - } if (_nameToIndex.TryGetValue(name, out int index)) { return index; @@ -354,13 +318,8 @@ private int FindElement(string name) return _values[index]; } - public object? GetValue(string name, Type type) + public object? GetValue(string name, Type type!!) { - if (type is null) - { - throw new ArgumentNullException(nameof(type)); - } - if (type is not RuntimeType) throw new ArgumentException(SR.Argument_MustBeRuntimeType); diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs index 7ccea51e0c2823..b53820d017ff40 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/RequiresPreviewFeaturesAttribute.cs @@ -15,7 +15,12 @@ namespace System.Runtime.Versioning AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event, Inherited = false)] - public sealed class RequiresPreviewFeaturesAttribute : Attribute +#if SYSTEM_PRIVATE_CORELIB + public +#else + internal +#endif + sealed class RequiresPreviewFeaturesAttribute : Attribute { /// /// Initializes a new instance of the class. diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/TargetFrameworkAttribute.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/TargetFrameworkAttribute.cs index 035e6b41bf4a47..adaf7f107db40b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/TargetFrameworkAttribute.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Versioning/TargetFrameworkAttribute.cs @@ -20,10 +20,8 @@ public sealed class TargetFrameworkAttribute : Attribute private string? _frameworkDisplayName; // The frameworkName parameter is intended to be the string form of a FrameworkName instance. - public TargetFrameworkAttribute(string frameworkName) + public TargetFrameworkAttribute(string frameworkName!!) { - if (frameworkName == null) - throw new ArgumentNullException(nameof(frameworkName)); _frameworkName = frameworkName; } diff --git a/src/libraries/System.Private.CoreLib/src/System/RuntimeType.cs b/src/libraries/System.Private.CoreLib/src/System/RuntimeType.cs index 8ad94b514bfa1c..81202183ad7598 100644 --- a/src/libraries/System.Private.CoreLib/src/System/RuntimeType.cs +++ b/src/libraries/System.Private.CoreLib/src/System/RuntimeType.cs @@ -53,11 +53,8 @@ public override object[] GetCustomAttributes(bool inherit) return CustomAttribute.GetCustomAttributes(this, ObjectType, inherit); } - public override object[] GetCustomAttributes(Type attributeType, bool inherit) + public override object[] GetCustomAttributes(Type attributeType!!, bool inherit) { - if (attributeType is null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); @@ -94,11 +91,8 @@ public override MemberInfo[] GetDefaultMembers() public override Type GetElementType() => RuntimeTypeHandle.GetElementType(this); - public override string? GetEnumName(object value) + public override string? GetEnumName(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - Type valueType = value.GetType(); if (!(valueType.IsEnum || IsIntegerType(valueType))) @@ -238,22 +232,16 @@ protected override TypeCode GetTypeCodeImpl() protected override bool IsContextfulImpl() => false; - public override bool IsDefined(Type attributeType, bool inherit) + public override bool IsDefined(Type attributeType!!, bool inherit) { - if (attributeType is null) - throw new ArgumentNullException(nameof(attributeType)); - if (attributeType.UnderlyingSystemType is not RuntimeType attributeRuntimeType) throw new ArgumentException(SR.Arg_MustBeType, nameof(attributeType)); return CustomAttribute.IsDefined(this, attributeRuntimeType, inherit); } - public override bool IsEnumDefined(object value) + public override bool IsEnumDefined(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!IsEnum) throw new ArgumentException(SR.Arg_MustBeEnum, "enumType"); @@ -369,7 +357,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) [DebuggerHidden] [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] public override object? InvokeMember( - string name, BindingFlags bindingFlags, Binder? binder, object? target, + string name!!, BindingFlags bindingFlags, Binder? binder, object? target, object?[]? providedArgs, ParameterModifier[]? modifiers, CultureInfo? culture, string[]? namedParams) { const BindingFlags MemberBindingMask = (BindingFlags)0x000000FF; @@ -435,8 +423,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) if ((bindingFlags & BindingFlags.PutRefDispProperty) != 0 && (bindingFlags & ClassicBindingMask & ~BindingFlags.PutRefDispProperty) != 0) throw new ArgumentException(SR.Arg_COMPropSetPut, nameof(bindingFlags)); - if (name == null) - throw new ArgumentNullException(nameof(name)); + ArgumentNullException.ThrowIfNull(name); bool[]? isByRef = modifiers?[0].IsByRefArray; @@ -479,10 +466,6 @@ public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) // PutDispProperty and\or PutRefDispProperty ==> SetProperty. if ((bindingFlags & (BindingFlags.PutDispProperty | BindingFlags.PutRefDispProperty)) != 0) bindingFlags |= BindingFlags.SetProperty; - - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (name.Length == 0 || name.Equals("[DISPID=0]")) { // in InvokeMember we always pretend there is a default member if none is provided and we make it ToString @@ -507,8 +490,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) { Debug.Assert(IsSetField); - if (providedArgs == null) - throw new ArgumentNullException(nameof(providedArgs)); + ArgumentNullException.ThrowIfNull(providedArgs); if ((bindingFlags & BindingFlags.GetProperty) != 0) throw new ArgumentException(SR.Arg_FldSetPropGet, nameof(bindingFlags)); @@ -789,16 +771,11 @@ private static void ThrowIfTypeNeverValidGenericArgument(RuntimeType type) SR.Format(SR.Argument_NeverValidGenericArgument, type)); } - internal static void SanityCheckGenericArguments(RuntimeType[] genericArguments, RuntimeType[] genericParameters) + internal static void SanityCheckGenericArguments(RuntimeType[] genericArguments!!, RuntimeType[] genericParameters) { - if (genericArguments == null) - throw new ArgumentNullException(); - for (int i = 0; i < genericArguments.Length; i++) { - if (genericArguments[i] == null) - throw new ArgumentNullException(); - + ArgumentNullException.ThrowIfNull(genericArguments[i], null); ThrowIfTypeNeverValidGenericArgument(genericArguments[i]); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Security/SecureString.cs b/src/libraries/System.Private.CoreLib/src/System/Security/SecureString.cs index 21c6591dc711f5..1eada13c2c8d98 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Security/SecureString.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Security/SecureString.cs @@ -22,12 +22,8 @@ public SecureString() } [CLSCompliant(false)] - public unsafe SecureString(char* value, int length) + public unsafe SecureString(char* value!!, int length) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (length < 0) { throw new ArgumentOutOfRangeException(nameof(length), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Security/SecurityElement.cs b/src/libraries/System.Private.CoreLib/src/System/Security/SecurityElement.cs index f48c702651fecc..d900958c0d445c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Security/SecurityElement.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Security/SecurityElement.cs @@ -31,22 +31,16 @@ public sealed class SecurityElement //-------------------------- Constructors --------------------------- - public SecurityElement(string tag) + public SecurityElement(string tag!!) { - if (tag == null) - throw new ArgumentNullException(nameof(tag)); - if (!IsValidTag(tag)) throw new ArgumentException(SR.Format(SR.Argument_InvalidElementTag, tag)); _tag = tag; } - public SecurityElement(string tag, string? text) + public SecurityElement(string tag!!, string? text) { - if (tag == null) - throw new ArgumentNullException(nameof(tag)); - if (!IsValidTag(tag)) throw new ArgumentException(SR.Format(SR.Argument_InvalidElementTag, tag)); @@ -64,8 +58,7 @@ public string Tag get => _tag; set { - if (value == null) - throw new ArgumentNullException(nameof(Tag)); + ArgumentNullException.ThrowIfNull(value, nameof(Tag)); if (!IsValidTag(value)) throw new ArgumentException(SR.Format(SR.Argument_InvalidElementTag, value)); @@ -191,14 +184,8 @@ internal void AddAttributeSafe(string name, string value) _attributes.Add(value); } - public void AddAttribute(string name, string value) + public void AddAttribute(string name!!, string value!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!IsValidAttributeName(name)) throw new ArgumentException(SR.Format(SR.Argument_InvalidElementName, name)); @@ -208,11 +195,8 @@ public void AddAttribute(string name, string value) AddAttributeSafe(name, value); } - public void AddChild(SecurityElement child) + public void AddChild(SecurityElement child!!) { - if (child == null) - throw new ArgumentNullException(nameof(child)); - _children ??= new ArrayList(ChildrenTypical); _children.Add(child); @@ -497,11 +481,8 @@ private void ToString(object obj, Action write) } } - public string? Attribute(string name) + public string? Attribute(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - // Note: we don't check for validity here because an // if an invalid name is passed we simply won't find it. if (_attributes == null) @@ -529,12 +510,10 @@ private void ToString(object obj, Action write) return null; } - public SecurityElement? SearchForChildByTag(string tag) + public SecurityElement? SearchForChildByTag(string tag!!) { // Go through all the children and see if we can // find the ones that are asked for (matching tags) - if (tag == null) - throw new ArgumentNullException(nameof(tag)); // Note: we don't check for a valid tag here because // an invalid tag simply won't be found. @@ -548,12 +527,10 @@ private void ToString(object obj, Action write) return null; } - public string? SearchForTextOfTag(string tag) + public string? SearchForTextOfTag(string tag!!) { // Search on each child in order and each // child's child, depth-first - if (tag == null) - throw new ArgumentNullException(nameof(tag)); // Note: we don't check for a valid tag here because // an invalid tag simply won't be found. @@ -571,12 +548,6 @@ private void ToString(object obj, Action write) return null; } - public static SecurityElement? FromString(string xml) - { - if (xml == null) - throw new ArgumentNullException(nameof(xml)); - - return default; - } + public static SecurityElement? FromString(string xml!!) => default; } } diff --git a/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Byte.cs b/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Byte.cs index ddab1018c7ad41..42490e36271a97 100644 --- a/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Byte.cs +++ b/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Byte.cs @@ -26,7 +26,7 @@ public static int IndexOf(ref byte searchSpace, int searchSpaceLength, ref byte if (valueTailLength == 0) return IndexOf(ref searchSpace, value, searchSpaceLength); // for single-byte values use plain IndexOf - int offset = 0; + nint offset = 0; byte valueHead = value; int searchSpaceMinusValueTailLength = searchSpaceLength - valueTailLength; if (Vector128.IsHardwareAccelerated && searchSpaceMinusValueTailLength >= Vector128.Count) @@ -54,7 +54,7 @@ public static int IndexOf(ref byte searchSpace, int searchSpaceLength, ref byte if (SequenceEqual( ref Unsafe.Add(ref searchSpace, offset + 1), ref valueTail, (nuint)(uint)valueTailLength)) // The (nuint)-cast is necessary to pick the correct overload - return offset; // The tail matched. Return a successful find. + return (int)offset; // The tail matched. Return a successful find. remainingSearchSpaceLength--; offset++; @@ -69,48 +69,60 @@ ref Unsafe.Add(ref searchSpace, offset + 1), // Find the last unique (which is not equal to ch1) byte // the algorithm is fine if both are equal, just a little bit less efficient byte ch2Val = Unsafe.Add(ref value, valueTailLength); - int ch1ch2Distance = valueTailLength; + nint ch1ch2Distance = valueTailLength; while (ch2Val == value && ch1ch2Distance > 1) ch2Val = Unsafe.Add(ref value, --ch1ch2Distance); Vector256 ch1 = Vector256.Create(value); Vector256 ch2 = Vector256.Create(ch2Val); + nint searchSpaceMinusValueTailLengthAndVector = + searchSpaceMinusValueTailLength - (nint)Vector256.Count; + do { Debug.Assert(offset >= 0); // Make sure we don't go out of bounds Debug.Assert(offset + ch1ch2Distance + Vector256.Count <= searchSpaceLength); - Vector256 cmpCh1 = Vector256.Equals(ch1, Vector256.LoadUnsafe(ref searchSpace, (nuint)offset)); Vector256 cmpCh2 = Vector256.Equals(ch2, Vector256.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); + Vector256 cmpCh1 = Vector256.Equals(ch1, Vector256.LoadUnsafe(ref searchSpace, (nuint)offset)); Vector256 cmpAnd = (cmpCh1 & cmpCh2).AsByte(); // Early out: cmpAnd is all zeros if (cmpAnd != Vector256.Zero) { - uint mask = cmpAnd.ExtractMostSignificantBits(); - do - { - int bitPos = BitOperations.TrailingZeroCount(mask); - if (valueLength == 2 || // we already matched two bytes - SequenceEqual( - ref Unsafe.Add(ref searchSpace, offset + bitPos), - ref value, (nuint)(uint)valueLength)) // The (nuint)-cast is necessary to pick the correct overload - { - return offset + bitPos; - } - mask = BitOperations.ResetLowestSetBit(mask); // Clear the lowest set bit - } while (mask != 0); + goto CANDIDATE_FOUND; } + + LOOP_FOOTER: offset += Vector256.Count; if (offset == searchSpaceMinusValueTailLength) return -1; // Overlap with the current chunk for trailing elements - if (offset > searchSpaceMinusValueTailLength - Vector256.Count) - offset = searchSpaceMinusValueTailLength - Vector256.Count; + if (offset > searchSpaceMinusValueTailLengthAndVector) + offset = searchSpaceMinusValueTailLengthAndVector; + + continue; + + CANDIDATE_FOUND: + uint mask = cmpAnd.ExtractMostSignificantBits(); + do + { + int bitPos = BitOperations.TrailingZeroCount(mask); + if (valueLength == 2 || // we already matched two bytes + SequenceEqual( + ref Unsafe.Add(ref searchSpace, offset + bitPos), + ref value, (nuint)(uint)valueLength)) // The (nuint)-cast is necessary to pick the correct overload + { + return (int)(offset + bitPos); + } + mask = BitOperations.ResetLowestSetBit(mask); // Clear the lowest set bit + } while (mask != 0); + goto LOOP_FOOTER; + } while (true); } else // 128bit vector path (SSE2 or AdvSimd) @@ -125,42 +137,54 @@ ref Unsafe.Add(ref searchSpace, offset + bitPos), Vector128 ch1 = Vector128.Create(value); Vector128 ch2 = Vector128.Create(ch2Val); + nint searchSpaceMinusValueTailLengthAndVector = + searchSpaceMinusValueTailLength - (nint)Vector128.Count; + do { Debug.Assert(offset >= 0); // Make sure we don't go out of bounds Debug.Assert(offset + ch1ch2Distance + Vector128.Count <= searchSpaceLength); - Vector128 cmpCh1 = Vector128.Equals(ch1, Vector128.LoadUnsafe(ref searchSpace, (nuint)offset)); Vector128 cmpCh2 = Vector128.Equals(ch2, Vector128.LoadUnsafe(ref searchSpace, (nuint)(offset + ch1ch2Distance))); + Vector128 cmpCh1 = Vector128.Equals(ch1, Vector128.LoadUnsafe(ref searchSpace, (nuint)offset)); Vector128 cmpAnd = (cmpCh1 & cmpCh2).AsByte(); // Early out: cmpAnd is all zeros if (cmpAnd != Vector128.Zero) { - uint mask = cmpAnd.ExtractMostSignificantBits(); - do - { - int bitPos = BitOperations.TrailingZeroCount(mask); - if (valueLength == 2 || // we already matched two bytes - SequenceEqual( - ref Unsafe.Add(ref searchSpace, offset + bitPos), - ref value, (nuint)(uint)valueLength)) // The (nuint)-cast is necessary to pick the correct overload - { - return offset + bitPos; - } - // Clear the lowest set bit - mask = BitOperations.ResetLowestSetBit(mask); - } while (mask != 0); + goto CANDIDATE_FOUND; } + + LOOP_FOOTER: offset += Vector128.Count; if (offset == searchSpaceMinusValueTailLength) return -1; // Overlap with the current chunk for trailing elements - if (offset > searchSpaceMinusValueTailLength - Vector128.Count) - offset = searchSpaceMinusValueTailLength - Vector128.Count; + if (offset > searchSpaceMinusValueTailLengthAndVector) + offset = searchSpaceMinusValueTailLengthAndVector; + + continue; + + CANDIDATE_FOUND: + uint mask = cmpAnd.ExtractMostSignificantBits(); + do + { + int bitPos = BitOperations.TrailingZeroCount(mask); + if (valueLength == 2 || // we already matched two bytes + SequenceEqual( + ref Unsafe.Add(ref searchSpace, offset + bitPos), + ref value, (nuint)(uint)valueLength)) // The (nuint)-cast is necessary to pick the correct overload + { + return (int)(offset + bitPos); + } + // Clear the lowest set bit + mask = BitOperations.ResetLowestSetBit(mask); + } while (mask != 0); + goto LOOP_FOOTER; + } while (true); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Char.cs b/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Char.cs index c8331dc1523361..580e719d1b1927 100644 --- a/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Char.cs +++ b/src/libraries/System.Private.CoreLib/src/System/SpanHelpers.Char.cs @@ -29,7 +29,7 @@ public static int IndexOf(ref char searchSpace, int searchSpaceLength, ref char return IndexOf(ref searchSpace, value, searchSpaceLength); } - int offset = 0; + nint offset = 0; char valueHead = value; int searchSpaceMinusValueTailLength = searchSpaceLength - valueTailLength; if (Vector128.IsHardwareAccelerated && searchSpaceMinusValueTailLength >= Vector128.Count) @@ -59,7 +59,7 @@ ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + 1)), ref valueTail, (nuint)(uint)valueTailLength * 2)) { - return offset; // The tail matched. Return a successful find. + return (int)offset; // The tail matched. Return a successful find. } remainingSearchSpaceLength--; @@ -75,54 +75,66 @@ ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + 1)), // Find the last unique (which is not equal to ch1) character // the algorithm is fine if both are equal, just a little bit less efficient ushort ch2Val = Unsafe.Add(ref value, valueTailLength); - int ch1ch2Distance = valueTailLength; + nint ch1ch2Distance = valueTailLength; while (ch2Val == valueHead && ch1ch2Distance > 1) ch2Val = Unsafe.Add(ref value, --ch1ch2Distance); Vector256 ch1 = Vector256.Create((ushort)valueHead); Vector256 ch2 = Vector256.Create(ch2Val); + nint searchSpaceMinusValueTailLengthAndVector = + searchSpaceMinusValueTailLength - (nint)Vector256.Count; + do { // Make sure we don't go out of bounds Debug.Assert(offset + ch1ch2Distance + Vector256.Count <= searchSpaceLength); - Vector256 cmpCh1 = Vector256.Equals(ch1, LoadVector256(ref searchSpace, offset)); Vector256 cmpCh2 = Vector256.Equals(ch2, LoadVector256(ref searchSpace, offset + ch1ch2Distance)); + Vector256 cmpCh1 = Vector256.Equals(ch1, LoadVector256(ref searchSpace, offset)); Vector256 cmpAnd = (cmpCh1 & cmpCh2).AsByte(); // Early out: cmpAnd is all zeros if (cmpAnd != Vector256.Zero) { - uint mask = cmpAnd.ExtractMostSignificantBits(); - do - { - int bitPos = BitOperations.TrailingZeroCount(mask); - // div by 2 (shr) because we work with 2-byte chars - int charPos = (int)((uint)bitPos / 2); - if (valueLength == 2 || // we already matched two chars - SequenceEqual( - ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + charPos)), - ref Unsafe.As(ref value), (nuint)(uint)valueLength * 2)) - { - return offset + charPos; - } - - // Clear two the lowest set bits - if (Bmi1.IsSupported) - mask = Bmi1.ResetLowestSetBit(Bmi1.ResetLowestSetBit(mask)); - else - mask &= ~(uint)(0b11 << bitPos); - } while (mask != 0); + goto CANDIDATE_FOUND; } + + LOOP_FOOTER: offset += Vector256.Count; if (offset == searchSpaceMinusValueTailLength) return -1; // Overlap with the current chunk for trailing elements - if (offset > searchSpaceMinusValueTailLength - Vector256.Count) - offset = searchSpaceMinusValueTailLength - Vector256.Count; + if (offset > searchSpaceMinusValueTailLengthAndVector) + offset = searchSpaceMinusValueTailLengthAndVector; + + continue; + + CANDIDATE_FOUND: + uint mask = cmpAnd.ExtractMostSignificantBits(); + do + { + int bitPos = BitOperations.TrailingZeroCount(mask); + // div by 2 (shr) because we work with 2-byte chars + nint charPos = (nint)((uint)bitPos / 2); + if (valueLength == 2 || // we already matched two chars + SequenceEqual( + ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + charPos)), + ref Unsafe.As(ref value), (nuint)(uint)valueLength * 2)) + { + return (int)(offset + charPos); + } + + // Clear two the lowest set bits + if (Bmi1.IsSupported) + mask = Bmi1.ResetLowestSetBit(Bmi1.ResetLowestSetBit(mask)); + else + mask &= ~(uint)(0b11 << bitPos); + } while (mask != 0); + goto LOOP_FOOTER; + } while (true); } else // 128bit vector path (SSE2 or AdvSimd) @@ -130,54 +142,66 @@ ref Unsafe.As(ref value), (nuint)(uint)valueLength * 2)) // Find the last unique (which is not equal to ch1) character // the algorithm is fine if both are equal, just a little bit less efficient ushort ch2Val = Unsafe.Add(ref value, valueTailLength); - int ch1ch2Distance = valueTailLength; + nint ch1ch2Distance = valueTailLength; while (ch2Val == valueHead && ch1ch2Distance > 1) ch2Val = Unsafe.Add(ref value, --ch1ch2Distance); Vector128 ch1 = Vector128.Create((ushort)valueHead); Vector128 ch2 = Vector128.Create(ch2Val); + nint searchSpaceMinusValueTailLengthAndVector = + searchSpaceMinusValueTailLength - (nint)Vector128.Count; + do { // Make sure we don't go out of bounds Debug.Assert(offset + ch1ch2Distance + Vector128.Count <= searchSpaceLength); - Vector128 cmpCh1 = Vector128.Equals(ch1, LoadVector128(ref searchSpace, offset)); Vector128 cmpCh2 = Vector128.Equals(ch2, LoadVector128(ref searchSpace, offset + ch1ch2Distance)); + Vector128 cmpCh1 = Vector128.Equals(ch1, LoadVector128(ref searchSpace, offset)); Vector128 cmpAnd = (cmpCh1 & cmpCh2).AsByte(); // Early out: cmpAnd is all zeros if (cmpAnd != Vector128.Zero) { - uint mask = cmpAnd.ExtractMostSignificantBits(); - do - { - int bitPos = BitOperations.TrailingZeroCount(mask); - // div by 2 (shr) because we work with 2-byte chars - int charPos = (int)((uint)bitPos / 2); - if (valueLength == 2 || // we already matched two chars - SequenceEqual( - ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + charPos)), - ref Unsafe.As(ref value), (nuint)(uint)valueLength * 2)) - { - return offset + charPos; - } - - // Clear two lowest set bits - if (Bmi1.IsSupported) - mask = Bmi1.ResetLowestSetBit(Bmi1.ResetLowestSetBit(mask)); - else - mask &= ~(uint)(0b11 << bitPos); - } while (mask != 0); + goto CANDIDATE_FOUND; } + + LOOP_FOOTER: offset += Vector128.Count; if (offset == searchSpaceMinusValueTailLength) return -1; // Overlap with the current chunk for trailing elements - if (offset > searchSpaceMinusValueTailLength - Vector128.Count) - offset = searchSpaceMinusValueTailLength - Vector128.Count; + if (offset > searchSpaceMinusValueTailLengthAndVector) + offset = searchSpaceMinusValueTailLengthAndVector; + + continue; + + CANDIDATE_FOUND: + uint mask = cmpAnd.ExtractMostSignificantBits(); + do + { + int bitPos = BitOperations.TrailingZeroCount(mask); + // div by 2 (shr) because we work with 2-byte chars + int charPos = (int)((uint)bitPos / 2); + if (valueLength == 2 || // we already matched two chars + SequenceEqual( + ref Unsafe.As(ref Unsafe.Add(ref searchSpace, offset + charPos)), + ref Unsafe.As(ref value), (nuint)(uint)valueLength * 2)) + { + return (int)(offset + charPos); + } + + // Clear two lowest set bits + if (Bmi1.IsSupported) + mask = Bmi1.ResetLowestSetBit(Bmi1.ResetLowestSetBit(mask)); + else + mask &= ~(uint)(0b11 << bitPos); + } while (mask != 0); + goto LOOP_FOOTER; + } while (true); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/String.Comparison.cs b/src/libraries/System.Private.CoreLib/src/System/String.Comparison.cs index 6a059351f376ac..8860c7a660ba12 100644 --- a/src/libraries/System.Private.CoreLib/src/System/String.Comparison.cs +++ b/src/libraries/System.Private.CoreLib/src/System/String.Comparison.cs @@ -541,13 +541,8 @@ public bool EndsWith(string value) return EndsWith(value, StringComparison.CurrentCulture); } - public bool EndsWith(string value, StringComparison comparisonType) + public bool EndsWith(string value!!, StringComparison comparisonType) { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - if ((object)this == (object)value) { CheckStringComparison(comparisonType); @@ -584,13 +579,8 @@ public bool EndsWith(string value, StringComparison comparisonType) } } - public bool EndsWith(string value, bool ignoreCase, CultureInfo? culture) + public bool EndsWith(string value!!, bool ignoreCase, CultureInfo? culture) { - if (null == value) - { - throw new ArgumentNullException(nameof(value)); - } - if ((object)this == (object)value) { return true; @@ -947,22 +937,13 @@ static int GetNonRandomizedHashCodeOrdinalIgnoreCaseSlow(string str) // Determines whether a specified string is a prefix of the current instance // - public bool StartsWith(string value) + public bool StartsWith(string value!!) { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } return StartsWith(value, StringComparison.CurrentCulture); } - public bool StartsWith(string value, StringComparison comparisonType) + public bool StartsWith(string value!!, StringComparison comparisonType) { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - if ((object)this == (object)value) { CheckStringComparison(comparisonType); @@ -1009,13 +990,8 @@ ref Unsafe.As(ref value.GetRawStringData()), } } - public bool StartsWith(string value, bool ignoreCase, CultureInfo? culture) + public bool StartsWith(string value!!, bool ignoreCase, CultureInfo? culture) { - if (null == value) - { - throw new ArgumentNullException(nameof(value)); - } - if ((object)this == (object)value) { return true; diff --git a/src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs b/src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs index 0097b92631ff0e..764f79f4d4e64d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs +++ b/src/libraries/System.Private.CoreLib/src/System/String.Manipulation.cs @@ -41,13 +41,8 @@ public static string Concat(object? arg0, object? arg1) => public static string Concat(object? arg0, object? arg1, object? arg2) => Concat(arg0?.ToString(), arg1?.ToString(), arg2?.ToString()); - public static string Concat(params object?[] args) + public static string Concat(params object?[] args!!) { - if (args == null) - { - throw new ArgumentNullException(nameof(args)); - } - if (args.Length <= 1) { return args.Length == 0 ? @@ -106,11 +101,8 @@ public static string Concat(params object?[] args) return result; } - public static string Concat(IEnumerable values) + public static string Concat(IEnumerable values!!) { - if (values == null) - throw new ArgumentNullException(nameof(values)); - if (typeof(T) == typeof(char)) { // Special-case T==char, as we can handle that case much more efficiently, @@ -190,11 +182,8 @@ public static string Concat(IEnumerable values) } } - public static string Concat(IEnumerable values) + public static string Concat(IEnumerable values!!) { - if (values == null) - throw new ArgumentNullException(nameof(values)); - using (IEnumerator en = values.GetEnumerator()) { if (!en.MoveNext()) @@ -371,11 +360,8 @@ public static string Concat(ReadOnlySpan str0, ReadOnlySpan str1, Re return result; } - public static string Concat(params string?[] values) + public static string Concat(params string?[] values!!) { - if (values == null) - throw new ArgumentNullException(nameof(values)); - if (values.Length <= 1) { return values.Length == 0 ? @@ -456,11 +442,11 @@ public static string Format(string format, object? arg0, object? arg1, object? a public static string Format(string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in FormatHelper. - throw new ArgumentNullException((format == null) ? nameof(format) : nameof(args)); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } return FormatHelper(null, format, new ParamsArray(args)); @@ -483,31 +469,26 @@ public static string Format(IFormatProvider? provider, string format, object? ar public static string Format(IFormatProvider? provider, string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in FormatHelper. - throw new ArgumentNullException((format == null) ? nameof(format) : nameof(args)); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } return FormatHelper(provider, format, new ParamsArray(args)); } - private static string FormatHelper(IFormatProvider? provider, string format, ParamsArray args) + private static string FormatHelper(IFormatProvider? provider, string format!!, ParamsArray args) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - var sb = new ValueStringBuilder(stackalloc char[256]); sb.EnsureCapacity(format.Length + args.Length * 8); sb.AppendFormatHelper(provider, format, args); return sb.ToString(); } - public string Insert(int startIndex, string value) + public string Insert(int startIndex, string value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); if ((uint)startIndex > Length) throw new ArgumentOutOfRangeException(nameof(startIndex)); @@ -556,12 +537,8 @@ public static string Join(char separator, string?[] value, int startIndex, int c public static string Join(string? separator, string?[] value, int startIndex, int count) => JoinCore(separator.AsSpan(), value, startIndex, count); - private static string JoinCore(ReadOnlySpan separator, string?[] value, int startIndex, int count) + private static string JoinCore(ReadOnlySpan separator, string?[] value!!, int startIndex, int count) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (startIndex < 0) { throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_StartIndex); @@ -1202,13 +1179,8 @@ private string ReplaceHelper(int oldValueLength, string newValue, ReadOnlySpann is the length of the input string, /// and where r is the length of . /// - public string ReplaceLineEndings(string replacementText) + public string ReplaceLineEndings(string replacementText!!) { - if (replacementText is null) - { - throw new ArgumentNullException(nameof(replacementText)); - } - // Early-exit: do we need to do anything at all? // If not, return this string as-is. diff --git a/src/libraries/System.Private.CoreLib/src/System/String.cs b/src/libraries/System.Private.CoreLib/src/System/String.cs index 260c87b5fd9118..e3d96683650cc8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/String.cs +++ b/src/libraries/System.Private.CoreLib/src/System/String.cs @@ -81,11 +81,8 @@ private static string Ctor(char[]? value) [DynamicDependency("Ctor(System.Char[],System.Int32,System.Int32)")] public extern String(char[] value, int startIndex, int length); - private static string Ctor(char[] value, int startIndex, int length) + private static string Ctor(char[] value!!, int startIndex, int length) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (startIndex < 0) throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_StartIndex); @@ -201,7 +198,7 @@ private static unsafe string Ctor(sbyte* value, int startIndex, int length) if (length == 0) return Empty; - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } byte* pStart = (byte*)(value + startIndex); @@ -261,7 +258,7 @@ private static unsafe string Ctor(sbyte* value, int startIndex, int length, Enco if (length == 0) return Empty; - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } byte* pStart = (byte*)(value + startIndex); @@ -308,11 +305,8 @@ private static unsafe string Ctor(ReadOnlySpan value) return result; } - public static string Create(int length, TState state, SpanAction action) + public static string Create(int length, TState state, SpanAction action!!) { - if (action == null) - throw new ArgumentNullException(nameof(action)); - if (length <= 0) { if (length == 0) @@ -371,11 +365,8 @@ public object Clone() return this; } - public static unsafe string Copy(string str) + public static unsafe string Copy(string str!!) { - if (str == null) - throw new ArgumentNullException(nameof(str)); - string result = FastAllocateString(str.Length); Buffer.Memmove( @@ -391,10 +382,8 @@ public static unsafe string Copy(string str) // sourceIndex + count - 1 to the character array buffer, beginning // at destinationIndex. // - public unsafe void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count) + public unsafe void CopyTo(int sourceIndex, char[] destination!!, int destinationIndex, int count) { - if (destination == null) - throw new ArgumentNullException(nameof(destination)); if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NegativeCount); if (sourceIndex < 0) diff --git a/src/libraries/System.Private.CoreLib/src/System/StringComparer.cs b/src/libraries/System.Private.CoreLib/src/System/StringComparer.cs index ce22da699c9284..d013b563b6f61a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/StringComparer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/StringComparer.cs @@ -42,23 +42,13 @@ public static StringComparer FromComparison(StringComparison comparisonType) }; } - public static StringComparer Create(CultureInfo culture, bool ignoreCase) + public static StringComparer Create(CultureInfo culture!!, bool ignoreCase) { - if (culture == null) - { - throw new ArgumentNullException(nameof(culture)); - } - return new CultureAwareComparer(culture, ignoreCase ? CompareOptions.IgnoreCase : CompareOptions.None); } - public static StringComparer Create(CultureInfo culture, CompareOptions options) + public static StringComparer Create(CultureInfo culture!!, CompareOptions options) { - if (culture == null) - { - throw new ArgumentNullException(nameof(culture)); - } - return new CultureAwareComparer(culture, options); } @@ -195,13 +185,8 @@ public int Compare(object? x, object? y) return x.Equals(y); } - public int GetHashCode(object obj) + public int GetHashCode(object obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - if (obj is string s) { return GetHashCode(s); @@ -269,12 +254,8 @@ public override bool Equals(string? x, string? y) return _compareInfo.Compare(x, y, _options) == 0; } - public override int GetHashCode(string obj) + public override int GetHashCode(string obj!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } return _compareInfo.GetHashCode(obj, _options); } diff --git a/src/libraries/System.Private.CoreLib/src/System/StringNormalizationExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/StringNormalizationExtensions.cs index f858bb7d2b72a0..63371135495128 100644 --- a/src/libraries/System.Private.CoreLib/src/System/StringNormalizationExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/StringNormalizationExtensions.cs @@ -12,13 +12,8 @@ public static bool IsNormalized(this string strInput) return IsNormalized(strInput, NormalizationForm.FormC); } - public static bool IsNormalized(this string strInput, NormalizationForm normalizationForm) + public static bool IsNormalized(this string strInput!!, NormalizationForm normalizationForm) { - if (strInput == null) - { - throw new ArgumentNullException(nameof(strInput)); - } - return strInput.IsNormalized(normalizationForm); } @@ -28,13 +23,8 @@ public static string Normalize(this string strInput) return Normalize(strInput, NormalizationForm.FormC); } - public static string Normalize(this string strInput, NormalizationForm normalizationForm) + public static string Normalize(this string strInput!!, NormalizationForm normalizationForm) { - if (strInput == null) - { - throw new ArgumentNullException(nameof(strInput)); - } - return strInput.Normalize(normalizationForm); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/ASCIIUtility.cs b/src/libraries/System.Private.CoreLib/src/System/Text/ASCIIUtility.cs index e490a2dd2d051c..d4663f0529218f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/ASCIIUtility.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/ASCIIUtility.cs @@ -89,7 +89,7 @@ public static unsafe nuint GetIndexOfFirstNonAsciiByte(byte* pBuffer, nuint buff // pmovmskb which we know are optimized, and (b) we can avoid downclocking the processor while // this method is running. - return (Sse2.IsSupported || AdvSimd.Arm64.IsSupported && BitConverter.IsLittleEndian) + return (Sse2.IsSupported || (AdvSimd.Arm64.IsSupported && BitConverter.IsLittleEndian)) ? GetIndexOfFirstNonAsciiByte_Intrinsified(pBuffer, bufferLength) : GetIndexOfFirstNonAsciiByte_Default(pBuffer, bufferLength); } @@ -1614,7 +1614,7 @@ public static unsafe nuint WidenAsciiToUtf16(byte* pAsciiBuffer, char* pUtf16Buf // pmovmskb which we know are optimized, and (b) we can avoid downclocking the processor while // this method is running. - if (BitConverter.IsLittleEndian && (Sse2.IsSupported || AdvSimd.Arm64.IsSupported)) + if (Sse2.IsSupported || (AdvSimd.Arm64.IsSupported && BitConverter.IsLittleEndian)) { if (elementCount >= 2 * (uint)Unsafe.SizeOf>()) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/Decoder.cs b/src/libraries/System.Private.CoreLib/src/System/Text/Decoder.cs index 38498176e4591f..be2b48ec33dd5e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/Decoder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/Decoder.cs @@ -33,8 +33,7 @@ public DecoderFallback? Fallback get => _fallback; set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); // Can't change fallback if buffer is wrong if (_fallbackBuffer != null && _fallbackBuffer.Remaining > 0) @@ -99,13 +98,9 @@ public virtual int GetCharCount(byte[] bytes, int index, int count, bool flush) // We expect this to be the workhorse for NLS Encodings, but for existing // ones we need a working (if slow) default implementation) [CLSCompliant(false)] - public virtual unsafe int GetCharCount(byte* bytes, int count, bool flush) + public virtual unsafe int GetCharCount(byte* bytes!!, int count, bool flush) { // Validate input parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -169,14 +164,10 @@ public virtual int GetChars(byte[] bytes, int byteIndex, int byteCount, // could easily overflow our output buffer. Therefore we do an extra test // when we copy the buffer so that we don't overflow charCount either. [CLSCompliant(false)] - public virtual unsafe int GetChars(byte* bytes, int byteCount, - char* chars, int charCount, bool flush) + public virtual unsafe int GetChars(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush) { // Validate input parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -234,15 +225,11 @@ public virtual unsafe int GetChars(ReadOnlySpan bytes, Span chars, b // Note that if all of the input bytes are not consumed, then we'll do a /2, which means // that its likely that we didn't consume as many bytes as we could have. For some // applications this could be slow. (Like trying to exactly fill an output buffer from a bigger stream) - public virtual void Convert(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, int charCount, bool flush, - out int bytesUsed, out int charsUsed, out bool completed) + public virtual void Convert(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, int charCount, bool flush, + out int bytesUsed, out int charsUsed, out bool completed) { // Validate parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -290,15 +277,11 @@ public virtual void Convert(byte[] bytes, int byteIndex, int byteCount, // that its likely that we didn't consume as many bytes as we could have. For some // applications this could be slow. (Like trying to exactly fill an output buffer from a bigger stream) [CLSCompliant(false)] - public virtual unsafe void Convert(byte* bytes, int byteCount, - char* chars, int charCount, bool flush, - out int bytesUsed, out int charsUsed, out bool completed) + public virtual unsafe void Convert(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush, + out int bytesUsed, out int charsUsed, out bool completed) { // Validate input parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/DecoderNLS.cs b/src/libraries/System.Private.CoreLib/src/System/Text/DecoderNLS.cs index 6c640af1cbef73..b93c99ebfe5734 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/DecoderNLS.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/DecoderNLS.cs @@ -46,13 +46,9 @@ public override int GetCharCount(byte[] bytes, int index, int count) return GetCharCount(bytes, index, count, false); } - public override unsafe int GetCharCount(byte[] bytes, int index, int count, bool flush) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count, bool flush) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -66,13 +62,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count, bool return GetCharCount(pBytes + index, count, flush); } - public override unsafe int GetCharCount(byte* bytes, int count, bool flush) + public override unsafe int GetCharCount(byte* bytes!!, int count, bool flush) { // Validate parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -92,14 +84,10 @@ public override int GetChars(byte[] bytes, int byteIndex, int byteCount, return GetChars(bytes, byteIndex, byteCount, chars, charIndex, false); } - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, bool flush) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, bool flush) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -122,14 +110,10 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, pChars + charIndex, charCount, flush); } - public override unsafe int GetChars(byte* bytes, int byteCount, - char* chars, int charCount, bool flush) + public override unsafe int GetChars(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -145,15 +129,11 @@ public override unsafe int GetChars(byte* bytes, int byteCount, // This method is used when the output buffer might not be big enough. // Just call the pointer version. (This gets chars) - public override unsafe void Convert(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, int charCount, bool flush, - out int bytesUsed, out int charsUsed, out bool completed) + public override unsafe void Convert(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, int charCount, bool flush, + out int bytesUsed, out int charsUsed, out bool completed) { // Validate parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/DecoderReplacementFallback.cs b/src/libraries/System.Private.CoreLib/src/System/Text/DecoderReplacementFallback.cs index 34270ba3c30ade..d19f9c008572a6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/DecoderReplacementFallback.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/DecoderReplacementFallback.cs @@ -18,11 +18,8 @@ public DecoderReplacementFallback() : this("?") { } - public DecoderReplacementFallback(string replacement) + public DecoderReplacementFallback(string replacement!!) { - if (replacement == null) - throw new ArgumentNullException(nameof(replacement)); - // Make sure it doesn't have bad surrogate pairs bool bFoundHigh = false; foreach (char c in replacement) diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/Encoder.cs b/src/libraries/System.Private.CoreLib/src/System/Text/Encoder.cs index 04c3bd93fa09f9..fd64dac3881d22 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/Encoder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/Encoder.cs @@ -33,8 +33,7 @@ public EncoderFallback? Fallback get => _fallback; set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); // Can't change fallback if buffer is wrong if (_fallbackBuffer != null && _fallbackBuffer.Remaining > 0) @@ -97,13 +96,9 @@ public virtual void Reset() // unfortunately for existing overrides, it has to call the [] version, // which is really slow, so avoid this method if you might be calling external encodings. [CLSCompliant(false)] - public virtual unsafe int GetByteCount(char* chars, int count, bool flush) + public virtual unsafe int GetByteCount(char* chars!!, int count, bool flush) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -164,14 +159,10 @@ public abstract int GetBytes(char[] chars, int charIndex, int charCount, // could easily overflow our output buffer. Therefore we do an extra test // when we copy the buffer so that we don't overflow byteCount either. [CLSCompliant(false)] - public virtual unsafe int GetBytes(char* chars, int charCount, - byte* bytes, int byteCount, bool flush) + public virtual unsafe int GetBytes(char* chars!!, int charCount, + byte* bytes!!, int byteCount, bool flush) { // Validate input parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -228,15 +219,11 @@ public virtual unsafe int GetBytes(ReadOnlySpan chars, Span bytes, b // Note that if all of the input chars are not consumed, then we'll do a /2, which means // that its likely that we didn't consume as many chars as we could have. For some // applications this could be slow. (Like trying to exactly fill an output buffer from a bigger stream) - public virtual void Convert(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public virtual void Convert(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -285,14 +272,11 @@ public virtual void Convert(char[] chars, int charIndex, int charCount, // that its likely that we didn't consume as many chars as we could have. For some // applications this could be slow. (Like trying to exactly fill an output buffer from a bigger stream) [CLSCompliant(false)] - public virtual unsafe void Convert(char* chars, int charCount, - byte* bytes, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public virtual unsafe void Convert(char* chars!!, int charCount, + byte* bytes!!, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate input parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/EncoderNLS.cs b/src/libraries/System.Private.CoreLib/src/System/Text/EncoderNLS.cs index 9a1d340ae6617d..e56ef58bd0a66e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/EncoderNLS.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/EncoderNLS.cs @@ -42,13 +42,9 @@ public override void Reset() _fallbackBuffer.Reset(); } - public override unsafe int GetByteCount(char[] chars, int index, int count, bool flush) + public override unsafe int GetByteCount(char[] chars!!, int index, int count, bool flush) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -66,13 +62,9 @@ public override unsafe int GetByteCount(char[] chars, int index, int count, bool return result; } - public override unsafe int GetByteCount(char* chars, int count, bool flush) + public override unsafe int GetByteCount(char* chars!!, int count, bool flush) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -83,14 +75,10 @@ public override unsafe int GetByteCount(char* chars, int count, bool flush) return _encoding.GetByteCount(chars, count, this); } - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, bool flush) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -114,13 +102,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, pBytes + byteIndex, byteCount, flush); } - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -133,15 +117,11 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // This method is used when your output buffer might not be large enough for the entire result. // Just call the pointer version. (This gets bytes) - public override unsafe void Convert(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public override unsafe void Convert(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -171,14 +151,11 @@ public override unsafe void Convert(char[] chars, int charIndex, int charCount, // This is the version that uses pointers. We call the base encoding worker function // after setting our appropriate internal variables. This is getting bytes - public override unsafe void Convert(char* chars, int charCount, - byte* bytes, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public override unsafe void Convert(char* chars!!, int charCount, + byte* bytes!!, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate input parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/EncoderReplacementFallback.cs b/src/libraries/System.Private.CoreLib/src/System/Text/EncoderReplacementFallback.cs index 709695ce36dd11..376e865d7b15f0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/EncoderReplacementFallback.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/EncoderReplacementFallback.cs @@ -18,12 +18,8 @@ public EncoderReplacementFallback() : this("?") { } - public EncoderReplacementFallback(string replacement) + public EncoderReplacementFallback(string replacement!!) { - // Must not be null - if (replacement == null) - throw new ArgumentNullException(nameof(replacement)); - // Make sure it doesn't have bad surrogate pairs bool bFoundHigh = false; foreach (char c in replacement) diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/Encoding.cs b/src/libraries/System.Private.CoreLib/src/System/Text/Encoding.cs index b236e125e73aaa..731a8c92cceeab 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/Encoding.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/Encoding.cs @@ -175,12 +175,8 @@ internal virtual void SetDefaultFallbacks() // dstEncoding, and the returned value is a new byte array // containing the result of the conversion. // - public static byte[] Convert(Encoding srcEncoding, Encoding dstEncoding, - byte[] bytes) + public static byte[] Convert(Encoding srcEncoding, Encoding dstEncoding, byte[] bytes!!) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes)); - return Convert(srcEncoding, dstEncoding, bytes, 0, bytes.Length); } @@ -189,20 +185,9 @@ public static byte[] Convert(Encoding srcEncoding, Encoding dstEncoding, // index index from srcEncoding to dstEncoding, and // returns a new byte array containing the result of the conversion. // - public static byte[] Convert(Encoding srcEncoding, Encoding dstEncoding, - byte[] bytes, int index, int count) + public static byte[] Convert(Encoding srcEncoding!!, Encoding dstEncoding!!, + byte[] bytes!!, int index, int count) { - if (srcEncoding == null || dstEncoding == null) - { - throw new ArgumentNullException(srcEncoding == null ? nameof(srcEncoding) : nameof(dstEncoding), - SR.ArgumentNull_Array); - } - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - } - return dstEncoding.GetBytes(srcEncoding.GetChars(bytes, index, count)); } @@ -491,8 +476,7 @@ public EncoderFallback EncoderFallback if (this.IsReadOnly) throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); encoderFallback = value; } @@ -506,8 +490,7 @@ public DecoderFallback DecoderFallback if (this.IsReadOnly) throw new InvalidOperationException(SR.InvalidOperation_ReadOnly); - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); decoderFallback = value; } @@ -539,14 +522,8 @@ public bool IsReadOnly // Returns the number of bytes required to encode the given character // array. // - public virtual int GetByteCount(char[] chars) + public virtual int GetByteCount(char[] chars!!) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - } - return GetByteCount(chars, 0, chars.Length); } @@ -568,11 +545,8 @@ public virtual int GetByteCount(string s) // Returns the number of bytes required to encode a string range. // - public int GetByteCount(string s, int index, int count) + public int GetByteCount(string s!!, int index, int count) { - if (s == null) - throw new ArgumentNullException(nameof(s), - SR.ArgumentNull_String); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -597,13 +571,9 @@ public int GetByteCount(string s, int index, int count) // which is really slow, so this method should be avoided if you're calling // a 3rd party encoding. [CLSCompliant(false)] - public virtual unsafe int GetByteCount(char* chars, int count) + public virtual unsafe int GetByteCount(char* chars!!, int count) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -624,13 +594,8 @@ public virtual unsafe int GetByteCount(ReadOnlySpan chars) // Returns a byte array containing the encoded representation of the given // character array. // - public virtual byte[] GetBytes(char[] chars) + public virtual byte[] GetBytes(char[] chars!!) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars), - SR.ArgumentNull_Array); - } return GetBytes(chars, 0, chars.Length); } @@ -659,12 +624,8 @@ public abstract int GetBytes(char[] chars, int charIndex, int charCount, // Returns a byte array containing the encoded representation of the given // string. // - public virtual byte[] GetBytes(string s) + public virtual byte[] GetBytes(string s!!) { - if (s == null) - throw new ArgumentNullException(nameof(s), - SR.ArgumentNull_String); - int byteCount = GetByteCount(s); byte[] bytes = new byte[byteCount]; int bytesReceived = GetBytes(s, 0, s.Length, bytes, 0); @@ -675,11 +636,8 @@ public virtual byte[] GetBytes(string s) // Returns a byte array containing the encoded representation of the given // string range. // - public byte[] GetBytes(string s, int index, int count) + public byte[] GetBytes(string s!!, int index, int count) { - if (s == null) - throw new ArgumentNullException(nameof(s), - SR.ArgumentNull_String); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -738,14 +696,10 @@ public virtual int GetBytes(string s, int charIndex, int charCount, // when we copy the buffer so that we don't overflow byteCount either. [CLSCompliant(false)] - public virtual unsafe int GetBytes(char* chars, int charCount, - byte* bytes, int byteCount) + public virtual unsafe int GetBytes(char* chars!!, int charCount, + byte* bytes!!, int byteCount) { // Validate input parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), - SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -787,13 +741,8 @@ public virtual unsafe int GetBytes(ReadOnlySpan chars, Span bytes) // Returns the number of characters produced by decoding the given byte // array. // - public virtual int GetCharCount(byte[] bytes) + public virtual int GetCharCount(byte[] bytes!!) { - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - } return GetCharCount(bytes, 0, bytes.Length); } @@ -805,13 +754,9 @@ public virtual int GetCharCount(byte[] bytes) // We expect this to be the workhorse for NLS Encodings, but for existing // ones we need a working (if slow) default implementation) [CLSCompliant(false)] - public virtual unsafe int GetCharCount(byte* bytes, int count) + public virtual unsafe int GetCharCount(byte* bytes!!, int count) { // Validate input parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -832,13 +777,8 @@ public virtual unsafe int GetCharCount(ReadOnlySpan bytes) // Returns a character array containing the decoded representation of a // given byte array. // - public virtual char[] GetChars(byte[] bytes) + public virtual char[] GetChars(byte[] bytes!!) { - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - } return GetChars(bytes, 0, bytes.Length); } @@ -883,14 +823,10 @@ public abstract int GetChars(byte[] bytes, int byteIndex, int byteCount, // when we copy the buffer so that we don't overflow charCount either. [CLSCompliant(false)] - public virtual unsafe int GetChars(byte* bytes, int byteCount, - char* chars, int charCount) + public virtual unsafe int GetChars(byte* bytes!!, int byteCount, + char* chars!!, int charCount) { // Validate input parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), - SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException(byteCount < 0 ? nameof(byteCount) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -930,11 +866,8 @@ public virtual unsafe int GetChars(ReadOnlySpan bytes, Span chars) } [CLSCompliant(false)] - public unsafe string GetString(byte* bytes, int byteCount) + public unsafe string GetString(byte* bytes!!, int byteCount) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (byteCount < 0) throw new ArgumentOutOfRangeException(nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -1026,12 +959,8 @@ public virtual bool IsAlwaysNormalized(NormalizationForm form) => // Returns a string containing the decoded representation of a given byte // array. // - public virtual string GetString(byte[] bytes) + public virtual string GetString(byte[] bytes!!) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), - SR.ArgumentNull_Array); - return GetString(bytes, 0, bytes.Length); } @@ -1109,23 +1038,8 @@ public override int GetHashCode() => /// is full-duplex, the returned will be as well. However, the returned /// is not seekable, even if 's property returns . /// - public static Stream CreateTranscodingStream(Stream innerStream, Encoding innerStreamEncoding, Encoding outerStreamEncoding, bool leaveOpen = false) + public static Stream CreateTranscodingStream(Stream innerStream!!, Encoding innerStreamEncoding!!, Encoding outerStreamEncoding!!, bool leaveOpen = false) { - if (innerStream is null) - { - throw new ArgumentNullException(nameof(innerStream)); - } - - if (innerStreamEncoding is null) - { - throw new ArgumentNullException(nameof(innerStreamEncoding)); - } - - if (outerStreamEncoding is null) - { - throw new ArgumentNullException(nameof(outerStreamEncoding)); - } - // We can't entirely optimize away the case where innerStreamEncoding == outerStreamEncoding. For example, // the Encoding might perform a lossy conversion when it sees invalid data, so we still need to call it // to perform basic validation. It's also possible that somebody subclassed one of the built-in types diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingInfo.cs index 55a0bd3de6af9b..6eeddcb74af5aa 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingInfo.cs @@ -15,13 +15,8 @@ public sealed class EncodingInfo /// The encoding name /// The encoding display name /// - public EncodingInfo(EncodingProvider provider, int codePage, string name, string displayName) : this(codePage, name, displayName) + public EncodingInfo(EncodingProvider provider!!, int codePage, string name!!, string displayName!!) : this(codePage, name, displayName) { - if (name == null || displayName == null || provider == null) - { - throw new ArgumentNullException(name == null ? nameof(name) : (displayName == null ? nameof(displayName) : nameof(provider))); - } - Provider = provider; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingProvider.cs b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingProvider.cs index 3e8723c9fcab57..b380c2b01ca9c2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingProvider.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingProvider.cs @@ -43,13 +43,8 @@ public EncodingProvider() { } public virtual IEnumerable GetEncodings() => Array.Empty(); - internal static void AddProvider(EncodingProvider provider) + internal static void AddProvider(EncodingProvider provider!!) { - if (provider is null) - { - throw new ArgumentNullException(nameof(provider)); - } - // Few providers are added in a typical app (typically just CodePagesEncodingProvider.Instance), and when they are, // they're generally not added concurrently. So use an optimistic concurrency scheme rather than paying for a lock // object allocation on the startup path. diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingTable.cs b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingTable.cs index bdf608fc76b6e7..d548f5f405152c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/EncodingTable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/EncodingTable.cs @@ -28,11 +28,8 @@ internal static partial class EncodingTable ** internalGetCodePageFromName will throw ArgumentException if name is not a valid encoding name. ============================================================================*/ - internal static int GetCodePageFromName(string name) + internal static int GetCodePageFromName(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - object? codePageObj = s_nameToCodePage[name]; if (codePageObj != null) diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/StringBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Text/StringBuilder.cs index 8a8d6a93b57948..3a79d8c8f0e4f9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/StringBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/StringBuilder.cs @@ -181,13 +181,8 @@ public StringBuilder(int capacity, int maxCapacity) m_ChunkChars = GC.AllocateUninitializedArray(capacity); } - private StringBuilder(SerializationInfo info, StreamingContext context) + private StringBuilder(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - int persistedCapacity = 0; string? persistedString = null; int persistedMaxCapacity = int.MaxValue; @@ -244,13 +239,8 @@ private StringBuilder(SerializationInfo info, StreamingContext context) AssertInvariants(); } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - AssertInvariants(); info.AddValue(MaxCapacityField, m_MaxCapacity); info.AddValue(CapacityField, Capacity); @@ -758,7 +748,7 @@ public StringBuilder Append(char[]? value, int startIndex, int charCount) return this; } - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } if (charCount > value.Length - startIndex) { @@ -810,7 +800,7 @@ public StringBuilder Append(string? value, int startIndex, int count) { return this; } - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } if (count != 0) @@ -853,7 +843,7 @@ public StringBuilder Append(StringBuilder? value, int startIndex, int count) { return this; } - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.Throw(nameof(value)); } if (count == 0) @@ -909,13 +899,8 @@ public StringBuilder AppendLine(string? value) return Append(Environment.NewLine); } - public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count) + public void CopyTo(int sourceIndex, char[] destination!!, int destinationIndex, int count) { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - if (destinationIndex < 0) { throw new ArgumentOutOfRangeException(nameof(destinationIndex), SR.Format(SR.ArgumentOutOfRange_MustBeNonNegNum, nameof(destinationIndex))); @@ -981,7 +966,9 @@ public void CopyTo(int sourceIndex, Span destination, int count) /// The index to insert in this builder. /// The string to insert. /// The number of times to insert the string. - public StringBuilder Insert(int index, string? value, int count) + public StringBuilder Insert(int index, string? value, int count) => Insert(index, value.AsSpan(), count); + + private StringBuilder Insert(int index, ReadOnlySpan value, int count) { if (count < 0) { @@ -994,7 +981,7 @@ public StringBuilder Insert(int index, string? value, int count) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); } - if (string.IsNullOrEmpty(value) || count == 0) + if (value.IsEmpty || count == 0) { return this; } @@ -1012,7 +999,7 @@ public StringBuilder Insert(int index, string? value, int count) while (count > 0) { - ReplaceInPlaceAtChunk(ref chunk!, ref indexInChunk, ref value.GetRawStringData(), value.Length); + ReplaceInPlaceAtChunk(ref chunk!, ref indexInChunk, ref MemoryMarshal.GetReference(value), value.Length); --count; } @@ -1290,17 +1277,25 @@ public StringBuilder Insert(int index, string? value) return this; } - public StringBuilder Insert(int index, bool value) => Insert(index, value.ToString(), 1); +#pragma warning disable CA1830 // Prefer strongly-typed Append and Insert method overloads on StringBuilder. No need to fix for the builder itself + // bool does not implement ISpanFormattable but its ToString override returns cached strings. + public StringBuilder Insert(int index, bool value) => Insert(index, value.ToString().AsSpan(), 1); +#pragma warning restore CA1830 [CLSCompliant(false)] - public StringBuilder Insert(int index, sbyte value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, sbyte value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, byte value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, byte value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, short value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, short value) => InsertSpanFormattable(index, value); public StringBuilder Insert(int index, char value) { + if ((uint)index > (uint)Length) + { + throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); + } + Insert(index, ref value, 1); return this; } @@ -1314,7 +1309,7 @@ public StringBuilder Insert(int index, char[]? value) if (value != null) { - Insert(index, value, 0, value.Length); + Insert(index, ref MemoryMarshal.GetArrayDataReference(value), value.Length); } return this; } @@ -1333,7 +1328,7 @@ public StringBuilder Insert(int index, char[]? value, int startIndex, int charCo { return this; } - throw new ArgumentNullException(nameof(value), SR.ArgumentNull_String); + ArgumentNullException.Throw(nameof(value)); } if (startIndex < 0) @@ -1359,24 +1354,24 @@ public StringBuilder Insert(int index, char[]? value, int startIndex, int charCo return this; } - public StringBuilder Insert(int index, int value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, int value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, long value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, long value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, float value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, float value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, double value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, double value) => InsertSpanFormattable(index, value); - public StringBuilder Insert(int index, decimal value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, decimal value) => InsertSpanFormattable(index, value); [CLSCompliant(false)] - public StringBuilder Insert(int index, ushort value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, ushort value) => InsertSpanFormattable(index, value); [CLSCompliant(false)] - public StringBuilder Insert(int index, uint value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, uint value) => InsertSpanFormattable(index, value); [CLSCompliant(false)] - public StringBuilder Insert(int index, ulong value) => Insert(index, value.ToString(), 1); + public StringBuilder Insert(int index, ulong value) => InsertSpanFormattable(index, value); public StringBuilder Insert(int index, object? value) => (value == null) ? this : Insert(index, value.ToString(), 1); @@ -1395,6 +1390,21 @@ public StringBuilder Insert(int index, ReadOnlySpan value) return this; } + private StringBuilder InsertSpanFormattable(int index, T value) where T : ISpanFormattable + { + Debug.Assert(typeof(T).Assembly.Equals(typeof(object).Assembly), "Implementation trusts the results of TryFormat because T is expected to be something known"); + + Span buffer = stackalloc char[256]; + if (value.TryFormat(buffer, out int charsWritten, format: default, provider: null)) + { + // We don't use Insert(int, ReadOnlySpan) for exception compatibility; + // we want exceeding the maximum capacity to throw an OutOfMemoryException. + return Insert(index, buffer.Slice(0, charsWritten), 1); + } + + return Insert(index, value.ToString(), 1); + } + public StringBuilder AppendFormat(string format, object? arg0) => AppendFormatHelper(null, format, new ParamsArray(arg0)); public StringBuilder AppendFormat(string format, object? arg0, object? arg1) => AppendFormatHelper(null, format, new ParamsArray(arg0, arg1)); @@ -1403,12 +1413,11 @@ public StringBuilder Insert(int index, ReadOnlySpan value) public StringBuilder AppendFormat(string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in AppendFormatHelper. - string paramName = (format == null) ? nameof(format) : nameof(args); - throw new ArgumentNullException(paramName); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } return AppendFormatHelper(null, format, new ParamsArray(args)); @@ -1422,12 +1431,11 @@ public StringBuilder AppendFormat(string format, params object?[] args) public StringBuilder AppendFormat(IFormatProvider? provider, string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in AppendFormatHelper. - string paramName = (format == null) ? nameof(format) : nameof(args); - throw new ArgumentNullException(paramName); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } return AppendFormatHelper(provider, format, new ParamsArray(args)); @@ -1442,13 +1450,8 @@ private static void FormatError() private const int IndexLimit = 1000000; // Note: 0 <= ArgIndex < IndexLimit private const int WidthLimit = 1000000; // Note: -WidthLimit < ArgAlign < WidthLimit - internal StringBuilder AppendFormatHelper(IFormatProvider? provider, string format, ParamsArray args) + internal StringBuilder AppendFormatHelper(IFormatProvider? provider, string format!!, ParamsArray args) { - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - int pos = 0; int len = format.Length; char ch = '\x0'; @@ -2066,10 +2069,7 @@ private void AppendWithExpansion(ref char value, int valueCount) /// The number of characters in the buffer. private void Insert(int index, ref char value, int valueCount) { - if ((uint)index > (uint)Length) - { - throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); - } + Debug.Assert((uint)index <= (uint)Length, "Callers should check that index is a legal value."); if (valueCount > 0) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/UTF32Encoding.cs b/src/libraries/System.Private.CoreLib/src/System/Text/UTF32Encoding.cs index 28b0161b18fe85..f566622ce70acf 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/UTF32Encoding.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/UTF32Encoding.cs @@ -90,12 +90,9 @@ internal override void SetDefaultFallbacks() // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetByteCount(char[] chars, int index, int count) + public override unsafe int GetByteCount(char[] chars!!, int index, int count) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -133,12 +130,9 @@ public override unsafe int GetByteCount(string s) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetByteCount(char* chars, int count) + public override unsafe int GetByteCount(char* chars!!, int count) { // Validate Parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -151,12 +145,9 @@ public override unsafe int GetByteCount(char* chars, int count) // So if you fix this, fix the others. Currently those include: // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding - public override unsafe int GetBytes(string s, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(string s!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { - if (s == null || bytes == null) - throw new ArgumentNullException(s == null ? nameof(s) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -186,13 +177,10 @@ public override unsafe int GetBytes(string s, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -219,12 +207,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -239,12 +224,9 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetCharCount(byte[] bytes, int index, int count) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -265,12 +247,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetCharCount(byte* bytes, int count) + public override unsafe int GetCharCount(byte* bytes!!, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -282,13 +261,10 @@ public override unsafe int GetCharCount(byte* bytes, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -315,12 +291,9 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int charCount) + public override unsafe int GetChars(byte* bytes!!, int byteCount, char* chars!!, int charCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -335,12 +308,9 @@ public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe string GetString(byte[] bytes, int index, int count) + public override unsafe string GetString(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/UTF7Encoding.cs b/src/libraries/System.Private.CoreLib/src/System/Text/UTF7Encoding.cs index 6ed4be774f714c..118e1d6f5c600e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/UTF7Encoding.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/UTF7Encoding.cs @@ -133,12 +133,9 @@ public override int GetHashCode() // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetByteCount(char[] chars, int index, int count) + public override unsafe int GetByteCount(char[] chars!!, int index, int count) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -176,12 +173,9 @@ public override unsafe int GetByteCount(string s) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetByteCount(char* chars, int count) + public override unsafe int GetByteCount(char* chars!!, int count) { // Validate Parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -194,12 +188,9 @@ public override unsafe int GetByteCount(char* chars, int count) // So if you fix this, fix the others. Currently those include: // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding - public override unsafe int GetBytes(string s, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(string s!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { - if (s == null || bytes == null) - throw new ArgumentNullException(s == null ? nameof(s) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -229,13 +220,10 @@ public override unsafe int GetBytes(string s, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -262,12 +250,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -282,12 +267,9 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetCharCount(byte[] bytes, int index, int count) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -308,12 +290,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetCharCount(byte* bytes, int count) + public override unsafe int GetCharCount(byte* bytes!!, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -325,13 +304,10 @@ public override unsafe int GetCharCount(byte* bytes, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -358,12 +334,9 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int charCount) + public override unsafe int GetChars(byte* bytes!!, int byteCount, char* chars!!, int charCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -378,12 +351,9 @@ public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe string GetString(byte[] bytes, int index, int count) + public override unsafe string GetString(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/UnicodeEncoding.cs b/src/libraries/System.Private.CoreLib/src/System/Text/UnicodeEncoding.cs index 50faeb94ea26e7..c33944c33585c5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/UnicodeEncoding.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/UnicodeEncoding.cs @@ -83,12 +83,9 @@ internal sealed override void SetDefaultFallbacks() // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetByteCount(char[] chars, int index, int count) + public override unsafe int GetByteCount(char[] chars!!, int index, int count) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -126,12 +123,9 @@ public override unsafe int GetByteCount(string s) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetByteCount(char* chars, int count) + public override unsafe int GetByteCount(char* chars!!, int count) { // Validate Parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -144,12 +138,9 @@ public override unsafe int GetByteCount(char* chars, int count) // So if you fix this, fix the others. Currently those include: // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding - public override unsafe int GetBytes(string s, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(string s!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { - if (s == null || bytes == null) - throw new ArgumentNullException(s == null ? nameof(s) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -179,13 +170,10 @@ public override unsafe int GetBytes(string s, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException(charIndex < 0 ? nameof(charIndex) : nameof(charCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -212,12 +200,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -232,12 +217,9 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetCharCount(byte[] bytes, int index, int count) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -258,12 +240,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetCharCount(byte* bytes, int count) + public override unsafe int GetCharCount(byte* bytes!!, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -275,13 +254,10 @@ public override unsafe int GetCharCount(byte* bytes, int count) // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -308,12 +284,9 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding [CLSCompliant(false)] - public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int charCount) + public override unsafe int GetChars(byte* bytes!!, int byteCount, char* chars!!, int charCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException(charCount < 0 ? nameof(charCount) : nameof(byteCount), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -328,12 +301,9 @@ public override unsafe int GetChars(byte* bytes, int byteCount, char* chars, int // EncodingNLS, UTF7Encoding, UTF8Encoding, UTF32Encoding, ASCIIEncoding, UnicodeEncoding // parent method is safe - public override unsafe string GetString(byte[] bytes, int index, int count) + public override unsafe string GetString(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Private.CoreLib/src/System/Text/ValueStringBuilder.AppendFormat.cs b/src/libraries/System.Private.CoreLib/src/System/Text/ValueStringBuilder.AppendFormat.cs index d11eae6ce47b9e..694da5d7c082da 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Text/ValueStringBuilder.AppendFormat.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Text/ValueStringBuilder.AppendFormat.cs @@ -13,12 +13,11 @@ internal ref partial struct ValueStringBuilder public void AppendFormat(string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in AppendFormatHelper. - string paramName = (format == null) ? nameof(format) : nameof(args); - throw new ArgumentNullException(paramName); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } AppendFormatHelper(null, format, new ParamsArray(args)); @@ -32,12 +31,11 @@ public void AppendFormat(string format, params object?[] args) public void AppendFormat(IFormatProvider? provider, string format, params object?[] args) { - if (args == null) + if (args is null) { // To preserve the original exception behavior, throw an exception about format if both // args and format are null. The actual null check for format is in AppendFormatHelper. - string paramName = (format == null) ? nameof(format) : nameof(args); - throw new ArgumentNullException(paramName); + ArgumentNullException.Throw(format is null ? nameof(format) : nameof(args)); } AppendFormatHelper(provider, format, new ParamsArray(args)); @@ -57,17 +55,12 @@ internal void AppendSpanFormattable(T value, string? format, IFormatProvider? // Copied from StringBuilder, can't be done via generic extension // as ValueStringBuilder is a ref struct and cannot be used in a generic. - internal void AppendFormatHelper(IFormatProvider? provider, string format, ParamsArray args) + internal void AppendFormatHelper(IFormatProvider? provider, string format!!, ParamsArray args) { // Undocumented exclusive limits on the range for Argument Hole Index and Argument Hole Alignment. const int IndexLimit = 1000000; // Note: 0 <= ArgIndex < IndexLimit const int WidthLimit = 1000000; // Note: -WidthLimit < ArgAlign < WidthLimit - if (format == null) - { - throw new ArgumentNullException(nameof(format)); - } - int pos = 0; int len = format.Length; char ch = '\0'; diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs index 27f29cb0dd9498..f7d4f44796bb58 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationToken.cs @@ -154,10 +154,10 @@ public CancellationToken(bool canceled) : this(canceled ? CancellationTokenSourc /// The instance that can /// be used to unregister the callback. /// is null. - public CancellationTokenRegistration Register(Action callback, bool useSynchronizationContext) => + public CancellationTokenRegistration Register(Action callback!!, bool useSynchronizationContext) => Register( (Action)(static obj => ((Action)obj!)()), - callback ?? throw new ArgumentNullException(nameof(callback)), + callback, useSynchronizationContext, useExecutionContext: true); @@ -281,11 +281,8 @@ public CancellationTokenRegistration UnsafeRegister(Action is null. /// The associated CancellationTokenSource has been disposed. - private CancellationTokenRegistration Register(Delegate callback, object? state, bool useSynchronizationContext, bool useExecutionContext) + private CancellationTokenRegistration Register(Delegate callback!!, object? state, bool useSynchronizationContext, bool useExecutionContext) { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - CancellationTokenSource? source = _source; return source != null ? source.Register(callback, state, useSynchronizationContext ? SynchronizationContext.Current : null, useExecutionContext ? ExecutionContext.Capture() : null) : diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationTokenSource.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationTokenSource.cs index 42b9dd61f5328f..3fa24dff5057f8 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationTokenSource.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/CancellationTokenSource.cs @@ -754,14 +754,8 @@ public static CancellationTokenSource CreateLinkedTokenSource(CancellationToken /// The CancellationToken instances to observe. /// A that is linked to the source tokens. /// is null. - public static CancellationTokenSource CreateLinkedTokenSource(params CancellationToken[] tokens) - { - if (tokens == null) - { - throw new ArgumentNullException(nameof(tokens)); - } - - return tokens.Length switch + public static CancellationTokenSource CreateLinkedTokenSource(params CancellationToken[] tokens!!) => + tokens.Length switch { 0 => throw new ArgumentException(SR.CancellationToken_CreateLinkedToken_TokensIsEmpty), 1 => CreateLinkedTokenSource(tokens[0]), @@ -771,7 +765,6 @@ public static CancellationTokenSource CreateLinkedTokenSource(params Cancellatio // hence each item cannot be null itself, and reads of the payloads cannot be torn. _ => new LinkedNCancellationTokenSource(tokens), }; - } private sealed class Linked1CancellationTokenSource : CancellationTokenSource { diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/CompressedStack.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/CompressedStack.cs index be997e3c0965b7..35e10264ea5d34 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/CompressedStack.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/CompressedStack.cs @@ -31,13 +31,8 @@ public static CompressedStack GetCompressedStack() return new CompressedStack(); } - public static void Run(CompressedStack compressedStack, ContextCallback callback, object? state) + public static void Run(CompressedStack compressedStack!!, ContextCallback callback, object? state) { - if (compressedStack == null) - { - throw new ArgumentNullException(nameof(compressedStack)); - } - // The original code was not checking for a null callback and would throw NullReferenceException callback(state); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/SpinWait.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/SpinWait.cs index 66b73f8be02522..4ebd8547287518 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/SpinWait.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/SpinWait.cs @@ -310,10 +310,7 @@ public static bool SpinUntil(Func condition, int millisecondsTimeout) throw new ArgumentOutOfRangeException( nameof(millisecondsTimeout), millisecondsTimeout, SR.SpinWait_SpinUntil_TimeoutWrong); } - if (condition == null) - { - throw new ArgumentNullException(nameof(condition), SR.SpinWait_SpinUntil_ArgumentNull); - } + ArgumentNullException.ThrowIfNull(condition); uint startTime = 0; if (millisecondsTimeout != 0 && millisecondsTimeout != Timeout.Infinite) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/SynchronizationContext.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/SynchronizationContext.cs index b3ed9d1b9691f9..984ba13db2d02e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/SynchronizationContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/SynchronizationContext.cs @@ -42,13 +42,8 @@ public virtual int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTime } [CLSCompliant(false)] - protected static int WaitHelper(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) + protected static int WaitHelper(IntPtr[] waitHandles!!, bool waitAll, int millisecondsTimeout) { - if (waitHandles == null) - { - throw new ArgumentNullException(nameof(waitHandles)); - } - return WaitHandle.WaitMultipleIgnoringSyncContext(waitHandles, waitAll, millisecondsTimeout); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ConcurrentExclusiveSchedulerPair.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ConcurrentExclusiveSchedulerPair.cs index a8d80715ed3fee..380fc307a9fb65 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ConcurrentExclusiveSchedulerPair.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/ConcurrentExclusiveSchedulerPair.cs @@ -96,10 +96,8 @@ public ConcurrentExclusiveSchedulerPair(TaskScheduler taskScheduler, int maxConc /// The target scheduler on which this pair should execute. /// The maximum number of tasks to run concurrently. /// The maximum number of tasks to process for each underlying scheduled task used by the pair. - public ConcurrentExclusiveSchedulerPair(TaskScheduler taskScheduler, int maxConcurrencyLevel, int maxItemsPerTask) + public ConcurrentExclusiveSchedulerPair(TaskScheduler taskScheduler!!, int maxConcurrencyLevel, int maxItemsPerTask) { - // Validate arguments - if (taskScheduler == null) throw new ArgumentNullException(nameof(taskScheduler)); if (maxConcurrencyLevel == 0 || maxConcurrencyLevel < -1) throw new ArgumentOutOfRangeException(nameof(maxConcurrencyLevel)); if (maxItemsPerTask == 0 || maxItemsPerTask < -1) throw new ArgumentOutOfRangeException(nameof(maxItemsPerTask)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Sources/ManualResetValueTaskSourceCore.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Sources/ManualResetValueTaskSourceCore.cs index dc1fa4eb546488..12321fbec693db 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Sources/ManualResetValueTaskSourceCore.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Sources/ManualResetValueTaskSourceCore.cs @@ -115,12 +115,8 @@ private void ThrowForFailedGetResult(short token) /// The state object to pass to when it's invoked. /// Opaque value that was provided to the 's constructor. /// The flags describing the behavior of the continuation. - public void OnCompleted(Action continuation, object? state, short token, ValueTaskSourceOnCompletedFlags flags) + public void OnCompleted(Action continuation!!, object? state, short token, ValueTaskSourceOnCompletedFlags flags) { - if (continuation == null) - { - throw new ArgumentNullException(nameof(continuation)); - } ValidateToken(token); if ((flags & ValueTaskSourceOnCompletedFlags.FlowExecutionContext) != 0) 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 6b5c05d37231bd..91ccb46db95ed3 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 @@ -6215,8 +6215,7 @@ public static Task WhenAny(params Task[] tasks) /// /// The or argument was null. /// - public static Task WhenAny(Task task1, Task task2) => - (task1 is null) || (task2 is null) ? throw new ArgumentNullException(task1 is null ? nameof(task1) : nameof(task2)) : + public static Task WhenAny(Task task1!!, Task task2!!) => task1.IsCompleted ? FromResult(task1) : task2.IsCompleted ? FromResult(task2) : new TwoTaskWhenAnyPromise(task1, task2); @@ -6408,8 +6407,7 @@ public static Task> WhenAny(params Task[] tasks) /// /// The or argument was null. /// - public static Task> WhenAny(Task task1, Task task2) => - (task1 is null) || (task2 is null) ? throw new ArgumentNullException(task1 is null ? nameof(task1) : nameof(task2)) : + public static Task> WhenAny(Task task1!!, Task task2!!) => task1.IsCompleted ? FromResult(task1) : task2.IsCompleted ? FromResult(task2) : new TwoTaskWhenAnyPromise>(task1, task2); diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskExtensions.cs index ca622b686d813d..05704234f6cb97 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskExtensions.cs @@ -9,39 +9,23 @@ public static class TaskExtensions /// Creates a proxy that represents the asynchronous operation of a . /// The to unwrap. /// A that represents the asynchronous operation of the provided . - public static Task Unwrap(this Task task) - { - if (task == null) - { - throw new ArgumentNullException(nameof(task)); - } - + public static Task Unwrap(this Task task!!) => // If the task hasn't completed or was faulted/canceled, wrap it in an unwrap promise. Otherwise, // it completed successfully. Return its inner task to avoid unnecessary wrapping, or if the inner // task is null, return a canceled task to match the same semantics as CreateUnwrapPromise. - return - !task.IsCompletedSuccessfully ? Task.CreateUnwrapPromise(task, lookForOce: false) : - task.Result ?? - Task.FromCanceled(new CancellationToken(true)); - } + !task.IsCompletedSuccessfully ? Task.CreateUnwrapPromise(task, lookForOce: false) : + task.Result ?? + Task.FromCanceled(new CancellationToken(true)); /// Creates a proxy that represents the asynchronous operation of a wrapped . /// The wrapped to unwrap. /// A that represents the asynchronous operation of the provided wrapped . - public static Task Unwrap(this Task> task) - { - if (task == null) - { - throw new ArgumentNullException(nameof(task)); - } - + public static Task Unwrap(this Task> task!!) => // If the task hasn't completed or was faulted/canceled, wrap it in an unwrap promise. Otherwise, // it completed successfully. Return its inner task to avoid unnecessary wrapping, or if the inner // task is null, return a canceled task to match the same semantics as CreateUnwrapPromise. - return - !task.IsCompletedSuccessfully ? Task.CreateUnwrapPromise(task, lookForOce: false) : - task.Result ?? - Task.FromCanceled(new CancellationToken(true)); - } + !task.IsCompletedSuccessfully ? Task.CreateUnwrapPromise(task, lookForOce: false) : + task.Result ?? + Task.FromCanceled(new CancellationToken(true)); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskFactory.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskFactory.cs index 9156d4fcdb9a82..cdbf52ed8099f3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskFactory.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskFactory.cs @@ -1678,6 +1678,7 @@ internal static Task[]> CommonCWAllLogic(Task[] tasksCopy) return promise; } + /// /// Creates a continuation Task /// that will be started upon the completion of a set of provided Tasks. @@ -1694,14 +1695,11 @@ internal static Task[]> CommonCWAllLogic(Task[] tasksCopy) /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAll(Task[] tasks, Action continuationAction) + public Task ContinueWhenAll(Task[] tasks, Action continuationAction!!) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } - /// /// Creates a continuation Task /// that will be started upon the completion of a set of provided Tasks. @@ -1723,10 +1721,8 @@ public Task ContinueWhenAll(Task[] tasks, Action continuationAction) /// The provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAll(Task[] tasks, Action continuationAction, CancellationToken cancellationToken) + public Task ContinueWhenAll(Task[] tasks, Action continuationAction!!, CancellationToken cancellationToken) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -1757,10 +1753,8 @@ public Task ContinueWhenAll(Task[] tasks, Action continuationAction, Can /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Action continuationAction, TaskContinuationOptions continuationOptions) + public Task ContinueWhenAll(Task[] tasks, Action continuationAction!!, TaskContinuationOptions continuationOptions) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -1801,11 +1795,9 @@ public Task ContinueWhenAll(Task[] tasks, Action continuationAction, Tas /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Action continuationAction, CancellationToken cancellationToken, + public Task ContinueWhenAll(Task[] tasks, Action continuationAction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, cancellationToken, scheduler); } @@ -1826,10 +1818,8 @@ public Task ContinueWhenAll(Task[] tasks, Action continuationAction, Can /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction) + public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction!!) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -1856,11 +1846,9 @@ public Task ContinueWhenAll(Task[] tasks, /// The provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction, + public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction!!, CancellationToken cancellationToken) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -1892,11 +1880,9 @@ public Task ContinueWhenAll(Task[] tasks, /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction, + public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction!!, TaskContinuationOptions continuationOptions) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -1938,11 +1924,9 @@ public Task ContinueWhenAll(Task[] tasks, /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction, + public Task ContinueWhenAll(Task[] tasks, Action[]> continuationAction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAllImpl(tasks, null, continuationAction, continuationOptions, cancellationToken, scheduler); } @@ -1966,10 +1950,8 @@ public Task ContinueWhenAll(Task[] tasks, /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAll(Task[] tasks, Func continuationFunction) + public Task ContinueWhenAll(Task[] tasks, Func continuationFunction!!) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -1999,10 +1981,8 @@ public Task ContinueWhenAll(Task[] tasks, FuncThe provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAll(Task[] tasks, Func continuationFunction, CancellationToken cancellationToken) + public Task ContinueWhenAll(Task[] tasks, Func continuationFunction!!, CancellationToken cancellationToken) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2037,10 +2017,8 @@ public Task ContinueWhenAll(Task[] tasks, FuncTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Func continuationFunction, TaskContinuationOptions continuationOptions) + public Task ContinueWhenAll(Task[] tasks, Func continuationFunction!!, TaskContinuationOptions continuationOptions) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2085,11 +2063,9 @@ public Task ContinueWhenAll(Task[] tasks, FuncTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Func continuationFunction, CancellationToken cancellationToken, + public Task ContinueWhenAll(Task[] tasks, Func continuationFunction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler); } @@ -2115,10 +2091,8 @@ public Task ContinueWhenAll(Task[] tasks, Func array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction) + public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction!!) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2148,11 +2122,9 @@ public Task ContinueWhenAll(TaskThe provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction, + public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction!!, CancellationToken cancellationToken) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2188,11 +2160,9 @@ public Task ContinueWhenAll(TaskTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction, + public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction!!, TaskContinuationOptions continuationOptions) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2238,11 +2208,9 @@ public Task ContinueWhenAll(TaskTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAll. /// - public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction, + public Task ContinueWhenAll(Task[] tasks, Func[], TResult> continuationFunction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAllImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler); } @@ -2414,10 +2382,8 @@ internal static void CommonCWAnyLogicCleanup(Task continuation) /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAny(Task[] tasks, Action continuationAction) + public Task ContinueWhenAny(Task[] tasks, Action continuationAction!!) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2442,10 +2408,8 @@ public Task ContinueWhenAny(Task[] tasks, Action continuationAction) /// The provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAny(Task[] tasks, Action continuationAction, CancellationToken cancellationToken) + public Task ContinueWhenAny(Task[] tasks, Action continuationAction!!, CancellationToken cancellationToken) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2476,10 +2440,8 @@ public Task ContinueWhenAny(Task[] tasks, Action continuationAction, Cance /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Action continuationAction, TaskContinuationOptions continuationOptions) + public Task ContinueWhenAny(Task[] tasks, Action continuationAction!!, TaskContinuationOptions continuationOptions) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2520,11 +2482,9 @@ public Task ContinueWhenAny(Task[] tasks, Action continuationAction, TaskC /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Action continuationAction, CancellationToken cancellationToken, + public Task ContinueWhenAny(Task[] tasks, Action continuationAction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, cancellationToken, scheduler); } @@ -2549,10 +2509,8 @@ public Task ContinueWhenAny(Task[] tasks, Action continuationAction, Cance /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAny(Task[] tasks, Func continuationFunction) + public Task ContinueWhenAny(Task[] tasks, Func continuationFunction!!) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2581,10 +2539,8 @@ public Task ContinueWhenAny(Task[] tasks, Func /// The provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAny(Task[] tasks, Func continuationFunction, CancellationToken cancellationToken) + public Task ContinueWhenAny(Task[] tasks, Func continuationFunction!!, CancellationToken cancellationToken) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2619,10 +2575,8 @@ public Task ContinueWhenAny(Task[] tasks, Func /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Func continuationFunction, TaskContinuationOptions continuationOptions) + public Task ContinueWhenAny(Task[] tasks, Func continuationFunction!!, TaskContinuationOptions continuationOptions) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2667,11 +2621,9 @@ public Task ContinueWhenAny(Task[] tasks, Func /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Func continuationFunction, CancellationToken cancellationToken, + public Task ContinueWhenAny(Task[] tasks, Func continuationFunction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler); } @@ -2696,9 +2648,8 @@ public Task ContinueWhenAny(Task[] tasks, Func /// array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction) + public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction!!) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2728,11 +2679,9 @@ public Task ContinueWhenAny(TaskThe provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction, + public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction!!, CancellationToken cancellationToken) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2768,11 +2717,9 @@ public Task ContinueWhenAny(TaskTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction, + public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction!!, TaskContinuationOptions continuationOptions) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2818,11 +2765,9 @@ public Task ContinueWhenAny(TaskTaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction, + public Task ContinueWhenAny(Task[] tasks, Func, TResult> continuationFunction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationFunction == null) throw new ArgumentNullException(nameof(continuationFunction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, continuationFunction, null, continuationOptions, cancellationToken, scheduler); } @@ -2844,10 +2789,8 @@ public Task ContinueWhenAny(Task array contains a null value. /// The exception that is thrown when the /// array is empty. - public Task ContinueWhenAny(Task[] tasks, Action> continuationAction) + public Task ContinueWhenAny(Task[] tasks, Action> continuationAction!!) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2873,11 +2816,9 @@ public Task ContinueWhenAny(Task[] tasks, /// The provided CancellationToken /// has already been disposed. /// - public Task ContinueWhenAny(Task[] tasks, Action> continuationAction, + public Task ContinueWhenAny(Task[] tasks, Action> continuationAction!!, CancellationToken cancellationToken) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, m_defaultContinuationOptions, cancellationToken, DefaultScheduler); } @@ -2909,11 +2850,9 @@ public Task ContinueWhenAny(Task[] tasks, /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Action> continuationAction, + public Task ContinueWhenAny(Task[] tasks, Action> continuationAction!!, TaskContinuationOptions continuationOptions) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, m_defaultCancellationToken, DefaultScheduler); } @@ -2955,20 +2894,16 @@ public Task ContinueWhenAny(Task[] tasks, /// which constrain for which TaskStatus states a continuation /// will be executed, are illegal with ContinueWhenAny. /// - public Task ContinueWhenAny(Task[] tasks, Action> continuationAction, + public Task ContinueWhenAny(Task[] tasks, Action> continuationAction!!, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions, TaskScheduler scheduler) { - if (continuationAction == null) throw new ArgumentNullException(nameof(continuationAction)); - return TaskFactory.ContinueWhenAnyImpl(tasks, null, continuationAction, continuationOptions, cancellationToken, scheduler); } // Check task array and return a defensive copy. // Used with ContinueWhenAll()/ContinueWhenAny(). - internal static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks) + internal static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks!!) { - if (tasks == null) - throw new ArgumentNullException(nameof(tasks)); if (tasks.Length == 0) throw new ArgumentException(SR.Task_MultiTaskContinuation_EmptyTaskList, nameof(tasks)); @@ -2984,10 +2919,8 @@ internal static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks) return tasksCopy; } - internal static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks) + internal static Task[] CheckMultiContinuationTasksAndCopy(Task[] tasks!!) { - if (tasks == null) - throw new ArgumentNullException(nameof(tasks)); if (tasks.Length == 0) throw new ArgumentException(SR.Task_MultiTaskContinuation_EmptyTaskList, nameof(tasks)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs index 43c30ecbfcf810..ad062d66024d5a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs @@ -107,24 +107,15 @@ private void InitializeCulture() } } - public Thread(ThreadStart start) + public Thread(ThreadStart start!!) { - if (start == null) - { - throw new ArgumentNullException(nameof(start)); - } - _startHelper = new StartHelper(start); Initialize(); } - public Thread(ThreadStart start, int maxStackSize) + public Thread(ThreadStart start!!, int maxStackSize) { - if (start == null) - { - throw new ArgumentNullException(nameof(start)); - } if (maxStackSize < 0) { throw new ArgumentOutOfRangeException(nameof(maxStackSize), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -135,24 +126,15 @@ public Thread(ThreadStart start, int maxStackSize) Initialize(); } - public Thread(ParameterizedThreadStart start) + public Thread(ParameterizedThreadStart start!!) { - if (start == null) - { - throw new ArgumentNullException(nameof(start)); - } - _startHelper = new StartHelper(start); Initialize(); } - public Thread(ParameterizedThreadStart start, int maxStackSize) + public Thread(ParameterizedThreadStart start!!, int maxStackSize) { - if (start == null) - { - throw new ArgumentNullException(nameof(start)); - } if (maxStackSize < 0) { throw new ArgumentOutOfRangeException(nameof(maxStackSize), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -248,13 +230,8 @@ private void RequireCurrentThread() } } - private void SetCultureOnUnstartedThread(CultureInfo value, bool uiCulture) + private void SetCultureOnUnstartedThread(CultureInfo value!!, bool uiCulture) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - StartHelper? startHelper = _startHelper; // This check is best effort to catch common user errors only. It won't catch all posssible race @@ -625,13 +602,8 @@ public static void FreeNamedSlot(string name) } } - private static ThreadLocal GetThreadLocal(LocalDataStoreSlot slot) + private static ThreadLocal GetThreadLocal(LocalDataStoreSlot slot!!) { - if (slot == null) - { - throw new ArgumentNullException(nameof(slot)); - } - Debug.Assert(slot.Data != null); return slot.Data; } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadLocal.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadLocal.cs index cf05a40a68e6d4..ec6a28efbb5ecb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadLocal.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadLocal.cs @@ -89,11 +89,8 @@ public ThreadLocal(bool trackAllValues) /// /// is a null reference (Nothing in Visual Basic). /// - public ThreadLocal(Func valueFactory) + public ThreadLocal(Func valueFactory!!) { - if (valueFactory == null) - throw new ArgumentNullException(nameof(valueFactory)); - Initialize(valueFactory, false); } @@ -109,11 +106,8 @@ public ThreadLocal(Func valueFactory) /// /// is a null reference (Nothing in Visual Basic). /// - public ThreadLocal(Func valueFactory, bool trackAllValues) + public ThreadLocal(Func valueFactory!!, bool trackAllValues) { - if (valueFactory == null) - throw new ArgumentNullException(nameof(valueFactory)); - Initialize(valueFactory, trackAllValues); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPool.Portable.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPool.Portable.cs index 854e27ef12f08d..34e0ab1f6ec24d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPool.Portable.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPool.Portable.cs @@ -107,19 +107,13 @@ internal static object GetOrCreateThreadLocalCompletionCountObject() => PortableThreadPool.ThreadPoolInstance.GetOrCreateThreadLocalCompletionCountObject(); private static RegisteredWaitHandle RegisterWaitForSingleObject( - WaitHandle? waitObject, - WaitOrTimerCallback? callBack, + WaitHandle waitObject!!, + WaitOrTimerCallback callBack!!, object? state, uint millisecondsTimeOutInterval, bool executeOnlyOnce, bool flowExecutionContext) { - if (waitObject == null) - throw new ArgumentNullException(nameof(waitObject)); - - if (callBack == null) - throw new ArgumentNullException(nameof(callBack)); - RegisteredWaitHandle registeredHandle = new RegisteredWaitHandle( waitObject, new _ThreadPoolWaitOrTimerCallback(callBack, state, flowExecutionContext), diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolBoundHandle.PlatformNotSupported.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolBoundHandle.PlatformNotSupported.cs index e7da142c9ee2e8..4a738976a5e2a3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolBoundHandle.PlatformNotSupported.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolBoundHandle.PlatformNotSupported.cs @@ -13,11 +13,8 @@ private ThreadPoolBoundHandle() { } - public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) + public static ThreadPoolBoundHandle BindHandle(SafeHandle handle!!) { - if (handle == null) - throw new ArgumentNullException(nameof(handle)); - if (handle.IsClosed || handle.IsInvalid) throw new ArgumentException(SR.Argument_InvalidHandle, nameof(handle)); @@ -25,11 +22,8 @@ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) } [CLSCompliant(false)] - public unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback, object? state, object? pinData) + public unsafe NativeOverlapped* AllocateNativeOverlapped(IOCompletionCallback callback!!, object? state, object? pinData) { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - throw new PlatformNotSupportedException(SR.PlatformNotSupported_OverlappedIO); } @@ -47,20 +41,14 @@ public static ThreadPoolBoundHandle BindHandle(SafeHandle handle) } [CLSCompliant(false)] - public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped) + public unsafe void FreeNativeOverlapped(NativeOverlapped* overlapped!!) { - if (overlapped == null) - throw new ArgumentNullException(nameof(overlapped)); - throw new PlatformNotSupportedException(SR.PlatformNotSupported_OverlappedIO); } [CLSCompliant(false)] - public static unsafe object? GetNativeOverlappedState(NativeOverlapped* overlapped) + public static unsafe object? GetNativeOverlappedState(NativeOverlapped* overlapped!!) { - if (overlapped == null) - throw new ArgumentNullException(nameof(overlapped)); - throw new PlatformNotSupportedException(SR.PlatformNotSupported_OverlappedIO); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Timer.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Timer.cs index 108034d778d423..9c22e1fb3019ce 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Timer.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Timer.cs @@ -94,8 +94,7 @@ private sealed class TimerQueueDebuggerTypeProxy { private readonly TimerQueue _queue; - public TimerQueueDebuggerTypeProxy(TimerQueue queue) => - _queue = queue ?? throw new ArgumentNullException(nameof(queue)); + public TimerQueueDebuggerTypeProxy(TimerQueue queue!!) => _queue = queue; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public TimerQueueTimer[] Items => new List(_queue.GetTimersForDebugger()).ToArray(); @@ -882,15 +881,12 @@ public Timer(TimerCallback callback) } [MemberNotNull(nameof(_timer))] - private void TimerSetup(TimerCallback callback, + private void TimerSetup(TimerCallback callback!!, object? state, uint dueTime, uint period, bool flowExecutionContext = true) { - if (callback == null) - throw new ArgumentNullException(nameof(callback)); - _timer = new TimerHolder(new TimerQueueTimer(callback, state, dueTime, period, flowExecutionContext)); } @@ -949,11 +945,8 @@ public static long ActiveCount } } - public bool Dispose(WaitHandle notifyObject) + public bool Dispose(WaitHandle notifyObject!!) { - if (notifyObject == null) - throw new ArgumentNullException(nameof(notifyObject)); - return _timer.Close(notifyObject); } diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs index f65555ae04e81a..ea799f79acb24b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandle.cs @@ -196,7 +196,7 @@ private static void ObtainSafeWaitHandles( WaitHandle waitHandle = waitHandles[i]; if (waitHandle == null) { - throw new ArgumentNullException("waitHandles[" + i + ']', SR.ArgumentNull_ArrayElement); + throw new ArgumentNullException($"waitHandles[{i}]", SR.ArgumentNull_ArrayElement); } SafeWaitHandle safeWaitHandle = waitHandle._waitHandle ?? @@ -238,13 +238,8 @@ private static void ObtainSafeWaitHandles( } } - private static int WaitMultiple(WaitHandle[] waitHandles, bool waitAll, int millisecondsTimeout) + private static int WaitMultiple(WaitHandle[] waitHandles!!, bool waitAll, int millisecondsTimeout) { - if (waitHandles == null) - { - throw new ArgumentNullException(nameof(waitHandles), SR.ArgumentNull_Waithandles); - } - return WaitMultiple(new ReadOnlySpan(waitHandles), waitAll, millisecondsTimeout); } @@ -353,16 +348,8 @@ private static int WaitAnyMultiple(ReadOnlySpan safeWaitHandles, return waitResult; } - private static bool SignalAndWait(WaitHandle toSignal, WaitHandle toWaitOn, int millisecondsTimeout) + private static bool SignalAndWait(WaitHandle toSignal!!, WaitHandle toWaitOn!!, int millisecondsTimeout) { - if (toSignal == null) - { - throw new ArgumentNullException(nameof(toSignal)); - } - if (toWaitOn == null) - { - throw new ArgumentNullException(nameof(toWaitOn)); - } if (millisecondsTimeout < -1) { throw new ArgumentOutOfRangeException(nameof(millisecondsTimeout), SR.ArgumentOutOfRange_NeedNonNegOrNegative1); diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandleExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandleExtensions.cs index f68aa84db76394..9b6712c81109b3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandleExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/WaitHandleExtensions.cs @@ -12,29 +12,15 @@ public static class WaitHandleExtensions /// /// The to operate on. /// A representing the native operating system handle. - public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle) - { - if (waitHandle == null) - { - throw new ArgumentNullException(nameof(waitHandle)); - } - - return waitHandle.SafeWaitHandle; - } + public static SafeWaitHandle GetSafeWaitHandle(this WaitHandle waitHandle!!) => + waitHandle.SafeWaitHandle; /// /// Sets the native operating system handle /// /// The to operate on. /// A representing the native operating system handle. - public static void SetSafeWaitHandle(this WaitHandle waitHandle, SafeWaitHandle? value) - { - if (waitHandle == null) - { - throw new ArgumentNullException(nameof(waitHandle)); - } - + public static void SetSafeWaitHandle(this WaitHandle waitHandle!!, SafeWaitHandle? value) => waitHandle.SafeWaitHandle = value; - } } } diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.AdjustmentRule.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.AdjustmentRule.cs index 7c754b4f285708..6650d80948c704 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.AdjustmentRule.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.AdjustmentRule.cs @@ -260,13 +260,8 @@ void IDeserializationCallback.OnDeserialization(object? sender) } } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue("DateStart", _dateStart); // Do not rename (binary serialization) info.AddValue("DateEnd", _dateEnd); // Do not rename (binary serialization) info.AddValue("DaylightDelta", _daylightDelta); // Do not rename (binary serialization) @@ -276,13 +271,8 @@ void ISerializable.GetObjectData(SerializationInfo info, StreamingContext contex info.AddValue("NoDaylightTransitions", _noDaylightTransitions); // Do not rename (binary serialization) } - private AdjustmentRule(SerializationInfo info, StreamingContext context) + private AdjustmentRule(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - _dateStart = (DateTime)info.GetValue("DateStart", typeof(DateTime))!; // Do not rename (binary serialization) _dateEnd = (DateTime)info.GetValue("DateEnd", typeof(DateTime))!; // Do not rename (binary serialization) _daylightDelta = (TimeSpan)info.GetValue("DaylightDelta", typeof(TimeSpan))!; // Do not rename (binary serialization) diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.TransitionTime.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.TransitionTime.cs index 199b1dad8971c0..53808118d47cab 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.TransitionTime.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.TransitionTime.cs @@ -127,13 +127,8 @@ void IDeserializationCallback.OnDeserialization(object? sender) } } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue("TimeOfDay", _timeOfDay); // Do not rename (binary serialization) info.AddValue("Month", _month); // Do not rename (binary serialization) info.AddValue("Week", _week); // Do not rename (binary serialization) @@ -142,13 +137,8 @@ void ISerializable.GetObjectData(SerializationInfo info, StreamingContext contex info.AddValue("IsFixedDateRule", _isFixedDateRule); // Do not rename (binary serialization) } - private TransitionTime(SerializationInfo info, StreamingContext context) + private TransitionTime(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - _timeOfDay = (DateTime)info.GetValue("TimeOfDay", typeof(DateTime))!; // Do not rename (binary serialization) _month = (byte)info.GetValue("Month", typeof(byte))!; // Do not rename (binary serialization) _week = (byte)info.GetValue("Week", typeof(byte))!; // Do not rename (binary serialization) diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.Android.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.Android.cs index 23c1044e1983cd..9040d3ca65ce28 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.Android.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.Android.cs @@ -475,4 +475,4 @@ public byte[] GetTimeZoneData(string id) } } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs index f0b865a3a48578..9f4905e511b12f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Unix.cs @@ -289,11 +289,8 @@ public static TimeZoneInfo FindSystemTimeZoneById(string id) return Utc; } - if (id == null) - { - throw new ArgumentNullException(nameof(id)); - } - else if (id.Length == 0 || id.Contains('\0')) + ArgumentNullException.ThrowIfNull(id); + if (id.Length == 0 || id.Contains('\0')) { throw new TimeZoneNotFoundException(SR.Format(SR.TimeZoneNotFound_MissingData, id)); } diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Win32.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Win32.cs index 7bdfce06f1b691..391f39e1693a8f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Win32.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.Win32.cs @@ -320,7 +320,7 @@ private static TimeZoneInfo GetLocalTimeZoneFromWin32Data(in TIME_ZONE_INFORMATI /// This function will either return a valid TimeZoneInfo instance or /// it will throw 'InvalidTimeZoneException' / 'TimeZoneNotFoundException'. /// - public static TimeZoneInfo FindSystemTimeZoneById(string id) + public static TimeZoneInfo FindSystemTimeZoneById(string id!!) { // Special case for Utc to avoid having TryGetTimeZone creating a new Utc object if (string.Equals(id, UtcId, StringComparison.OrdinalIgnoreCase)) @@ -328,10 +328,6 @@ public static TimeZoneInfo FindSystemTimeZoneById(string id) return Utc; } - if (id == null) - { - throw new ArgumentNullException(nameof(id)); - } if (id.Length == 0 || id.Length > MaxKeyLength || id.Contains('\0')) { throw new TimeZoneNotFoundException(SR.Format(SR.TimeZoneNotFound_MissingData, id)); diff --git a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.cs b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.cs index 095cce8ba35e8e..80a256c99cf56f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TimeZoneInfo.cs @@ -582,13 +582,8 @@ public static DateTime ConvertTimeBySystemTimeZoneId(DateTime dateTime, string s /// /// Converts the value of the dateTime object from sourceTimeZone to destinationTimeZone /// - public static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone) + public static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone!!) { - if (destinationTimeZone == null) - { - throw new ArgumentNullException(nameof(destinationTimeZone)); - } - // calculate the destination time zone offset DateTime utcDateTime = dateTimeOffset.UtcDateTime; TimeSpan destinationOffset = GetUtcOffsetFromUtc(utcDateTime, destinationTimeZone); @@ -605,13 +600,8 @@ public static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZone /// /// Converts the value of the dateTime object from sourceTimeZone to destinationTimeZone /// - public static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo destinationTimeZone) + public static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo destinationTimeZone!!) { - if (destinationTimeZone == null) - { - throw new ArgumentNullException(nameof(destinationTimeZone)); - } - // Special case to give a way clearing the cache without exposing ClearCachedData() if (dateTime.Ticks == 0) { @@ -634,18 +624,8 @@ public static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo sourceTimeZon internal static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone, TimeZoneInfoOptions flags) => ConvertTime(dateTime, sourceTimeZone, destinationTimeZone, flags, s_cachedData); - private static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone, TimeZoneInfoOptions flags, CachedData cachedData) + private static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo sourceTimeZone!!, TimeZoneInfo destinationTimeZone!!, TimeZoneInfoOptions flags, CachedData cachedData) { - if (sourceTimeZone == null) - { - throw new ArgumentNullException(nameof(sourceTimeZone)); - } - - if (destinationTimeZone == null) - { - throw new ArgumentNullException(nameof(destinationTimeZone)); - } - DateTimeKind sourceKind = cachedData.GetCorrespondingKind(sourceTimeZone); if (((flags & TimeZoneInfoOptions.NoThrowOnInvalidTime) == 0) && (dateTime.Kind != DateTimeKind.Unspecified) && (dateTime.Kind != sourceKind)) { @@ -757,12 +737,8 @@ public bool Equals([NotNullWhen(true)] TimeZoneInfo? other) => public override bool Equals([NotNullWhen(true)] object? obj) => Equals(obj as TimeZoneInfo); - public static TimeZoneInfo FromSerializedString(string source) + public static TimeZoneInfo FromSerializedString(string source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } if (source.Length == 0) { throw new ArgumentException(SR.Format(SR.Argument_InvalidSerializedString, source), nameof(source)); @@ -819,13 +795,8 @@ public static ReadOnlyCollection GetSystemTimeZones() /// /// Value equality on the "adjustmentRules" array /// - public bool HasSameRules(TimeZoneInfo other) + public bool HasSameRules(TimeZoneInfo other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - // check the utcOffset and supportsDaylightSavingTime members if (_baseUtcOffset != other._baseUtcOffset || _supportsDaylightSavingTime != other._supportsDaylightSavingTime) @@ -1019,13 +990,8 @@ void IDeserializationCallback.OnDeserialization(object? sender) } } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue("Id", _id); // Do not rename (binary serialization) info.AddValue("DisplayName", _displayName); // Do not rename (binary serialization) info.AddValue("StandardName", _standardDisplayName); // Do not rename (binary serialization) @@ -1035,13 +1001,8 @@ void ISerializable.GetObjectData(SerializationInfo info, StreamingContext contex info.AddValue("SupportsDaylightSavingTime", _supportsDaylightSavingTime); // Do not rename (binary serialization) } - private TimeZoneInfo(SerializationInfo info, StreamingContext context) + private TimeZoneInfo(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - _id = (string)info.GetValue("Id", typeof(string))!; // Do not rename (binary serialization) _displayName = (string?)info.GetValue("DisplayName", typeof(string)); // Do not rename (binary serialization) _standardDisplayName = (string?)info.GetValue("StandardName", typeof(string)); // Do not rename (binary serialization) @@ -2023,15 +1984,7 @@ private static TimeZoneInfoResult TryGetTimeZoneFromLocalMachine(string id, bool /// private static void ValidateTimeZoneInfo(string id, TimeSpan baseUtcOffset, AdjustmentRule[]? adjustmentRules, out bool adjustmentRulesSupportDst) { - if (id == null) - { - throw new ArgumentNullException(nameof(id)); - } - - if (id.Length == 0) - { - throw new ArgumentException(SR.Format(SR.Argument_InvalidId, id), nameof(id)); - } + ArgumentException.ThrowIfNullOrEmpty(id); if (UtcOffsetOutOfRange(baseUtcOffset)) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Type.Enum.cs b/src/libraries/System.Private.CoreLib/src/System/Type.Enum.cs index 50bbf971cf5aee..e088eae799c6ae 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Type.Enum.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Type.Enum.cs @@ -17,11 +17,8 @@ namespace System // public abstract partial class Type { - public virtual bool IsEnumDefined(object value) + public virtual bool IsEnumDefined(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!IsEnum) throw new ArgumentException(SR.Arg_MustBeEnum, nameof(value)); @@ -64,11 +61,8 @@ public virtual bool IsEnumDefined(object value) } } - public virtual string? GetEnumName(object value) + public virtual string? GetEnumName(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!IsEnum) throw new ArgumentException(SR.Arg_MustBeEnum, nameof(value)); diff --git a/src/libraries/System.Private.CoreLib/src/System/Type.Helpers.cs b/src/libraries/System.Private.CoreLib/src/System/Type.Helpers.cs index d9ac8b0c788d00..71cb7b5e756065 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Type.Helpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Type.Helpers.cs @@ -115,11 +115,8 @@ public bool IsVisible } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public virtual Type[] FindInterfaces(TypeFilter filter, object? filterCriteria) + public virtual Type[] FindInterfaces(TypeFilter filter!!, object? filterCriteria) { - if (filter == null) - throw new ArgumentNullException(nameof(filter)); - Type?[] c = GetInterfaces(); int cnt = 0; for (int i = 0; i < c.Length; i++) diff --git a/src/libraries/System.Private.CoreLib/src/System/Type.cs b/src/libraries/System.Private.CoreLib/src/System/Type.cs index bd3c449d74cd58..d17c9a1fd627af 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Type.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Type.cs @@ -157,14 +157,11 @@ public ConstructorInfo? TypeInitializer public ConstructorInfo? GetConstructor(BindingFlags bindingAttr, Binder? binder, Type[] types, ParameterModifier[]? modifiers) => GetConstructor(bindingAttr, binder, CallingConventions.Any, types, modifiers); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - public ConstructorInfo? GetConstructor(BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types, ParameterModifier[]? modifiers) + public ConstructorInfo? GetConstructor(BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types!!, ParameterModifier[]? modifiers) { - if (types == null) - throw new ArgumentNullException(nameof(types)); for (int i = 0; i < types.Length; i++) { - if (types[i] == null) - throw new ArgumentNullException(nameof(types)); + ArgumentNullException.ThrowIfNull(types[i], nameof(types)); } return GetConstructorImpl(bindingAttr, binder, callConvention, types, modifiers); } @@ -239,10 +236,8 @@ public ConstructorInfo? TypeInitializer [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2085:UnrecognizedReflectionPattern", Justification = "This is finding the MemberInfo with the same MetadataToken as specified MemberInfo. If the specified MemberInfo " + "exists and wasn't trimmed, then the current Type's MemberInfo couldn't have been trimmed.")] - public virtual MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberInfo member) + public virtual MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberInfo member!!) { - if (member is null) throw new ArgumentNullException(nameof(member)); - const BindingFlags all = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance; foreach (MemberInfo myMemberInfo in GetMembers(all)) { @@ -265,10 +260,8 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public MethodInfo? GetMethod(string name) => GetMethod(name, Type.DefaultLookup); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public MethodInfo? GetMethod(string name, BindingFlags bindingAttr) + public MethodInfo? GetMethod(string name!!, BindingFlags bindingAttr) { - if (name == null) - throw new ArgumentNullException(nameof(name)); return GetMethodImpl(name, bindingAttr, null, CallingConventions.Any, null, null); } @@ -300,16 +293,11 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public MethodInfo? GetMethod(string name, BindingFlags bindingAttr, Binder? binder, Type[] types, ParameterModifier[]? modifiers) => GetMethod(name, bindingAttr, binder, CallingConventions.Any, types, modifiers); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public MethodInfo? GetMethod(string name, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types, ParameterModifier[]? modifiers) + public MethodInfo? GetMethod(string name!!, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types!!, ParameterModifier[]? modifiers) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (types == null) - throw new ArgumentNullException(nameof(types)); for (int i = 0; i < types.Length; i++) { - if (types[i] == null) - throw new ArgumentNullException(nameof(types)); + ArgumentNullException.ThrowIfNull(types[i], nameof(types)); } return GetMethodImpl(name, bindingAttr, binder, callConvention, types, modifiers); } @@ -327,18 +315,14 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public MethodInfo? GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder? binder, Type[] types, ParameterModifier[]? modifiers) => GetMethod(name, genericParameterCount, bindingAttr, binder, CallingConventions.Any, types, modifiers); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public MethodInfo? GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types, ParameterModifier[]? modifiers) + public MethodInfo? GetMethod(string name!!, int genericParameterCount, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[] types, ParameterModifier[]? modifiers) { - if (name == null) - throw new ArgumentNullException(nameof(name)); if (genericParameterCount < 0) throw new ArgumentException(SR.ArgumentOutOfRange_NeedNonNegNum, nameof(genericParameterCount)); - if (types == null) - throw new ArgumentNullException(nameof(types)); + ArgumentNullException.ThrowIfNull(types); for (int i = 0; i < types.Length; i++) { - if (types[i] == null) - throw new ArgumentNullException(nameof(types)); + ArgumentNullException.ThrowIfNull(types[i], nameof(types)); } return GetMethodImpl(name, genericParameterCount, bindingAttr, binder, callConvention, types, modifiers); } @@ -368,20 +352,16 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public PropertyInfo? GetProperty(string name) => GetProperty(name, Type.DefaultLookup); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - public PropertyInfo? GetProperty(string name, BindingFlags bindingAttr) + public PropertyInfo? GetProperty(string name!!, BindingFlags bindingAttr) { - if (name == null) - throw new ArgumentNullException(nameof(name)); return GetPropertyImpl(name, bindingAttr, null, null, null, null); } [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2085:UnrecognizedReflectionPattern", Justification = "Linker doesn't recognize GetPropertyImpl(BindingFlags.Public) but this is what the body is doing")] - public PropertyInfo? GetProperty(string name, Type? returnType) + public PropertyInfo? GetProperty(string name!!, Type? returnType) { - if (name == null) - throw new ArgumentNullException(nameof(name)); return GetPropertyImpl(name, Type.DefaultLookup, null, returnType, null, null); } @@ -395,12 +375,8 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public PropertyInfo? GetProperty(string name, Type? returnType, Type[] types, ParameterModifier[]? modifiers) => GetProperty(name, Type.DefaultLookup, null, returnType, types, modifiers); [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - public PropertyInfo? GetProperty(string name, BindingFlags bindingAttr, Binder? binder, Type? returnType, Type[] types, ParameterModifier[]? modifiers) + public PropertyInfo? GetProperty(string name!!, BindingFlags bindingAttr, Binder? binder, Type? returnType, Type[] types!!, ParameterModifier[]? modifiers) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (types == null) - throw new ArgumentNullException(nameof(types)); return GetPropertyImpl(name, bindingAttr, binder, returnType, types, modifiers); } @@ -423,19 +399,13 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini public virtual MemberInfo[] GetDefaultMembers() => throw NotImplemented.ByDesign; public virtual RuntimeTypeHandle TypeHandle => throw new NotSupportedException(); - public static RuntimeTypeHandle GetTypeHandle(object o) + public static RuntimeTypeHandle GetTypeHandle(object o!!) { - if (o == null) - throw new ArgumentNullException(null, SR.Arg_InvalidHandle); - Type type = o.GetType(); - return type.TypeHandle; + return o.GetType().TypeHandle; } - public static Type[] GetTypeArray(object[] args) + public static Type[] GetTypeArray(object[] args!!) { - if (args == null) - throw new ArgumentNullException(nameof(args)); - Type[] cls = new Type[args.Length]; for (int i = 0; i < cls.Length; i++) { diff --git a/src/libraries/System.Private.CoreLib/src/System/TypedReference.cs b/src/libraries/System.Private.CoreLib/src/System/TypedReference.cs index 369d9df080cde5..8087c6024e645e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/TypedReference.cs +++ b/src/libraries/System.Private.CoreLib/src/System/TypedReference.cs @@ -14,12 +14,8 @@ namespace System public ref partial struct TypedReference { - public static TypedReference MakeTypedReference(object target, FieldInfo[] flds) + public static TypedReference MakeTypedReference(object target!!, FieldInfo[] flds!!) { - if (target == null) - throw new ArgumentNullException(nameof(target)); - if (flds == null) - throw new ArgumentNullException(nameof(flds)); if (flds.Length == 0) throw new ArgumentException(SR.Arg_ArrayZeroError, nameof(flds)); diff --git a/src/libraries/System.Private.CoreLib/src/System/UIntPtr.cs b/src/libraries/System.Private.CoreLib/src/System/UIntPtr.cs index 12a2dce1d7258f..fe47b811905007 100644 --- a/src/libraries/System.Private.CoreLib/src/System/UIntPtr.cs +++ b/src/libraries/System.Private.CoreLib/src/System/UIntPtr.cs @@ -71,11 +71,8 @@ private unsafe UIntPtr(SerializationInfo info, StreamingContext context) _value = (void*)l; } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + void ISerializable.GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - throw new ArgumentNullException(nameof(info)); - info.AddValue("value", ToUInt64()); } diff --git a/src/libraries/System.Private.CoreLib/src/System/UnitySerializationHolder.cs b/src/libraries/System.Private.CoreLib/src/System/UnitySerializationHolder.cs index f3abc8aeae499c..897db7e0e735c4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/UnitySerializationHolder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/UnitySerializationHolder.cs @@ -31,14 +31,9 @@ internal static void GetUnitySerializationInfo(SerializationInfo info, int unity } #pragma warning disable CA2229 // public for compat - public UnitySerializationHolder(SerializationInfo info, StreamingContext context) + public UnitySerializationHolder(SerializationInfo info!!, StreamingContext context) #pragma warning restore CA2229 { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - // We are ignoring any other serialization input as we are only concerned about DBNull. // We also store data and use it for erorr logging. _unityType = info.GetInt32("UnityType"); diff --git a/src/libraries/System.Private.CoreLib/src/System/Version.cs b/src/libraries/System.Private.CoreLib/src/System/Version.cs index 43d3bb34b098ee..96da170cc6dd7a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Version.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Version.cs @@ -263,13 +263,8 @@ bool ISpanFormattable.TryFormat(Span destination, out int charsWritten, Re _Revision == -1 ? 3 : 4; - public static Version Parse(string input) + public static Version Parse(string input!!) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - return ParseVersion(input.AsSpan(), throwOnFailure: true)!; } diff --git a/src/libraries/System.Private.CoreLib/src/System/WeakReference.T.cs b/src/libraries/System.Private.CoreLib/src/System/WeakReference.T.cs index a2e5258f62b22c..a1517385593936 100644 --- a/src/libraries/System.Private.CoreLib/src/System/WeakReference.T.cs +++ b/src/libraries/System.Private.CoreLib/src/System/WeakReference.T.cs @@ -30,13 +30,8 @@ public WeakReference(T target, bool trackResurrection) Create(target, trackResurrection); } - private WeakReference(SerializationInfo info, StreamingContext context) + private WeakReference(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - T target = (T)info.GetValue("TrackedObject", typeof(T))!; // Do not rename (binary serialization) bool trackResurrection = info.GetBoolean("TrackResurrection"); // Do not rename (binary serialization) @@ -59,13 +54,8 @@ public bool TryGetTarget([MaybeNullWhen(false), NotNullWhen(true)] out T target) return o != null; } - public void GetObjectData(SerializationInfo info, StreamingContext context) + public void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - info.AddValue("TrackedObject", this.Target, typeof(T)); // Do not rename (binary serialization) info.AddValue("TrackResurrection", IsTrackResurrection()); // Do not rename (binary serialization) } diff --git a/src/libraries/System.Private.CoreLib/src/System/WeakReference.cs b/src/libraries/System.Private.CoreLib/src/System/WeakReference.cs index 870221d5f2049b..759ef6d6f87821 100644 --- a/src/libraries/System.Private.CoreLib/src/System/WeakReference.cs +++ b/src/libraries/System.Private.CoreLib/src/System/WeakReference.cs @@ -24,25 +24,16 @@ public WeakReference(object? target, bool trackResurrection) Create(target, trackResurrection); } - protected WeakReference(SerializationInfo info, StreamingContext context) + protected WeakReference(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } - object? target = info.GetValue("TrackedObject", typeof(object)); // Do not rename (binary serialization) bool trackResurrection = info.GetBoolean("TrackResurrection"); // Do not rename (binary serialization) Create(target, trackResurrection); } - public virtual void GetObjectData(SerializationInfo info, StreamingContext context) + public virtual void GetObjectData(SerializationInfo info!!, StreamingContext context) { - if (info == null) - { - throw new ArgumentNullException(nameof(info)); - } info.AddValue("TrackedObject", Target, typeof(object)); // Do not rename (binary serialization) info.AddValue("TrackResurrection", IsTrackResurrection()); // Do not rename (binary serialization) } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs index ca4047b2cc7fdb..33283d2cc46e65 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSerializer.cs @@ -104,7 +104,7 @@ public DataContractSerializer(Type type, DataContractSerializerSettings? setting } [MemberNotNull(nameof(_rootType))] - private void Initialize(Type type, + private void Initialize(Type type!!, IEnumerable? knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, @@ -112,7 +112,6 @@ private void Initialize(Type type, DataContractResolver? dataContractResolver, bool serializeReadOnlyTypes) { - CheckNull(type, nameof(type)); _rootType = type; if (knownTypes != null) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSet.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSet.cs index a9c7d36a652acf..99e0a48dbe9160 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSet.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/DataContractSet.cs @@ -32,11 +32,8 @@ internal DataContractSet(IDataContractSurrogate dataContractSurrogate, ICollecti #endif [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal DataContractSet(DataContractSet dataContractSet) + internal DataContractSet(DataContractSet dataContractSet!!) { - if (dataContractSet == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(dataContractSet))); - //this.dataContractSurrogate = dataContractSet.dataContractSurrogate; _referencedTypes = dataContractSet._referencedTypes; _referencedCollectionTypes = dataContractSet._referencedCollectionTypes; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DataContractJsonSerializer.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DataContractJsonSerializer.cs index 30d2deda9e19d8..a7390ae70ef835 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DataContractJsonSerializer.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DataContractJsonSerializer.cs @@ -212,9 +212,8 @@ public override bool IsStartObject(XmlDictionaryReader reader) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public override object? ReadObject(Stream stream) + public override object? ReadObject(Stream stream!!) { - CheckNull(stream, nameof(stream)); return ReadObject(JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max)); } @@ -257,9 +256,8 @@ public override void WriteEndObject(XmlDictionaryWriter writer) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public override void WriteObject(Stream stream, object? graph) + public override void WriteObject(Stream stream!!, object? graph) { - CheckNull(stream, nameof(stream)); XmlDictionaryWriter jsonWriter = JsonReaderWriterFactory.CreateJsonWriter(stream, Encoding.UTF8, false); // ownsStream WriteObject(jsonWriter, graph); jsonWriter.Flush(); @@ -521,7 +519,7 @@ private void AddCollectionItemTypeToKnownTypes(Type knownType) [MemberNotNull(nameof(_rootType))] [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - private void Initialize(Type type, + private void Initialize(Type type!!, IEnumerable? knownTypes, int maxItemsInObjectGraph, bool ignoreExtensionDataObject, @@ -530,7 +528,6 @@ private void Initialize(Type type, DateTimeFormat? dateTimeFormat, bool useSimpleDictionaryFormat) { - CheckNull(type, nameof(type)); _rootType = type; if (knownTypes != null) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DateTimeFormat.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DateTimeFormat.cs index 81057315deb584..3d85ac6c55303b 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DateTimeFormat.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/DateTimeFormat.cs @@ -32,18 +32,8 @@ public DateTimeFormat(string formatString) : this(formatString, DateTimeFormatIn /// /// Specifies the formatString to be used. /// Specifies the formatProvider to be used. - public DateTimeFormat(string formatString, IFormatProvider formatProvider) + public DateTimeFormat(string formatString!!, IFormatProvider formatProvider!!) { - if (formatString == null) - { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(formatString)); - } - - if (formatProvider == null) - { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(formatProvider)); - } - _formatString = formatString; _formatProvider = formatProvider; _dateTimeStyles = DateTimeStyles.RoundtripKind; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs index 44b0bda31e9942..5b6c17ac947795 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonEncodingStreamWrapper.cs @@ -44,10 +44,7 @@ public JsonEncodingStreamWrapper(Stream stream, Encoding? encoding, bool isReade } else { - if (encoding == null) - { - throw new ArgumentNullException(nameof(encoding)); - } + ArgumentNullException.ThrowIfNull(encoding); InitForWriting(stream, encoding); } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonReaderWriterFactory.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonReaderWriterFactory.cs index 1f83baca5a5410..c27cac95fbe2c3 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonReaderWriterFactory.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/JsonReaderWriterFactory.cs @@ -19,13 +19,8 @@ public static XmlDictionaryReader CreateJsonReader(Stream stream, XmlDictionaryR return CreateJsonReader(stream, null, quotas, null); } - public static XmlDictionaryReader CreateJsonReader(byte[] buffer, XmlDictionaryReaderQuotas quotas) + public static XmlDictionaryReader CreateJsonReader(byte[] buffer!!, XmlDictionaryReaderQuotas quotas) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - return CreateJsonReader(buffer, 0, buffer.Length, null, quotas, null); } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonReader.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonReader.cs index 3e24e963d84f68..35280dd78abebe 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonReader.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonReader.cs @@ -732,10 +732,7 @@ public override int ReadValueAsBase64(byte[] buffer, int offset, int count) { if (IsAttributeValue) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative); @@ -763,10 +760,7 @@ public override int ReadValueChunk(char[] chars, int offset, int count) { if (IsAttributeValue) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars)); - } + ArgumentNullException.ThrowIfNull(chars); if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative); @@ -805,13 +799,9 @@ public override int ReadValueChunk(char[] chars, int offset, int count) return base.ReadValueChunk(chars, offset, count); } - public void SetInput(byte[] buffer, int offset, int count, Encoding? encoding, XmlDictionaryReaderQuotas quotas, + public void SetInput(byte[] buffer!!, int offset, int count, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative); @@ -836,13 +826,9 @@ public void SetInput(byte[] buffer, int offset, int count, Encoding? encoding, X ResetState(); } - public void SetInput(Stream stream, Encoding? encoding, XmlDictionaryReaderQuotas quotas, + public void SetInput(Stream stream!!, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } MoveToInitial(quotas, onClose); stream = new JsonEncodingStreamWrapper(stream, encoding, true); @@ -857,12 +843,8 @@ public override void StartCanonicalization(Stream stream, bool includeComments, throw new NotSupportedException(); } - internal static void CheckArray(Array array, int offset, int count) + internal static void CheckArray(Array array!!, int offset, int count) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); - } if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative); diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonWriter.cs index 8ce76f7b50f282..86b1d98b0632f2 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/Json/XmlJsonWriter.cs @@ -94,10 +94,7 @@ public XmlJsonWriter(bool indent, string? indentChars) _indent = indent; if (indent) { - if (indentChars == null) - { - throw new ArgumentNullException(nameof(indentChars)); - } + ArgumentNullException.ThrowIfNull(indentChars); _indentChars = indentChars; } InitializeWriter(); @@ -231,12 +228,8 @@ public override void Flush() _nodeWriter.Flush(); } - public override string? LookupPrefix(string ns) + public override string? LookupPrefix(string ns!!) { - if (ns == null) - { - throw new ArgumentNullException(nameof(ns)); - } if (ns == Globals.XmlnsNamespace) { return Globals.XmlnsPrefix; @@ -252,16 +245,8 @@ public override void Flush() return null; } - public void SetOutput(Stream stream, Encoding encoding, bool ownsStream) + public void SetOutput(Stream stream!!, Encoding encoding!!, bool ownsStream) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - if (encoding == null) - { - throw new ArgumentNullException(nameof(encoding)); - } if (encoding.WebName != Encoding.UTF8.WebName) { stream = new JsonEncodingStreamWrapper(stream, encoding, false); @@ -379,13 +364,8 @@ public override void WriteArray(string? prefix, XmlDictionaryString localName, X throw new NotSupportedException(SR.JsonWriteArrayNotSupported); } - public override void WriteBase64(byte[] buffer, int index, int count) + public override void WriteBase64(byte[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (index < 0) { @@ -405,13 +385,8 @@ public override void WriteBase64(byte[] buffer, int index, int count) _nodeWriter.WriteBase64Text(buffer, 0, buffer, index, count); } - public override void WriteBinHex(byte[] buffer, int index, int count) + public override void WriteBinHex(byte[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (index < 0) { @@ -441,13 +416,8 @@ public override void WriteCharEntity(char ch) WriteString(ch.ToString()); } - public override void WriteChars(char[] buffer, int index, int count) + public override void WriteChars(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (index < 0) { @@ -723,12 +693,8 @@ public override void WriteProcessingInstruction(string name, string? text) } } - public override void WriteQualifiedName(string localName, string? ns) + public override void WriteQualifiedName(string localName!!, string? ns) { - if (localName == null) - { - throw new ArgumentNullException(nameof(localName)); - } if (localName.Length == 0) { throw new ArgumentException(SR.JsonInvalidLocalNameEmpty, nameof(localName)); @@ -746,13 +712,8 @@ public override void WriteRaw(string data) WriteString(data); } - public override void WriteRaw(char[] buffer, int index, int count) + public override void WriteRaw(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } - // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (index < 0) { @@ -814,10 +775,7 @@ public override void WriteStartAttribute(string? prefix, string localName, strin throw new ArgumentException(SR.Format(SR.JsonNamespaceMustBeEmpty, ns), nameof(ns)); } } - if (localName == null) - { - throw new ArgumentNullException(nameof(localName)); - } + ArgumentNullException.ThrowIfNull(localName); if (localName.Length == 0) { throw new ArgumentException(SR.JsonInvalidLocalNameEmpty, nameof(localName)); @@ -899,12 +857,8 @@ public override void WriteStartDocument() } } - public override void WriteStartElement(string? prefix, string localName, string? ns) + public override void WriteStartElement(string? prefix, string localName!!, string? ns) { - if (localName == null) - { - throw new ArgumentNullException(nameof(localName)); - } if (localName.Length == 0) { throw new ArgumentException(SR.JsonInvalidLocalNameEmpty, nameof(localName)); @@ -1096,29 +1050,19 @@ public override void WriteValue(TimeSpan value) _nodeWriter.WriteTimeSpanText(value); } - public override void WriteValue(UniqueId value) + public override void WriteValue(UniqueId value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - StartText(); _nodeWriter.WriteUniqueIdText(value); } - public override void WriteValue(object value) + public override void WriteValue(object value!!) { if (IsClosed) { ThrowClosed(); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (value is Array) { WriteValue((Array)value); @@ -1139,10 +1083,7 @@ public override void WriteWhitespace(string? ws) { ThrowClosed(); } - if (ws == null) - { - throw new ArgumentNullException(nameof(ws)); - } + ArgumentNullException.ThrowIfNull(ws); for (int i = 0; i < ws.Length; ++i) { @@ -1461,18 +1402,13 @@ private void WriteJsonQuote() _nodeWriter.WriteText(JsonGlobals.QuoteChar); } - private void WritePrimitiveValue(object value) + private void WritePrimitiveValue(object value!!) { if (IsClosed) { ThrowClosed(); } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (value is ulong) { WriteValue((ulong)value); diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XPathQueryGenerator.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XPathQueryGenerator.cs index b3cd0339cddf31..977a25f8f7bc5e 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XPathQueryGenerator.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XPathQueryGenerator.cs @@ -26,17 +26,8 @@ public static string CreateFromDataContractSerializer(Type type, MemberInfo[] pa // Here you can provide your own root element Xpath which will replace the Xpath of the top level element [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public static string CreateFromDataContractSerializer(Type type, MemberInfo[] pathToMember, StringBuilder? rootElementXpath, out XmlNamespaceManager namespaces) + public static string CreateFromDataContractSerializer(Type type!!, MemberInfo[] pathToMember!!, StringBuilder? rootElementXpath, out XmlNamespaceManager namespaces) { - if (type == null) - { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); - } - if (pathToMember == null) - { - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(pathToMember))); - } - DataContract currentContract = DataContract.GetDataContract(type); ExportContext context; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializer.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializer.cs index 40584d6d2d54d1..499d1044f80b2d 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializer.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlObjectSerializer.cs @@ -24,39 +24,34 @@ public abstract class XmlObjectSerializer public abstract void WriteEndObject(XmlDictionaryWriter writer); [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual void WriteObject(Stream stream, object? graph) + public virtual void WriteObject(Stream stream!!, object? graph) { - CheckNull(stream, nameof(stream)); XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false /*ownsStream*/); WriteObject(writer, graph); writer.Flush(); } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual void WriteObject(XmlWriter writer, object? graph) + public virtual void WriteObject(XmlWriter writer!!, object? graph) { - CheckNull(writer, nameof(writer)); WriteObject(XmlDictionaryWriter.CreateDictionaryWriter(writer), graph); } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual void WriteStartObject(XmlWriter writer, object? graph) + public virtual void WriteStartObject(XmlWriter writer!!, object? graph) { - CheckNull(writer, nameof(writer)); WriteStartObject(XmlDictionaryWriter.CreateDictionaryWriter(writer), graph); } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual void WriteObjectContent(XmlWriter writer, object? graph) + public virtual void WriteObjectContent(XmlWriter writer!!, object? graph) { - CheckNull(writer, nameof(writer)); WriteObjectContent(XmlDictionaryWriter.CreateDictionaryWriter(writer), graph); } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual void WriteEndObject(XmlWriter writer) + public virtual void WriteEndObject(XmlWriter writer!!) { - CheckNull(writer, nameof(writer)); WriteEndObject(XmlDictionaryWriter.CreateDictionaryWriter(writer)); } @@ -73,14 +68,11 @@ internal void WriteObjectHandleExceptions(XmlWriterDelegator writer, object? gra } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal void WriteObjectHandleExceptions(XmlWriterDelegator writer, object? graph, DataContractResolver? dataContractResolver) + internal void WriteObjectHandleExceptions(XmlWriterDelegator writer!!, object? graph, DataContractResolver? dataContractResolver) { try { - CheckNull(writer, nameof(writer)); - { - InternalWriteObject(writer, graph, dataContractResolver); - } + InternalWriteObject(writer, graph, dataContractResolver); } catch (XmlException ex) { @@ -135,11 +127,10 @@ internal virtual void InternalWriteEndObject(XmlWriterDelegator writer) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal void WriteStartObjectHandleExceptions(XmlWriterDelegator writer, object? graph) + internal void WriteStartObjectHandleExceptions(XmlWriterDelegator writer!!, object? graph) { try { - CheckNull(writer, nameof(writer)); InternalWriteStartObject(writer, graph); } catch (XmlException ex) @@ -153,16 +144,13 @@ internal void WriteStartObjectHandleExceptions(XmlWriterDelegator writer, object } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal void WriteObjectContentHandleExceptions(XmlWriterDelegator writer, object? graph) + internal void WriteObjectContentHandleExceptions(XmlWriterDelegator writer!!, object? graph) { try { - CheckNull(writer, nameof(writer)); - { - if (writer.WriteState != WriteState.Element) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.XmlWriterMustBeInElement, writer.WriteState))); - InternalWriteObjectContent(writer, graph); - } + if (writer.WriteState != WriteState.Element) + throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.XmlWriterMustBeInElement, writer.WriteState))); + InternalWriteObjectContent(writer, graph); } catch (XmlException ex) { @@ -175,11 +163,10 @@ internal void WriteObjectContentHandleExceptions(XmlWriterDelegator writer, obje } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal void WriteEndObjectHandleExceptions(XmlWriterDelegator writer) + internal void WriteEndObjectHandleExceptions(XmlWriterDelegator writer!!) { try { - CheckNull(writer, nameof(writer)); InternalWriteEndObject(writer); } catch (XmlException ex) @@ -239,16 +226,14 @@ internal static bool IsContractDeclared(DataContract contract, DataContract decl } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual object? ReadObject(Stream stream) + public virtual object? ReadObject(Stream stream!!) { - CheckNull(stream, nameof(stream)); return ReadObject(XmlDictionaryReader.CreateTextReader(stream, XmlDictionaryReaderQuotas.Max)); } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual object? ReadObject(XmlReader reader) + public virtual object? ReadObject(XmlReader reader!!) { - CheckNull(reader, nameof(reader)); return ReadObject(XmlDictionaryReader.CreateDictionaryReader(reader)); } @@ -259,9 +244,8 @@ internal static bool IsContractDeclared(DataContract contract, DataContract decl } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual object? ReadObject(XmlReader reader, bool verifyObjectName) + public virtual object? ReadObject(XmlReader reader!!, bool verifyObjectName) { - CheckNull(reader, nameof(reader)); return ReadObject(XmlDictionaryReader.CreateDictionaryReader(reader), verifyObjectName); } @@ -269,9 +253,8 @@ internal static bool IsContractDeclared(DataContract contract, DataContract decl public abstract object? ReadObject(XmlDictionaryReader reader, bool verifyObjectName); [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public virtual bool IsStartObject(XmlReader reader) + public virtual bool IsStartObject(XmlReader reader!!) { - CheckNull(reader, nameof(reader)); return IsStartObject(XmlDictionaryReader.CreateDictionaryReader(reader)); } @@ -304,11 +287,10 @@ internal virtual bool InternalIsStartObject(XmlReaderDelegator reader) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal object? ReadObjectHandleExceptions(XmlReaderDelegator reader, bool verifyObjectName, DataContractResolver? dataContractResolver) + internal object? ReadObjectHandleExceptions(XmlReaderDelegator reader!!, bool verifyObjectName, DataContractResolver? dataContractResolver) { try { - CheckNull(reader, nameof(reader)); return InternalReadObject(reader, verifyObjectName, dataContractResolver); } catch (XmlException ex) @@ -322,11 +304,10 @@ internal virtual bool InternalIsStartObject(XmlReaderDelegator reader) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - internal bool IsStartObjectHandleExceptions(XmlReaderDelegator reader) + internal bool IsStartObjectHandleExceptions(XmlReaderDelegator reader!!) { try { - CheckNull(reader, nameof(reader)); return InternalIsStartObject(reader); } catch (XmlException ex) @@ -384,12 +365,6 @@ internal bool IsRootElement(XmlReaderDelegator reader, DataContract contract, Xm } } - internal static void CheckNull(object obj, string name) - { - if (obj == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(name)); - } - internal static string TryAddLineInfo(XmlReaderDelegator reader, string errorMessage) { if (reader.HasLineInfo()) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlReaderDelegator.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlReaderDelegator.cs index 3a05de1395bf21..c5649a3ea09c3d 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlReaderDelegator.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlReaderDelegator.cs @@ -15,9 +15,8 @@ internal class XmlReaderDelegator protected XmlDictionaryReader? dictionaryReader; protected bool isEndOfEmptyElement; - public XmlReaderDelegator(XmlReader reader) + public XmlReaderDelegator(XmlReader reader!!) { - XmlObjectSerializer.CheckNull(reader, nameof(reader)); this.reader = reader; this.dictionaryReader = reader as XmlDictionaryReader; } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlSerializableServices.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlSerializableServices.cs index 3746d5dafdcbcf..1dfe131a5ca34f 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlSerializableServices.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlSerializableServices.cs @@ -9,10 +9,8 @@ namespace System.Runtime.Serialization public static class XmlSerializableServices { - public static XmlNode[] ReadNodes(XmlReader xmlReader) + public static XmlNode[] ReadNodes(XmlReader xmlReader!!) { - if (xmlReader == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(xmlReader)); XmlDocument doc = new XmlDocument(); List nodeList = new List(); if (xmlReader.MoveToFirstAttribute()) @@ -52,10 +50,8 @@ private static bool IsValidAttribute(XmlReader xmlReader) xmlReader.LocalName != "xmlns"; } - public static void WriteNodes(XmlWriter xmlWriter, XmlNode?[]? nodes) + public static void WriteNodes(XmlWriter xmlWriter!!, XmlNode?[]? nodes) { - if (xmlWriter == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(xmlWriter)); if (nodes != null) for (int i = 0; i < nodes.Length; i++) if (nodes[i] != null) @@ -63,12 +59,8 @@ public static void WriteNodes(XmlWriter xmlWriter, XmlNode?[]? nodes) } internal static string AddDefaultSchemaMethodName = "AddDefaultSchema"; - public static void AddDefaultSchema(XmlSchemaSet schemas, XmlQualifiedName typeQName) + public static void AddDefaultSchema(XmlSchemaSet schemas!!, XmlQualifiedName typeQName!!) { - if (schemas == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(schemas)); - if (typeQName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(typeQName)); SchemaExporter.AddDefaultXmlType(schemas, typeQName.Name, typeQName.Namespace); } } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlWriterDelegator.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlWriterDelegator.cs index f0be0f4e66f5c9..98a44843b6a4d7 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlWriterDelegator.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XmlWriterDelegator.cs @@ -14,9 +14,8 @@ internal class XmlWriterDelegator internal int depth; private int _prefixes; - public XmlWriterDelegator(XmlWriter writer) + public XmlWriterDelegator(XmlWriter writer!!) { - XmlObjectSerializer.CheckNull(writer, nameof(writer)); this.writer = writer; this.dictionaryWriter = writer as XmlDictionaryWriter; } diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs index 0c18636e7846f7..8e6837bbd28d39 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Runtime/Serialization/XsdDataContractExporter.cs @@ -74,11 +74,8 @@ private void TraceExportError(Exception exception) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public void Export(ICollection assemblies) + public void Export(ICollection assemblies!!) { - if (assemblies == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(assemblies))); - TraceExportBegin(); DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); @@ -106,11 +103,8 @@ public void Export(ICollection assemblies) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public void Export(ICollection types) + public void Export(ICollection types!!) { - if (types == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(types))); - TraceExportBegin(); DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); @@ -135,11 +129,8 @@ public void Export(ICollection types) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public void Export(Type type) + public void Export(Type type!!) { - if (type == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); - TraceExportBegin(); DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); @@ -158,10 +149,8 @@ public void Export(Type type) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public XmlQualifiedName GetSchemaTypeName(Type type) + public XmlQualifiedName GetSchemaTypeName(Type type!!) { - if (type == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); type = GetSurrogatedType(type); DataContract dataContract = DataContract.GetDataContract(type); DataContractSet.EnsureTypeNotGeneric(dataContract.UnderlyingType); @@ -172,10 +161,8 @@ public XmlQualifiedName GetSchemaTypeName(Type type) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public XmlSchemaType? GetSchemaType(Type type) + public XmlSchemaType? GetSchemaType(Type type!!) { - if (type == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); type = GetSurrogatedType(type); DataContract dataContract = DataContract.GetDataContract(type); DataContractSet.EnsureTypeNotGeneric(dataContract.UnderlyingType); @@ -186,10 +173,8 @@ public XmlQualifiedName GetSchemaTypeName(Type type) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public XmlQualifiedName? GetRootElementName(Type type) + public XmlQualifiedName? GetRootElementName(Type type!!) { - if (type == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); type = GetSurrogatedType(type); DataContract dataContract = DataContract.GetDataContract(type); DataContractSet.EnsureTypeNotGeneric(dataContract.UnderlyingType); @@ -256,11 +241,8 @@ private void AddKnownTypes() } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public bool CanExport(ICollection assemblies) + public bool CanExport(ICollection assemblies!!) { - if (assemblies == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(assemblies))); - DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { @@ -290,11 +272,8 @@ public bool CanExport(ICollection assemblies) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public bool CanExport(ICollection types) + public bool CanExport(ICollection types!!) { - if (types == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(types))); - DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { @@ -321,11 +300,8 @@ public bool CanExport(ICollection types) } [RequiresUnreferencedCode(DataContract.SerializerTrimmerWarning)] - public bool CanExport(Type type) + public bool CanExport(Type type!!) { - if (type == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); - DataContractSet? oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Text/Base64Encoding.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Text/Base64Encoding.cs index 90e465237ed2c3..33145ae8df9d51 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Text/Base64Encoding.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Text/Base64Encoding.cs @@ -53,10 +53,8 @@ private bool IsValidTailBytes(int v3, int v4) return !(v3 == 64 && v4 != 64); } - public unsafe override int GetByteCount(char[] chars, int index, int count) + public unsafe override int GetByteCount(char[] chars!!, int index, int count) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); if (index < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(index), SR.ValueMustBeNonNegative)); if (index > chars.Length) @@ -109,9 +107,7 @@ public unsafe override int GetByteCount(char[] chars, int index, int count) public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); - + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative)); if (charIndex > chars.Length) @@ -122,8 +118,7 @@ public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, if (charCount > chars.Length - charIndex) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, chars.Length - charIndex))); - if (bytes == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(bytes))); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative)); if (byteIndex > bytes.Length) @@ -188,8 +183,7 @@ public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, public unsafe int GetBytes(byte[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative)); if (charIndex > chars.Length) @@ -200,8 +194,7 @@ public unsafe int GetBytes(byte[] chars, int charIndex, int charCount, byte[] by if (charCount > chars.Length - charIndex) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, chars.Length - charIndex))); - if (bytes == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(bytes))); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative)); if (byteIndex > bytes.Length) @@ -276,8 +269,7 @@ public override int GetCharCount(byte[] bytes, int index, int count) public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { - if (bytes == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(bytes))); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative)); if (byteIndex > bytes.Length) @@ -288,8 +280,7 @@ public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, bytes.Length - byteIndex))); int charCount = GetCharCount(bytes, byteIndex, byteCount); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative)); if (charIndex > chars.Length) @@ -365,8 +356,7 @@ public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, public unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, byte[] chars, int charIndex) { - if (bytes == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(bytes))); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative)); if (byteIndex > bytes.Length) @@ -377,8 +367,7 @@ public unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, byte[] ch throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(byteCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, bytes.Length - byteIndex))); int charCount = GetCharCount(bytes, byteIndex, byteCount); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative)); if (charIndex > chars.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Text/BinHexEncoding.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Text/BinHexEncoding.cs index 2d2c21442d3647..be78f4037422be 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Text/BinHexEncoding.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Text/BinHexEncoding.cs @@ -24,8 +24,7 @@ public override int GetByteCount(char[] chars, int index, int count) public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { - if (chars == null) - throw new ArgumentNullException(nameof(chars)); + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative); if (charIndex > chars.Length) @@ -34,8 +33,7 @@ public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, throw new ArgumentOutOfRangeException(nameof(charCount), SR.ValueMustBeNonNegative); if (charCount > chars.Length - charIndex) throw new ArgumentOutOfRangeException(nameof(charCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, chars.Length - charIndex)); - if (bytes == null) - throw new ArgumentNullException(nameof(bytes)); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative); if (byteIndex > bytes.Length) @@ -68,8 +66,7 @@ public override int GetCharCount(byte[] bytes, int index, int count) public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes)); + ArgumentNullException.ThrowIfNull(bytes); if (byteIndex < 0) throw new ArgumentOutOfRangeException(nameof(byteIndex), SR.ValueMustBeNonNegative); if (byteIndex > bytes.Length) @@ -79,8 +76,7 @@ public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, if (byteCount > bytes.Length - byteIndex) throw new ArgumentOutOfRangeException(nameof(byteCount), SR.Format(SR.SizeExceedsRemainingBufferSpace, bytes.Length - byteIndex)); int charCount = GetCharCount(bytes, byteIndex, byteCount); - if (chars == null) - throw new ArgumentNullException(nameof(chars)); + ArgumentNullException.ThrowIfNull(chars); if (charIndex < 0) throw new ArgumentOutOfRangeException(nameof(charIndex), SR.ValueMustBeNonNegative); if (charIndex > chars.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/UniqueId.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/UniqueId.cs index 2a922cce9c5855..bf27460e9f7478 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/UniqueId.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/UniqueId.cs @@ -62,10 +62,8 @@ public UniqueId(byte[] guid) : this(guid, 0) { } - public unsafe UniqueId(byte[] guid, int offset) + public unsafe UniqueId(byte[] guid!!, int offset) { - if (guid == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(guid))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > guid.Length) @@ -79,10 +77,8 @@ public unsafe UniqueId(byte[] guid, int offset) } } - public unsafe UniqueId(string value) + public unsafe UniqueId(string value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); if (value.Length == 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FormatException(SR.XmlInvalidUniqueId)); fixed (char* pch = value) @@ -92,10 +88,8 @@ public unsafe UniqueId(string value) _s = value; } - public unsafe UniqueId(char[] chars, int offset, int count) + public unsafe UniqueId(char[] chars!!, int offset, int count) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) @@ -198,13 +192,10 @@ private unsafe void UnsafeParse(char* chars, int charCount) } } - public int ToCharArray(char[] chars, int offset) + public int ToCharArray(char[] chars!!, int offset) { int count = CharArrayLength; - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); - if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) @@ -284,8 +275,7 @@ public unsafe bool TryGetGuid(byte[] buffer, int offset) if (!IsGuid) return false; - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); + ArgumentNullException.ThrowIfNull(buffer); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs index ae0a25615afadc..065175d4e655cf 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseReader.cs @@ -130,11 +130,8 @@ protected void MoveToNode(XmlNode node) _value = null; } - protected void MoveToInitial(XmlDictionaryReaderQuotas quotas) + protected void MoveToInitial(XmlDictionaryReaderQuotas quotas!!) { - if (quotas == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(quotas)); - quotas.InternalCopyTo(_quotas); _quotas.MakeReadOnly(); _nsMgr.Clear(); @@ -542,10 +539,8 @@ private XmlAttributeNode GetAttributeNode(int index) return _attributeNodes![index]; } - private XmlAttributeNode? GetAttributeNode(string name) + private XmlAttributeNode? GetAttributeNode(string name!!) { - if (name == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(name))); if (!_node.CanGetAttribute) return null; int index = name.IndexOf(':'); @@ -590,10 +585,8 @@ private XmlAttributeNode GetAttributeNode(int index) return null; } - private XmlAttributeNode? GetAttributeNode(string localName, string? namespaceUri) + private XmlAttributeNode? GetAttributeNode(string localName!!, string? namespaceUri) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); if (namespaceUri == null) namespaceUri = string.Empty; if (!_node.CanGetAttribute) @@ -617,10 +610,8 @@ private XmlAttributeNode GetAttributeNode(int index) return null; } - private XmlAttributeNode? GetAttributeNode(XmlDictionaryString localName, XmlDictionaryString namespaceUri) + private XmlAttributeNode? GetAttributeNode(XmlDictionaryString localName!!, XmlDictionaryString namespaceUri) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); if (namespaceUri == null) namespaceUri = XmlDictionaryString.Empty; if (!_node.CanGetAttribute) @@ -989,30 +980,22 @@ public override string Prefix } - public override bool IsLocalName(string localName) + public override bool IsLocalName(string localName!!) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); return _node.IsLocalName(localName); } - public override bool IsLocalName(XmlDictionaryString localName) + public override bool IsLocalName(XmlDictionaryString localName!!) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); return _node.IsLocalName(localName); } - public override bool IsNamespaceUri(string namespaceUri) + public override bool IsNamespaceUri(string namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); return _node.IsNamespaceUri(namespaceUri); } - public override bool IsNamespaceUri(XmlDictionaryString namespaceUri) + public override bool IsNamespaceUri(XmlDictionaryString namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); return _node.IsNamespaceUri(namespaceUri); } public override sealed bool IsStartElement() @@ -1060,21 +1043,13 @@ public override bool IsStartElement(string localName, string namespaceUri) return (_node.NodeType == XmlNodeType.Element || IsStartElement()) && _node.LocalName == localName && _node.IsNamespaceUri(namespaceUri); } - public override bool IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri) + public override bool IsStartElement(XmlDictionaryString localName!!, XmlDictionaryString namespaceUri!!) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); return (_node.NodeType == XmlNodeType.Element || IsStartElement()) && _node.LocalName == localName && _node.IsNamespaceUri(namespaceUri); } - public override int IndexOfLocalName(string[] localNames, string namespaceUri) + public override int IndexOfLocalName(string[] localNames!!, string namespaceUri!!) { - if (localNames == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localNames)); - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); QNameType qnameType = _node.QNameType; if (_node.IsNamespaceUri(namespaceUri)) { @@ -1111,12 +1086,8 @@ public override int IndexOfLocalName(string[] localNames, string namespaceUri) return -1; } - public override int IndexOfLocalName(XmlDictionaryString[] localNames, XmlDictionaryString namespaceUri) + public override int IndexOfLocalName(XmlDictionaryString[] localNames!!, XmlDictionaryString namespaceUri!!) { - if (localNames == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localNames)); - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); QNameType qnameType = _node.QNameType; if (_node.IsNamespaceUri(namespaceUri)) { @@ -1153,10 +1124,8 @@ public override int IndexOfLocalName(XmlDictionaryString[] localNames, XmlDictio return -1; } - public override int ReadValueChunk(char[] chars, int offset, int count) + public override int ReadValueChunk(char[] chars!!, int offset, int count) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) @@ -1183,10 +1152,8 @@ public override int ReadValueChunk(char[] chars, int offset, int count) return actual; } - public override int ReadValueAsBase64(byte[] buffer, int offset, int count) + public override int ReadValueAsBase64(byte[] buffer!!, int offset, int count) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > buffer.Length) @@ -1343,10 +1310,8 @@ public override int ReadElementContentAsBase64(byte[] buffer, int offset, int co return i; } - public override int ReadContentAsBase64(byte[] buffer, int offset, int count) + public override int ReadContentAsBase64(byte[] buffer!!, int offset, int count) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > buffer.Length) @@ -1381,10 +1346,8 @@ public override byte[] ReadContentAsBinHex() return ReadContentAsBinHex(_quotas.MaxArrayLength); } - public override int ReadContentAsBinHex(byte[] buffer, int offset, int count) + public override int ReadContentAsBinHex(byte[] buffer!!, int offset, int count) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > buffer.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs index bc01841615de42..f67c2c12c8c1fa 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBaseWriter.cs @@ -154,8 +154,7 @@ public override void WriteXmlnsAttribute(string? prefix, string ns) if (IsClosed) ThrowClosed(); - if (ns == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(ns)); + ArgumentNullException.ThrowIfNull(ns); if (_writeState != WriteState.Element) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.XmlInvalidWriteState, "WriteXmlnsAttribute", WriteState.ToString()))); @@ -179,8 +178,7 @@ public override void WriteXmlnsAttribute(string? prefix, XmlDictionaryString ns) if (IsClosed) ThrowClosed(); - if (ns == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(ns)); + ArgumentNullException.ThrowIfNull(ns); if (_writeState != WriteState.Element) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.XmlInvalidWriteState, "WriteXmlnsAttribute", WriteState.ToString()))); @@ -208,7 +206,7 @@ private void StartAttribute([AllowNull] ref string prefix, string localName, str WriteEndAttribute(); if (localName == null || (localName.Length == 0 && prefix != "xmlns")) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); + throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); if (_writeState != WriteState.Element) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.XmlInvalidWriteState, "WriteStartAttribute", WriteState.ToString()))); @@ -502,8 +500,7 @@ private void StartElement(ref string? prefix, string localName, string? ns, XmlD if (_documentState == DocumentState.Epilog) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.XmlOnlyOneRoot)); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); + ArgumentNullException.ThrowIfNull(localName); if (localName.Length == 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.InvalidLocalNameEmpty, nameof(localName))); if (_writeState == WriteState.Attribute) @@ -547,10 +544,7 @@ private void PreStartElementAsyncCheck(string? prefix, string localName, string? if (_documentState == DocumentState.Epilog) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.XmlOnlyOneRoot)); - if (localName == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); - if (localName.Length == 0) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.InvalidLocalNameEmpty, nameof(localName))); + ArgumentException.ThrowIfNullOrEmpty(localName); if (_writeState == WriteState.Attribute) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.Format(SR.XmlInvalidWriteState, "WriteStartElement", WriteState.ToString()))); } @@ -821,11 +815,8 @@ private Task EndStartElementAsync() return _writer.WriteEndStartElementAsync(false); } - public override string? LookupPrefix(string ns) + public override string? LookupPrefix(string ns!!) { - if (ns == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(ns))); - if (IsClosed) ThrowClosed(); @@ -849,10 +840,7 @@ public override void WriteQualifiedName(string localName, string? namespaceUri) { if (IsClosed) ThrowClosed(); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); - if (localName.Length == 0) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.InvalidLocalNameEmpty, nameof(localName))); + ArgumentException.ThrowIfNullOrEmpty(localName); if (namespaceUri == null) namespaceUri = string.Empty; string prefix = GetQualifiedNamePrefix(namespaceUri, null); @@ -868,8 +856,7 @@ public override void WriteQualifiedName(XmlDictionaryString localName, XmlDictio { if (IsClosed) ThrowClosed(); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); + ArgumentNullException.ThrowIfNull(localName); if (localName.Value.Length == 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.InvalidLocalNameEmpty, nameof(localName))); if (namespaceUri == null) @@ -976,8 +963,7 @@ public override void WriteWhitespace(string? whitespace) if (IsClosed) ThrowClosed(); - if (whitespace == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(whitespace)); + ArgumentNullException.ThrowIfNull(whitespace); for (int i = 0; i < whitespace.Length; ++i) { @@ -1021,8 +1007,7 @@ public override void WriteString(XmlDictionaryString? value) if (IsClosed) ThrowClosed(); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (value.Value.Length > 0) { @@ -1045,8 +1030,7 @@ public override void WriteChars(char[] chars, int offset, int count) if (IsClosed) ThrowClosed(); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (offset < 0) @@ -1102,8 +1086,7 @@ public override void WriteRaw(char[] chars, int offset, int count) if (IsClosed) ThrowClosed(); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (offset < 0) @@ -1177,10 +1160,9 @@ public override void WriteValue(object value) if (IsClosed) ThrowClosed(); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); + ArgumentNullException.ThrowIfNull(value); - else if (value is object[]) + if (value is object[]) { WriteValue((object[])value); } @@ -1199,8 +1181,7 @@ protected void WritePrimitiveValue(object value) if (IsClosed) ThrowClosed(); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); + ArgumentNullException.ThrowIfNull(value); if (value is ulong) { @@ -1418,8 +1399,7 @@ public override void WriteValue(UniqueId value) if (IsClosed) ThrowClosed(); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); + ArgumentNullException.ThrowIfNull(value); FlushBase64(); if (_attributeValue != null) @@ -1480,8 +1460,7 @@ public override void WriteBase64(byte[] buffer, int offset, int count) if (IsClosed) ThrowClosed(); - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); + ArgumentNullException.ThrowIfNull(buffer); // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (offset < 0) @@ -1545,8 +1524,7 @@ public override Task WriteBase64Async(byte[] buffer, int offset, int count) if (IsClosed) ThrowClosed(); - if (buffer == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); + ArgumentNullException.ThrowIfNull(buffer); // Not checking upper bound because it will be caught by "count". This is what XmlTextWriter does. if (offset < 0) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReader.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReader.cs index df9162f18bd9dd..271be9228623eb 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReader.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReader.cs @@ -34,14 +34,12 @@ public XmlBinaryReader() { } - public void SetInput(byte[] buffer, int offset, int count, + public void SetInput(byte[] buffer!!, int offset, int count, IXmlDictionary? dictionary, XmlDictionaryReaderQuotas quotas, XmlBinaryReaderSession? session, OnXmlDictionaryReaderClose? onClose) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(buffer)); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > buffer.Length) @@ -55,14 +53,12 @@ public void SetInput(byte[] buffer, int offset, int count, _buffered = true; } - public void SetInput(Stream stream, + public void SetInput(Stream stream!!, IXmlDictionary? dictionary, XmlDictionaryReaderQuotas quotas, XmlBinaryReaderSession? session, OnXmlDictionaryReaderClose? onClose) { - if (stream == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(stream)); MoveToInitial(quotas, session, null); BufferReader.SetBuffer(stream, dictionary, session); _buffered = false; @@ -1213,10 +1209,8 @@ private bool IsStartArray(XmlDictionaryString localName, XmlDictionaryString nam return IsStartElement(localName, namespaceUri) && _arrayState == ArrayState.Element && _arrayNodeType == nodeType && !Signing; } - private void CheckArray(Array array, int offset, int count) + private void CheckArray(Array array!!, int offset, int count) { - if (array == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(array))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > array.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReaderSession.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReaderSession.cs index 0c04d396a7edcb..550f6a87fb96c5 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReaderSession.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryReaderSession.cs @@ -24,8 +24,7 @@ public XmlDictionaryString Add(int id, string value) { if (id < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(id), SR.XmlInvalidID)); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); + ArgumentNullException.ThrowIfNull(value); XmlDictionaryString? xmlString; if (TryLookup(id, out _)) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.XmlIDDefined)); @@ -71,11 +70,8 @@ public bool TryLookup(int key, [NotNullWhen(true)] out XmlDictionaryString? resu return false; } - public bool TryLookup(string value, [NotNullWhen(true)] out XmlDictionaryString? result) + public bool TryLookup(string value!!, [NotNullWhen(true)] out XmlDictionaryString? result) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); - if (_strings != null) { for (int i = 0; i < _strings.Length; i++) @@ -105,10 +101,8 @@ public bool TryLookup(string value, [NotNullWhen(true)] out XmlDictionaryString? return false; } - public bool TryLookup(XmlDictionaryString value, [NotNullWhen(true)] out XmlDictionaryString? result) + public bool TryLookup(XmlDictionaryString value!!, [NotNullWhen(true)] out XmlDictionaryString? result) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); if (value.Dictionary != this) { result = null; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriter.cs index 53a9d45ffce18f..d955815ab184e5 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriter.cs @@ -1075,10 +1075,8 @@ internal sealed class XmlBinaryWriter : XmlBaseWriter, IXmlBinaryWriterInitializ private byte[]? _bytes; - public void SetOutput(Stream stream, IXmlDictionary? dictionary, XmlBinaryWriterSession? session, bool ownsStream) + public void SetOutput(Stream stream!!, IXmlDictionary? dictionary, XmlBinaryWriterSession? session, bool ownsStream) { - if (stream == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(stream))); if (_writer == null) _writer = new XmlBinaryNodeWriter(); _writer.SetOutput(stream, dictionary, session, ownsStream); @@ -1209,10 +1207,8 @@ private unsafe void UnsafeWriteArray(string? prefix, XmlDictionaryString localNa WriteEndArray(); } - private void CheckArray(Array array, int offset, int count) + private void CheckArray(Array array!!, int offset, int count) { - if (array == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(array))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > array.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriterSession.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriterSession.cs index 5a26c4d3541731..a622ce29a3edb3 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriterSession.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlBinaryWriterSession.cs @@ -25,11 +25,9 @@ public XmlBinaryWriterSession() _strings = new PriorityDictionary(); } - public virtual bool TryAdd(XmlDictionaryString value, out int key) + public virtual bool TryAdd(XmlDictionaryString value!!, out int key) { IntArray? keys; - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); if (_maps.TryGetValue(value.Dictionary, out keys)) { diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlCanonicalWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlCanonicalWriter.cs index 997c9fd2aa022c..b613acc5edcfba 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlCanonicalWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlCanonicalWriter.cs @@ -54,11 +54,8 @@ public XmlCanonicalWriter() { } - public void SetOutput(Stream stream, bool includeComments, string[]? inclusivePrefixes) + public void SetOutput(Stream stream!!, bool includeComments, string[]? inclusivePrefixes) { - if (stream == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(stream)); - if (_writer == null) { _writer = new XmlUTF8NodeWriter(s_isEscapedAttributeChar, s_isEscapedElementChar); @@ -144,10 +141,8 @@ public void WriteDeclaration() { } - public void WriteComment(string value) + public void WriteComment(string value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); ThrowIfClosed(); if (_includeComments) { @@ -183,12 +178,8 @@ private void EndElement() _xmlnsOffset = _scopes[_depth].xmlnsOffset; } - public void WriteStartElement(string prefix, string localName) + public void WriteStartElement(string prefix!!, string localName!!) { - if (prefix == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(prefix)); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); ThrowIfClosed(); bool isRootElement = (_depth == 0); @@ -217,8 +208,7 @@ public void WriteStartElement(string prefix, string localName) public void WriteStartElement(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { - if (prefixBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(prefixBuffer))); + ArgumentNullException.ThrowIfNull(prefixBuffer); if (prefixOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixOffset), SR.ValueMustBeNonNegative)); if (prefixOffset > prefixBuffer.Length) @@ -228,8 +218,7 @@ public void WriteStartElement(byte[] prefixBuffer, int prefixOffset, int prefixL if (prefixLength > prefixBuffer.Length - prefixOffset) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixLength), SR.Format(SR.SizeExceedsRemainingBufferSpace, prefixBuffer.Length - prefixOffset))); - if (localNameBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localNameBuffer))); + ArgumentNullException.ThrowIfNull(localNameBuffer); if (localNameOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(localNameOffset), SR.ValueMustBeNonNegative)); if (localNameOffset > localNameBuffer.Length) @@ -347,12 +336,8 @@ public void WriteEndStartElement(bool isEmpty) _elementBuffer = null; } - public void WriteEndElement(string prefix, string localName) + public void WriteEndElement(string prefix!!, string localName!!) { - if (prefix == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(prefix)); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); ThrowIfClosed(); _writer.WriteEndElement(prefix, localName); EndElement(); @@ -374,12 +359,8 @@ private void EnsureXmlnsBuffer(int byteCount) } [MemberNotNull(nameof(_xmlnsAttributes))] - public void WriteXmlnsAttribute(string prefix, string ns) + public void WriteXmlnsAttribute(string prefix!!, string ns!!) { - if (prefix == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(prefix)); - if (ns == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(ns)); ThrowIfClosed(); if (prefix.Length > int.MaxValue - ns.Length) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(ns), SR.Format(SR.CombinedPrefixNSLength, int.MaxValue / maxBytesPerChar))); @@ -401,8 +382,7 @@ public void WriteXmlnsAttribute(string prefix, string ns) [MemberNotNull(nameof(_xmlnsAttributes))] public void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] nsBuffer, int nsOffset, int nsLength) { - if (prefixBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(prefixBuffer))); + ArgumentNullException.ThrowIfNull(prefixBuffer); if (prefixOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixOffset), SR.ValueMustBeNonNegative)); if (prefixOffset > prefixBuffer.Length) @@ -412,8 +392,7 @@ public void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefi if (prefixLength > prefixBuffer.Length - prefixOffset) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixLength), SR.Format(SR.SizeExceedsRemainingBufferSpace, prefixBuffer.Length - prefixOffset))); - if (nsBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(nsBuffer))); + ArgumentNullException.ThrowIfNull(nsBuffer); if (nsOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(nsOffset), SR.ValueMustBeNonNegative)); if (nsOffset > nsBuffer.Length) @@ -439,12 +418,8 @@ public void WriteXmlnsAttribute(byte[] prefixBuffer, int prefixOffset, int prefi AddXmlnsAttribute(ref xmlnsAttribute); } - public void WriteStartAttribute(string prefix, string localName) + public void WriteStartAttribute(string prefix!!, string localName!!) { - if (prefix == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(prefix)); - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); ThrowIfClosed(); _attribute.offset = _elementWriter.Position; _attribute.length = 0; @@ -459,8 +434,7 @@ public void WriteStartAttribute(string prefix, string localName) public void WriteStartAttribute(byte[] prefixBuffer, int prefixOffset, int prefixLength, byte[] localNameBuffer, int localNameOffset, int localNameLength) { - if (prefixBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(prefixBuffer))); + ArgumentNullException.ThrowIfNull(prefixBuffer); if (prefixOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixOffset), SR.ValueMustBeNonNegative)); if (prefixOffset > prefixBuffer.Length) @@ -470,8 +444,7 @@ public void WriteStartAttribute(byte[] prefixBuffer, int prefixOffset, int prefi if (prefixLength > prefixBuffer.Length - prefixOffset) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(prefixLength), SR.Format(SR.SizeExceedsRemainingBufferSpace, prefixBuffer.Length - prefixOffset))); - if (localNameBuffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localNameBuffer))); + ArgumentNullException.ThrowIfNull(localNameBuffer); if (localNameOffset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(localNameOffset), SR.ValueMustBeNonNegative)); if (localNameOffset > localNameBuffer.Length) @@ -514,10 +487,8 @@ public void WriteCharEntity(int ch) } } - public void WriteEscapedText(string value) + public void WriteEscapedText(string value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); ThrowIfClosed(); // Skip all white spaces before the start of root element. if (_depth > 0) @@ -533,10 +504,8 @@ public void WriteEscapedText(string value) } } - public void WriteEscapedText(byte[] chars, int offset, int count) + public void WriteEscapedText(byte[] chars!!, int offset, int count) { - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) @@ -593,8 +562,7 @@ public void WriteText(int ch) public void WriteText(byte[] chars, int offset, int count) { ThrowIfClosed(); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) @@ -613,10 +581,8 @@ public void WriteText(byte[] chars, int offset, int count) } } - public void WriteText(string value) + public void WriteText(string value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); if (value.Length > 0) { if (_inStartElement) @@ -633,8 +599,7 @@ public void WriteText(string value) public void WriteText(char[] chars, int offset, int count) { ThrowIfClosed(); - if (chars == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(chars))); + ArgumentNullException.ThrowIfNull(chars); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > chars.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionary.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionary.cs index d078ffcf5bff4f..34c000a5087215 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionary.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionary.cs @@ -84,10 +84,8 @@ public virtual bool TryLookup(int key, [NotNullWhen(true)] out XmlDictionaryStri return true; } - public virtual bool TryLookup(XmlDictionaryString value, [NotNullWhen(true)] out XmlDictionaryString? result) + public virtual bool TryLookup(XmlDictionaryString value!!, [NotNullWhen(true)] out XmlDictionaryString? result) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); if (value.Dictionary != this) { result = null; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs index 6692a66ac2b15e..49b24a4a436bc5 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReader.cs @@ -19,11 +19,8 @@ public abstract class XmlDictionaryReader : XmlReader { internal const int MaxInitialArrayLength = 65535; - public static XmlDictionaryReader CreateDictionaryReader(XmlReader reader) + public static XmlDictionaryReader CreateDictionaryReader(XmlReader reader!!) { - if (reader == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(reader)); - XmlDictionaryReader? dictionaryReader = reader as XmlDictionaryReader; if (dictionaryReader == null) @@ -34,10 +31,8 @@ public static XmlDictionaryReader CreateDictionaryReader(XmlReader reader) return dictionaryReader; } - public static XmlDictionaryReader CreateBinaryReader(byte[] buffer, XmlDictionaryReaderQuotas quotas) + public static XmlDictionaryReader CreateBinaryReader(byte[] buffer!!, XmlDictionaryReaderQuotas quotas) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(buffer)); return CreateBinaryReader(buffer, 0, buffer.Length, quotas); } @@ -93,10 +88,8 @@ public static XmlDictionaryReader CreateBinaryReader(Stream stream, return reader; } - public static XmlDictionaryReader CreateTextReader(byte[] buffer, XmlDictionaryReaderQuotas quotas) + public static XmlDictionaryReader CreateTextReader(byte[] buffer!!, XmlDictionaryReaderQuotas quotas) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(buffer)); return CreateTextReader(buffer, 0, buffer.Length, quotas); } @@ -129,11 +122,8 @@ public static XmlDictionaryReader CreateTextReader(Stream stream, Encoding? enco return reader; } - public static XmlDictionaryReader CreateMtomReader(Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas) + public static XmlDictionaryReader CreateMtomReader(Stream stream, Encoding encoding!!, XmlDictionaryReaderQuotas quotas) { - if (encoding == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(encoding)); - return CreateMtomReader(stream, new Encoding[1] { encoding }, quotas); } @@ -153,11 +143,8 @@ public static XmlDictionaryReader CreateMtomReader(Stream stream, Encoding[] enc throw new PlatformNotSupportedException(SR.PlatformNotSupported_MtomEncoding); } - public static XmlDictionaryReader CreateMtomReader(byte[] buffer, int offset, int count, Encoding encoding, XmlDictionaryReaderQuotas quotas) + public static XmlDictionaryReader CreateMtomReader(byte[] buffer, int offset, int count, Encoding encoding!!, XmlDictionaryReaderQuotas quotas) { - if (encoding == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(encoding)); - return CreateMtomReader(buffer, offset, count, new Encoding[1] { encoding }, quotas); } @@ -232,25 +219,18 @@ public virtual bool IsLocalName(string localName) return this.LocalName == localName; } - public virtual bool IsLocalName(XmlDictionaryString localName) + public virtual bool IsLocalName(XmlDictionaryString localName!!) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localName)); - return IsLocalName(localName.Value); } - public virtual bool IsNamespaceUri(string namespaceUri) + public virtual bool IsNamespaceUri(string namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); return this.NamespaceURI == namespaceUri; } - public virtual bool IsNamespaceUri(XmlDictionaryString namespaceUri) + public virtual bool IsNamespaceUri(XmlDictionaryString namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); return IsNamespaceUri(namespaceUri.Value); } @@ -297,14 +277,8 @@ public virtual bool IsStartElement(XmlDictionaryString localName, XmlDictionaryS return IsStartElement(XmlDictionaryString.GetString(localName), XmlDictionaryString.GetString(namespaceUri)); } - public virtual int IndexOfLocalName(string[] localNames, string namespaceUri) + public virtual int IndexOfLocalName(string[] localNames!!, string namespaceUri!!) { - if (localNames == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localNames)); - - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); - if (this.NamespaceURI == namespaceUri) { string localName = this.LocalName; @@ -323,14 +297,8 @@ public virtual int IndexOfLocalName(string[] localNames, string namespaceUri) return -1; } - public virtual int IndexOfLocalName(XmlDictionaryString[] localNames, XmlDictionaryString namespaceUri) + public virtual int IndexOfLocalName(XmlDictionaryString[] localNames!!, XmlDictionaryString namespaceUri!!) { - if (localNames == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(localNames)); - - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); - if (this.NamespaceURI == namespaceUri.Value) { string localName = this.LocalName; @@ -620,10 +588,8 @@ public override object ReadContentAs(Type type, IXmlNamespaceResolver? namespace return base.ReadContentAs(type, namespaceResolver); } - public virtual string ReadContentAsString(string[] strings, out int index) + public virtual string ReadContentAsString(string[] strings!!, out int index) { - if (strings == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(strings)); string s = ReadContentAsString(); index = -1; for (int i = 0; i < strings.Length; i++) @@ -640,10 +606,8 @@ public virtual string ReadContentAsString(string[] strings, out int index) return s; } - public virtual string ReadContentAsString(XmlDictionaryString[] strings, out int index) + public virtual string ReadContentAsString(XmlDictionaryString[] strings!!, out int index) { - if (strings == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(strings)); string s = ReadContentAsString(); index = -1; for (int i = 0; i < strings.Length; i++) @@ -1016,10 +980,8 @@ public virtual bool TryGetValueAsDictionaryString([NotNullWhen(true)] out XmlDic return false; } - private void CheckArray(Array array, int offset, int count) + private void CheckArray(Array array!!, int offset, int count) { - if (array == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(array))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > array.Length) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReaderQuotas.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReaderQuotas.cs index fa7730c82797e6..5f3736d7fc821a 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReaderQuotas.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryReaderQuotas.cs @@ -62,10 +62,8 @@ public static XmlDictionaryReaderQuotas Max } } - public void CopyTo(XmlDictionaryReaderQuotas quotas) + public void CopyTo(XmlDictionaryReaderQuotas quotas!!) { - if (quotas == null) - throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(quotas))); if (quotas._readOnly) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.QuotaCopyReadOnly)); diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryString.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryString.cs index 1fe0b442bae668..1738a49a5b448d 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryString.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryString.cs @@ -21,12 +21,8 @@ public class XmlDictionaryString private byte[]? _buffer; private static readonly EmptyStringDictionary s_emptyStringDictionary = new EmptyStringDictionary(); - public XmlDictionaryString(IXmlDictionary dictionary, string value, int key) + public XmlDictionaryString(IXmlDictionary dictionary!!, string value!!, int key) { - if (dictionary == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(dictionary))); - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); if (key < MinKey || key > MaxKey) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(key), SR.Format(SR.ValueMustBeInRange, MinKey, MaxKey))); _dictionary = dictionary; @@ -103,10 +99,8 @@ public XmlDictionaryString EmptyString } } - public bool TryLookup(string value, [NotNullWhen(true)] out XmlDictionaryString? result) + public bool TryLookup(string value!!, [NotNullWhen(true)] out XmlDictionaryString? result) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); if (value.Length == 0) { result = _empty; @@ -127,10 +121,8 @@ public bool TryLookup(int key, [NotNullWhen(true)] out XmlDictionaryString? resu return false; } - public bool TryLookup(XmlDictionaryString value, [NotNullWhen(true)] out XmlDictionaryString? result) + public bool TryLookup(XmlDictionaryString value!!, [NotNullWhen(true)] out XmlDictionaryString? result) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); if (value.Dictionary != this) { result = null; diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs index 6d9595800eb580..ebf732732f1ec5 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlDictionaryWriter.cs @@ -68,11 +68,8 @@ public static XmlDictionaryWriter CreateMtomWriter(Stream stream, Encoding encod throw new PlatformNotSupportedException(SR.PlatformNotSupported_MtomEncoding); } - public static XmlDictionaryWriter CreateDictionaryWriter(XmlWriter writer) + public static XmlDictionaryWriter CreateDictionaryWriter(XmlWriter writer!!) { - if (writer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(writer)); - XmlDictionaryWriter? dictionaryWriter = writer as XmlDictionaryWriter; if (dictionaryWriter == null) @@ -114,10 +111,8 @@ public void WriteAttributeString(XmlDictionaryString localName, XmlDictionaryStr WriteAttributeString((string?)null, localName, namespaceUri, value); } - public virtual void WriteXmlnsAttribute(string? prefix, string namespaceUri) + public virtual void WriteXmlnsAttribute(string? prefix, string namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); if (prefix == null) { if (LookupPrefix(namespaceUri) != null) @@ -166,10 +161,8 @@ public virtual void WriteString(XmlDictionaryString? value) WriteString(XmlDictionaryString.GetString(value)); } - public virtual void WriteQualifiedName(XmlDictionaryString localName, XmlDictionaryString? namespaceUri) + public virtual void WriteQualifiedName(XmlDictionaryString localName!!, XmlDictionaryString? namespaceUri) { - if (localName == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(localName))); if (namespaceUri == null) namespaceUri = XmlDictionaryString.Empty; #pragma warning suppress 56506 // Microsoft, XmlDictionaryString.Empty is never null @@ -182,11 +175,8 @@ public virtual void WriteValue(XmlDictionaryString? value) } - public virtual void WriteValue(UniqueId value) + public virtual void WriteValue(UniqueId value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value)); - WriteString(value.ToString()); } @@ -200,11 +190,8 @@ public virtual void WriteValue(TimeSpan value) WriteString(XmlConvert.ToString(value)); } - public virtual void WriteValue(IStreamProvider value) + public virtual void WriteValue(IStreamProvider value!!) { - if (value == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(value))); - Stream stream = value.GetStream(); if (stream == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.XmlInvalidStream)); @@ -394,10 +381,8 @@ public override void WriteNode(XmlReader reader, bool defattr) base.WriteNode(reader, defattr); } - public virtual void WriteNode(XmlDictionaryReader reader, bool defattr) + public virtual void WriteNode(XmlDictionaryReader reader!!, bool defattr) { - if (reader == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(reader))); int d = (reader.NodeType == XmlNodeType.None ? -1 : reader.Depth); do { @@ -447,10 +432,8 @@ public virtual void WriteNode(XmlDictionaryReader reader, bool defattr) while (d < reader.Depth || (d == reader.Depth && reader.NodeType == XmlNodeType.EndElement)); } - private void CheckArray(Array array, int offset, int count) + private void CheckArray(Array array!!, int offset, int count) { - if (array == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(array))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > array.Length) @@ -850,10 +833,8 @@ public override void WriteValue(long value) _writer.WriteValue(value); } - public override void WriteXmlnsAttribute(string? prefix, string namespaceUri) + public override void WriteXmlnsAttribute(string? prefix, string namespaceUri!!) { - if (namespaceUri == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(namespaceUri)); if (prefix == null) { if (LookupPrefix(namespaceUri) != null) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextReader.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextReader.cs index fa033d03a9344d..6bee5c067e180f 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextReader.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextReader.cs @@ -553,10 +553,8 @@ public XmlUTF8TextReader() _localName = new StringHandle(BufferReader); } - public void SetInput(byte[] buffer, int offset, int count, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) + public void SetInput(byte[] buffer!!, int offset, int count, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) { - if (buffer == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(buffer))); if (offset < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(offset), SR.ValueMustBeNonNegative)); if (offset > buffer.Length) @@ -571,10 +569,8 @@ public void SetInput(byte[] buffer, int offset, int count, Encoding? encoding, X _buffered = true; } - public void SetInput(Stream stream, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) + public void SetInput(Stream stream!!, Encoding? encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose? onClose) { - if (stream == null) - throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(stream)); MoveToInitial(quotas, onClose); stream = new EncodingStreamWrapper(stream, encoding); BufferReader.SetBuffer(stream, null, null); diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextWriter.cs index 564d053d678541..c6c6cf1f867a7c 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlUTF8TextWriter.cs @@ -16,12 +16,8 @@ internal sealed class XmlUTF8TextWriter : XmlBaseWriter, IXmlTextWriterInitializ { private XmlUTF8NodeWriter? _writer; - public void SetOutput(Stream stream, Encoding encoding, bool ownsStream) + public void SetOutput(Stream stream!!, Encoding encoding!!, bool ownsStream) { - if (stream == null) - throw new ArgumentNullException(nameof(stream)); - if (encoding == null) - throw new ArgumentNullException(nameof(encoding)); if (encoding.WebName != Encoding.UTF8.WebName) { stream = new EncodingStreamWrapper(stream, encoding, true); diff --git a/src/libraries/System.Private.Runtime.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Runtime.cs b/src/libraries/System.Private.Runtime.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Runtime.cs index 4b5d072e8ac43e..9de855fd4b59b7 100644 --- a/src/libraries/System.Private.Runtime.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Runtime.cs +++ b/src/libraries/System.Private.Runtime.InteropServices.JavaScript/src/System/Runtime/InteropServices/JavaScript/Runtime.cs @@ -301,10 +301,8 @@ public static string ObjectToString(object o) return o.ToString() ?? string.Empty; } - public static double GetDateValue(object dtv) + public static double GetDateValue(object dtv!!) { - if (dtv == null) - throw new ArgumentNullException(nameof(dtv)); if (!(dtv is DateTime dt)) throw new InvalidCastException(SR.Format(SR.UnableCastObjectToType, dtv.GetType(), typeof(DateTime))); if (dt.Kind == DateTimeKind.Local) diff --git a/src/libraries/System.Private.Uri/src/System/Uri.cs b/src/libraries/System.Private.Uri/src/System/Uri.cs index b69b12368f2aa1..647636e7efd763 100644 --- a/src/libraries/System.Private.Uri/src/System/Uri.cs +++ b/src/libraries/System.Private.Uri/src/System/Uri.cs @@ -362,11 +362,8 @@ private void EnsureHostString(bool allowDnsOptimization) // a user, or that was copied & pasted from a document. That is, we do not // expect already encoded URI to be supplied. // - public Uri(string uriString) + public Uri(string uriString!!) { - if (uriString is null) - throw new ArgumentNullException(nameof(uriString)); - CreateThis(uriString, false, UriKind.Absolute); DebugSetLeftCtor(); } @@ -377,11 +374,8 @@ public Uri(string uriString) // Uri constructor. Assumes that input string is canonically escaped // [Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(string) instead.")] - public Uri(string uriString, bool dontEscape) + public Uri(string uriString!!, bool dontEscape) { - if (uriString == null) - throw new ArgumentNullException(nameof(uriString)); - CreateThis(uriString, dontEscape, UriKind.Absolute); DebugSetLeftCtor(); } @@ -393,11 +387,8 @@ public Uri(string uriString, bool dontEscape) // DontEscape is true // [Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(Uri, string) instead.")] - public Uri(Uri baseUri, string? relativeUri, bool dontEscape) + public Uri(Uri baseUri!!, string? relativeUri, bool dontEscape) { - if (baseUri is null) - throw new ArgumentNullException(nameof(baseUri)); - if (!baseUri.IsAbsoluteUri) throw new ArgumentOutOfRangeException(nameof(baseUri)); @@ -408,11 +399,8 @@ public Uri(Uri baseUri, string? relativeUri, bool dontEscape) // // Uri(string, UriKind); // - public Uri(string uriString, UriKind uriKind) + public Uri(string uriString!!, UriKind uriKind) { - if (uriString is null) - throw new ArgumentNullException(nameof(uriString)); - CreateThis(uriString, false, uriKind); DebugSetLeftCtor(); } @@ -422,11 +410,8 @@ public Uri(string uriString, UriKind uriKind) /// /// A string that identifies the resource to be represented by the instance. /// Options that control how the is created and behaves. - public Uri(string uriString, in UriCreationOptions creationOptions) + public Uri(string uriString!!, in UriCreationOptions creationOptions) { - if (uriString is null) - throw new ArgumentNullException(nameof(uriString)); - CreateThis(uriString, false, UriKind.Absolute, in creationOptions); DebugSetLeftCtor(); } @@ -438,11 +423,8 @@ public Uri(string uriString, in UriCreationOptions creationOptions) // also be an absolute URI, in which case the resultant URI is constructed // entirely from it // - public Uri(Uri baseUri, string? relativeUri) + public Uri(Uri baseUri!!, string? relativeUri) { - if (baseUri is null) - throw new ArgumentNullException(nameof(baseUri)); - if (!baseUri.IsAbsoluteUri) throw new ArgumentOutOfRangeException(nameof(baseUri)); @@ -540,11 +522,8 @@ private void CreateUri(Uri baseUri, string? relativeUri, bool dontEscape) // Uri(Uri , Uri ) // Note: a static Create() method should be used by users, not this .ctor // - public Uri(Uri baseUri, Uri relativeUri) + public Uri(Uri baseUri!!, Uri relativeUri) { - if (baseUri is null) - throw new ArgumentNullException(nameof(baseUri)); - if (!baseUri.IsAbsoluteUri) throw new ArgumentOutOfRangeException(nameof(baseUri)); @@ -1774,11 +1753,8 @@ public override bool Equals([NotNullWhen(true)] object? comparand) return string.Equals(selfUrl, otherUrl, IsUncOrDosPath ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal); } - public Uri MakeRelativeUri(Uri uri) + public Uri MakeRelativeUri(Uri uri!!) { - if (uri is null) - throw new ArgumentNullException(nameof(uri)); - if (IsNotAbsoluteUri || uri.IsNotAbsoluteUri) throw new InvalidOperationException(SR.net_uri_NotAbsolute); @@ -5128,11 +5104,8 @@ private static string PathDifference(string path1, string path2, bool compareCas // ArgumentNullException, InvalidOperationException // [Obsolete("Uri.MakeRelative has been deprecated. Use MakeRelativeUri(Uri uri) instead.")] - public string MakeRelative(Uri toUri) + public string MakeRelative(Uri toUri!!) { - if (toUri == null) - throw new ArgumentNullException(nameof(toUri)); - if (IsNotAbsoluteUri || toUri.IsNotAbsoluteUri) throw new InvalidOperationException(SR.net_uri_NotAbsolute); diff --git a/src/libraries/System.Private.Uri/src/System/UriBuilder.cs b/src/libraries/System.Private.Uri/src/System/UriBuilder.cs index da3cf9f398b0d4..ab726f0cac9850 100644 --- a/src/libraries/System.Private.Uri/src/System/UriBuilder.cs +++ b/src/libraries/System.Private.Uri/src/System/UriBuilder.cs @@ -38,9 +38,9 @@ public UriBuilder(string uri) SetFieldsFromUri(); } - public UriBuilder(Uri uri) + public UriBuilder(Uri uri!!) { - _uri = uri ?? throw new ArgumentNullException(nameof(uri)); + _uri = uri; SetFieldsFromUri(); } diff --git a/src/libraries/System.Private.Uri/src/System/UriExt.cs b/src/libraries/System.Private.Uri/src/System/UriExt.cs index 799f9ca2d577f9..ef15c1f4471ddc 100644 --- a/src/libraries/System.Private.Uri/src/System/UriExt.cs +++ b/src/libraries/System.Private.Uri/src/System/UriExt.cs @@ -554,11 +554,8 @@ internal unsafe bool InternalIsWellFormedOriginalString() return true; } - public static string UnescapeDataString(string stringToUnescape) + public static string UnescapeDataString(string stringToUnescape!!) { - if (stringToUnescape is null) - throw new ArgumentNullException(nameof(stringToUnescape)); - if (stringToUnescape.Length == 0) return string.Empty; @@ -855,11 +852,8 @@ internal string GetComponentsHelper(UriComponents uriComponents, UriFormat uriFo } } - public bool IsBaseOf(Uri uri) + public bool IsBaseOf(Uri uri!!) { - if (uri is null) - throw new ArgumentNullException(nameof(uri)); - if (!IsAbsoluteUri) return false; diff --git a/src/libraries/System.Private.Uri/src/System/UriHelper.cs b/src/libraries/System.Private.Uri/src/System/UriHelper.cs index 660d15d49ade4f..d436263440255a 100644 --- a/src/libraries/System.Private.Uri/src/System/UriHelper.cs +++ b/src/libraries/System.Private.Uri/src/System/UriHelper.cs @@ -111,13 +111,9 @@ internal static unsafe bool TestForSubPath(char* selfPtr, int selfLength, char* } internal static string EscapeString( - string stringToEscape, // same name as public API + string stringToEscape!!, // same name as public API bool checkExistingEscaped, ReadOnlySpan unreserved, char forceEscape1 = '\0', char forceEscape2 = '\0') { - if (stringToEscape is null) - { - throw new ArgumentNullException(nameof(stringToEscape)); - } if (stringToEscape.Length == 0) { return string.Empty; diff --git a/src/libraries/System.Private.Uri/src/System/UriScheme.cs b/src/libraries/System.Private.Uri/src/System/UriScheme.cs index 7c39a6c44a336e..d23e6f1f677622 100644 --- a/src/libraries/System.Private.Uri/src/System/UriScheme.cs +++ b/src/libraries/System.Private.Uri/src/System/UriScheme.cs @@ -163,14 +163,8 @@ protected virtual bool IsWellFormedOriginalString(Uri uri) // // Registers a custom Uri parser based on a scheme string // - public static void Register(UriParser uriParser, string schemeName, int defaultPort) + public static void Register(UriParser uriParser!!, string schemeName!!, int defaultPort) { - if (uriParser == null) - throw new ArgumentNullException(nameof(uriParser)); - - if (schemeName == null) - throw new ArgumentNullException(nameof(schemeName)); - if (schemeName.Length == 1) throw new ArgumentOutOfRangeException(nameof(schemeName)); @@ -187,11 +181,8 @@ public static void Register(UriParser uriParser, string schemeName, int defaultP // // Is a Uri scheme known to System.Uri? // - public static bool IsKnownScheme(string schemeName) + public static bool IsKnownScheme(string schemeName!!) { - if (schemeName == null) - throw new ArgumentNullException(nameof(schemeName)); - if (!Uri.CheckSchemeName(schemeName)) throw new ArgumentOutOfRangeException(nameof(schemeName)); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/Extensions.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/Extensions.cs index 024823a9141369..f3c86d6ea74905 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/Extensions.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/Extensions.cs @@ -21,9 +21,8 @@ public static class Extensions /// Attributes for every in the target /// of . /// - public static IEnumerable Attributes(this IEnumerable source) + public static IEnumerable Attributes(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetAttributes(source, null); } @@ -37,9 +36,8 @@ public static IEnumerable Attributes(this IEnumerable sou /// Attributes with a matching for every in /// the target of . /// - public static IEnumerable Attributes(this IEnumerable source, XName? name) + public static IEnumerable Attributes(this IEnumerable source!!, XName? name) { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetAttributes(source, name) : XAttribute.EmptySequence; } @@ -53,9 +51,8 @@ public static IEnumerable Attributes(this IEnumerable sou /// and it's parent up to the root) of each of the s in this /// of . /// - public static IEnumerable Ancestors(this IEnumerable source) where T : XNode + public static IEnumerable Ancestors(this IEnumerable source!!) where T : XNode { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetAncestors(source, null, false); } @@ -69,9 +66,8 @@ public static IEnumerable Ancestors(this IEnumerable source) wh /// and it's parent up to the root) that have a matching . This is done for each /// in this of . /// - public static IEnumerable Ancestors(this IEnumerable source, XName? name) where T : XNode + public static IEnumerable Ancestors(this IEnumerable source!!, XName? name) where T : XNode { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetAncestors(source, name, false) : XElement.EmptySequence; } @@ -87,9 +83,8 @@ public static IEnumerable Ancestors(this IEnumerable source, XN /// This is done for each in this of /// . /// - public static IEnumerable AncestorsAndSelf(this IEnumerable source) + public static IEnumerable AncestorsAndSelf(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetAncestors(source, null, true); } @@ -105,18 +100,16 @@ public static IEnumerable AncestorsAndSelf(this IEnumerable /// that match the passed in . This is done for each /// in this of . /// - public static IEnumerable AncestorsAndSelf(this IEnumerable source, XName? name) + public static IEnumerable AncestorsAndSelf(this IEnumerable source!!, XName? name) { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetAncestors(source, name, true) : XElement.EmptySequence; } /// /// Returns an of over the content of a set of nodes /// - public static IEnumerable Nodes(this IEnumerable source) where T : XContainer + public static IEnumerable Nodes(this IEnumerable source!!) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return NodesIterator(source); } @@ -142,9 +135,8 @@ private static IEnumerable NodesIterator(IEnumerable source) where /// /// Returns an of over the descendants of a set of nodes /// - public static IEnumerable DescendantNodes(this IEnumerable source) where T : XContainer + public static IEnumerable DescendantNodes(this IEnumerable source!!) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetDescendantNodes(source, false); } @@ -158,9 +150,8 @@ public static IEnumerable DescendantNodes(this IEnumerable source) /// and their children down to the leaf level). This is done for each in /// this of . /// - public static IEnumerable Descendants(this IEnumerable source) where T : XContainer + public static IEnumerable Descendants(this IEnumerable source!!) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetDescendants(source, null, false); } @@ -174,9 +165,8 @@ public static IEnumerable Descendants(this IEnumerable source) /// and their children down to the leaf level) that have a matching . This is done /// for each in this of . /// - public static IEnumerable Descendants(this IEnumerable source, XName? name) where T : XContainer + public static IEnumerable Descendants(this IEnumerable source!!, XName? name) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetDescendants(source, name, false) : XElement.EmptySequence; } @@ -192,9 +182,8 @@ public static IEnumerable Descendants(this IEnumerable source, /// This is done for each /// in this of . /// - public static IEnumerable DescendantNodesAndSelf(this IEnumerable source) + public static IEnumerable DescendantNodesAndSelf(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetDescendantNodes(source, true); } @@ -210,9 +199,8 @@ public static IEnumerable DescendantNodesAndSelf(this IEnumerable in this /// of . /// - public static IEnumerable DescendantsAndSelf(this IEnumerable source) + public static IEnumerable DescendantsAndSelf(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetDescendants(source, null, true); } @@ -228,9 +216,8 @@ public static IEnumerable DescendantsAndSelf(this IEnumerable. This is done for /// each in this of . /// - public static IEnumerable DescendantsAndSelf(this IEnumerable source, XName? name) + public static IEnumerable DescendantsAndSelf(this IEnumerable source!!, XName? name) { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetDescendants(source, name, true) : XElement.EmptySequence; } @@ -242,9 +229,8 @@ public static IEnumerable DescendantsAndSelf(this IEnumerable of containing the child elements /// for each in this of . /// - public static IEnumerable Elements(this IEnumerable source) where T : XContainer + public static IEnumerable Elements(this IEnumerable source!!) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return GetElements(source, null); } @@ -256,9 +242,8 @@ public static IEnumerable Elements(this IEnumerable source) whe /// An of containing the child elements /// for each in this of . /// - public static IEnumerable Elements(this IEnumerable source, XName? name) where T : XContainer + public static IEnumerable Elements(this IEnumerable source!!, XName? name) where T : XContainer { - if (source == null) throw new ArgumentNullException(nameof(source)); return name != null ? GetElements(source, name) : XElement.EmptySequence; } @@ -271,9 +256,8 @@ public static IEnumerable Elements(this IEnumerable source, XNa /// for each in this of . /// in document order /// - public static IEnumerable InDocumentOrder(this IEnumerable source) where T : XNode? + public static IEnumerable InDocumentOrder(this IEnumerable source!!) where T : XNode? { - if (source == null) throw new ArgumentNullException(nameof(source)); return DocumentOrderIterator(source); } @@ -293,10 +277,8 @@ private static IEnumerable DocumentOrderIterator(IEnumerable source) wh /// . Note that this method uses snapshot semantics (copies the /// attributes to an array before deleting each). /// - public static void Remove(this IEnumerable source) + public static void Remove(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); - int count; XAttribute?[] attributes = EnumerableHelpers.ToArray(source, out count); for (int i = 0; i < count; i++) @@ -311,10 +293,8 @@ public static void Remove(this IEnumerable source) /// T which must be a derived from . Note that this method uses snapshot semantics /// (copies the s to an array before deleting each). /// - public static void Remove(this IEnumerable source) where T : XNode + public static void Remove(this IEnumerable source!!) where T : XNode { - if (source == null) throw new ArgumentNullException(nameof(source)); - int count; T?[] nodes = EnumerableHelpers.ToArray(source, out count); for (int i = 0; i < count; i++) diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XAttribute.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XAttribute.cs index d86a6cb380a7b1..25d8a8f90d0b6d 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XAttribute.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XAttribute.cs @@ -51,10 +51,8 @@ public static IEnumerable EmptySequence /// /// Thrown if the passed in name or value are null. /// - public XAttribute(XName name, object value) + public XAttribute(XName name!!, object value!!) { - if (name == null) throw new ArgumentNullException(nameof(name)); - if (value == null) throw new ArgumentNullException(nameof(value)); string s = XContainer.GetStringValue(value); ValidateAttribute(name, s); this.name = name; @@ -69,9 +67,8 @@ public XAttribute(XName name, object value) /// /// Thrown if the specified is null. /// - public XAttribute(XAttribute other) + public XAttribute(XAttribute other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); name = other.name; value = other.value; } @@ -161,7 +158,7 @@ public string Value } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); ValidateAttribute(name, value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Value); this.value = value; @@ -194,9 +191,8 @@ public void Remove() /// /// Thrown if the specified value is null. /// - public void SetValue(object value) + public void SetValue(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); Value = XContainer.GetStringValue(value); } @@ -248,9 +244,8 @@ public override string ToString() /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator bool(XAttribute attribute) + public static explicit operator bool(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToBoolean(attribute.value.ToLowerInvariant()); } @@ -284,9 +279,8 @@ public static explicit operator bool(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator int(XAttribute attribute) + public static explicit operator int(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToInt32(attribute.value); } @@ -320,9 +314,8 @@ public static explicit operator int(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator uint(XAttribute attribute) + public static explicit operator uint(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToUInt32(attribute.value); } @@ -356,9 +349,8 @@ public static explicit operator uint(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator long(XAttribute attribute) + public static explicit operator long(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToInt64(attribute.value); } @@ -392,9 +384,8 @@ public static explicit operator long(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator ulong(XAttribute attribute) + public static explicit operator ulong(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToUInt64(attribute.value); } @@ -428,9 +419,8 @@ public static explicit operator ulong(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator float(XAttribute attribute) + public static explicit operator float(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToSingle(attribute.value); } @@ -464,9 +454,8 @@ public static explicit operator float(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator double(XAttribute attribute) + public static explicit operator double(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToDouble(attribute.value); } @@ -500,9 +489,8 @@ public static explicit operator double(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator decimal(XAttribute attribute) + public static explicit operator decimal(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToDecimal(attribute.value); } @@ -536,9 +524,8 @@ public static explicit operator decimal(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator DateTime(XAttribute attribute) + public static explicit operator DateTime(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return DateTime.Parse(attribute.value, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.RoundtripKind); } @@ -572,9 +559,8 @@ public static explicit operator DateTime(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator DateTimeOffset(XAttribute attribute) + public static explicit operator DateTimeOffset(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToDateTimeOffset(attribute.value); } @@ -608,9 +594,8 @@ public static explicit operator DateTimeOffset(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator TimeSpan(XAttribute attribute) + public static explicit operator TimeSpan(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToTimeSpan(attribute.value); } @@ -644,9 +629,8 @@ public static explicit operator TimeSpan(XAttribute attribute) /// Thrown if the specified attribute is null. /// [CLSCompliant(false)] - public static explicit operator Guid(XAttribute attribute) + public static explicit operator Guid(XAttribute attribute!!) { - if (attribute == null) throw new ArgumentNullException(nameof(attribute)); return XmlConvert.ToGuid(attribute.value); } diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XCData.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XCData.cs index 7c85fb89e6c183..1110a474ac29e3 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XCData.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XCData.cs @@ -45,9 +45,8 @@ public override XmlNodeType NodeType /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteCData(text); } @@ -63,10 +62,8 @@ public override void WriteTo(XmlWriter writer) /// /// A Task that represents the eventual completion of the operation. /// - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return writer.WriteCDataAsync(text); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XComment.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XComment.cs index dbb8ba0f9108a1..4e8adaf36a1640 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XComment.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XComment.cs @@ -26,9 +26,8 @@ public class XComment : XNode /// /// Thrown if the specified value is null. /// - public XComment(string value) + public XComment(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); this.value = value; } @@ -36,9 +35,8 @@ public XComment(string value) /// Initializes a new comment node from an existing comment node. /// /// Comment node to copy from. - public XComment(XComment other) + public XComment(XComment other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); this.value = other.value; } @@ -76,7 +74,7 @@ public string Value } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Value); this.value = value; if (notify) NotifyChanged(this, XObjectChangeEventArgs.Value); @@ -89,9 +87,8 @@ public string Value /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteComment(value); } @@ -102,10 +99,8 @@ public override void WriteTo(XmlWriter writer) /// The to write this to. /// /// A cancellation token. - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return writer.WriteCommentAsync(value); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XContainer.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XContainer.cs index 2d98ae02585d9f..49c782a3245fe1 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XContainer.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XContainer.cs @@ -26,9 +26,8 @@ public abstract class XContainer : XNode internal XContainer() { } - internal XContainer(XContainer other) + internal XContainer(XContainer other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); if (other.content is string) { this.content = other.content; diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDeclaration.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDeclaration.cs index 8407f48b9ed198..52c1f5ce5d04d2 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDeclaration.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDeclaration.cs @@ -48,9 +48,8 @@ public XDeclaration(string? version, string? encoding, string? standalone) /// /// The used to initialize this object. /// - public XDeclaration(XDeclaration other) + public XDeclaration(XDeclaration other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); _version = other._version; _encoding = other._encoding; _standalone = other._standalone; diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocument.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocument.cs index 9afbc2ba9431e3..189d89a294bd6a 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocument.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocument.cs @@ -418,9 +418,8 @@ public static XDocument Load(XmlReader reader) /// A new containing the contents of the passed /// in . /// - public static XDocument Load(XmlReader reader, LoadOptions options) + public static XDocument Load(XmlReader reader!!, LoadOptions options) { - if (reader == null) throw new ArgumentNullException(nameof(reader)); if (reader.ReadState == ReadState.Initial) reader.Read(); XDocument d = InitLoad(reader, options); @@ -449,10 +448,8 @@ public static XDocument Load(XmlReader reader, LoadOptions options) /// A new containing the contents of the passed /// in . /// - public static Task LoadAsync(XmlReader reader, LoadOptions options, CancellationToken cancellationToken) + public static Task LoadAsync(XmlReader reader!!, LoadOptions options, CancellationToken cancellationToken) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return LoadAsyncInternal(reader, options, cancellationToken); @@ -791,9 +788,8 @@ public void Save(string fileName, SaveOptions options) /// The to output the content of this /// . /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); if (_declaration != null && _declaration.Standalone == "yes") { writer.WriteStartDocument(true); @@ -820,10 +816,8 @@ public override void WriteTo(XmlWriter writer) /// . /// /// A cancellation token. - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return WriteToAsyncInternal(writer, cancellationToken); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocumentType.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocumentType.cs index f9605ca14eddfa..3b422190e91e3c 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocumentType.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XDocumentType.cs @@ -33,9 +33,8 @@ public XDocumentType(string name, string? publicId, string? systemId, string? in /// from another XDocumentType object. /// /// object to copy from. - public XDocumentType(XDocumentType other) + public XDocumentType(XDocumentType other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); _name = other._name; _publicId = other._publicId; _systemId = other._systemId; @@ -140,9 +139,8 @@ public string? SystemId /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteDocType(_name, _publicId, _systemId, _internalSubset); } @@ -155,10 +153,8 @@ public override void WriteTo(XmlWriter writer) /// /// A cancellation token. /// - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return writer.WriteDocTypeAsync(_name, _publicId, _systemId, _internalSubset); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XElement.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XElement.cs index 311a4855daa3e6..ca8024f9ca108e 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XElement.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XElement.cs @@ -56,9 +56,8 @@ public static IEnumerable EmptySequence /// /// The name of the element. /// - public XElement(XName name) + public XElement(XName name!!) { - if (name == null) throw new ArgumentNullException(nameof(name)); this.name = name; } @@ -125,9 +124,8 @@ public XElement(XElement other) /// The object whose value will be used /// to initialize the new element. /// - public XElement(XStreamingElement other) + public XElement(XStreamingElement other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); name = other.name; AddContentSkipNotify(other.content); } @@ -271,7 +269,7 @@ public XName Name } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Name); name = value; if (notify) NotifyChanged(this, XObjectChangeEventArgs.Name); @@ -312,7 +310,7 @@ public string Value } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); RemoveNodes(); Add(value); } @@ -491,9 +489,8 @@ public XNamespace GetDefaultNamespace() /// /// The for which to get a prefix /// The namespace prefix string - public string? GetPrefixOfNamespace(XNamespace ns) + public string? GetPrefixOfNamespace(XNamespace ns!!) { - if (ns == null) throw new ArgumentNullException(nameof(ns)); string namespaceName = ns.NamespaceName; bool hasInScopeNamespace = false; XElement? e = this; @@ -802,9 +799,8 @@ public static XElement Load(XmlReader reader) /// A new containing the contents of the passed /// in . /// - public static XElement Load(XmlReader reader, LoadOptions options) + public static XElement Load(XmlReader reader!!, LoadOptions options) { - if (reader == null) throw new ArgumentNullException(nameof(reader)); if (reader.MoveToContent() != XmlNodeType.Element) throw new InvalidOperationException(SR.Format(SR.InvalidOperation_ExpectedNodeType, XmlNodeType.Element, reader.NodeType)); XElement e = new XElement(reader, options); reader.MoveToContent(); @@ -829,10 +825,8 @@ public static XElement Load(XmlReader reader, LoadOptions options) /// A new containing the contents of the passed /// in . /// - public static Task LoadAsync(XmlReader reader, LoadOptions options, CancellationToken cancellationToken) + public static Task LoadAsync(XmlReader reader!!, LoadOptions options, CancellationToken cancellationToken) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return LoadAsyncInternal(reader, options, cancellationToken); @@ -1155,9 +1149,8 @@ public async Task SaveAsync(TextWriter textWriter, SaveOptions options, Cancella /// /// The to output the XML to. /// - public void Save(XmlWriter writer) + public void Save(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteStartDocument(); WriteTo(writer); writer.WriteEndDocument(); @@ -1170,10 +1163,8 @@ public void Save(XmlWriter writer) /// The to output the XML to. /// /// A cancellation token. - public Task SaveAsync(XmlWriter writer, CancellationToken cancellationToken) + public Task SaveAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return SaveAsyncInternal(writer, cancellationToken); @@ -1281,9 +1272,8 @@ public void SetElementValue(XName name, object? value) /// /// Thrown if the specified value is null. /// - public void SetValue(object value) + public void SetValue(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); Value = GetStringValue(value); } @@ -1293,9 +1283,8 @@ public void SetValue(object value) /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); new ElementWriter(writer).WriteElement(this); } @@ -1306,10 +1295,8 @@ public override void WriteTo(XmlWriter writer) /// The to write this to. /// /// A cancellation token. - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return new ElementWriter(writer).WriteElementAsync(this, cancellationToken); @@ -1354,9 +1341,8 @@ public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellati /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator bool(XElement element) + public static explicit operator bool(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToBoolean(element.Value.ToLowerInvariant()); } @@ -1396,9 +1382,8 @@ public static explicit operator bool(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator int(XElement element) + public static explicit operator int(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToInt32(element.Value); } @@ -1438,9 +1423,8 @@ public static explicit operator int(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator uint(XElement element) + public static explicit operator uint(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToUInt32(element.Value); } @@ -1480,9 +1464,8 @@ public static explicit operator uint(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator long(XElement element) + public static explicit operator long(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToInt64(element.Value); } @@ -1522,9 +1505,8 @@ public static explicit operator long(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator ulong(XElement element) + public static explicit operator ulong(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToUInt64(element.Value); } @@ -1564,9 +1546,8 @@ public static explicit operator ulong(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator float(XElement element) + public static explicit operator float(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToSingle(element.Value); } @@ -1606,9 +1587,8 @@ public static explicit operator float(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator double(XElement element) + public static explicit operator double(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToDouble(element.Value); } @@ -1648,9 +1628,8 @@ public static explicit operator double(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator decimal(XElement element) + public static explicit operator decimal(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToDecimal(element.Value); } @@ -1690,9 +1669,8 @@ public static explicit operator decimal(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator DateTime(XElement element) + public static explicit operator DateTime(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return DateTime.Parse(element.Value, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.RoundtripKind); } @@ -1732,9 +1710,8 @@ public static explicit operator DateTime(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator DateTimeOffset(XElement element) + public static explicit operator DateTimeOffset(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToDateTimeOffset(element.Value); } @@ -1774,9 +1751,8 @@ public static explicit operator DateTimeOffset(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator TimeSpan(XElement element) + public static explicit operator TimeSpan(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToTimeSpan(element.Value); } @@ -1816,9 +1792,8 @@ public static explicit operator TimeSpan(XElement element) /// Thrown if the specified element is null. /// [CLSCompliant(false)] - public static explicit operator Guid(XElement element) + public static explicit operator Guid(XElement element!!) { - if (element == null) throw new ArgumentNullException(nameof(element)); return XmlConvert.ToGuid(element.Value); } @@ -1857,9 +1832,8 @@ public static explicit operator Guid(XElement element) /// The stream from which the /// is deserialized. /// - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) throw new ArgumentNullException(nameof(reader)); if (parent != null || annotations != null || content != null || lastAttr != null) throw new InvalidOperationException(SR.InvalidOperation_DeserializeInstance); if (reader.MoveToContent() != XmlNodeType.Element) throw new InvalidOperationException(SR.Format(SR.InvalidOperation_ExpectedNodeType, XmlNodeType.Element, reader.NodeType)); ReadElementFrom(reader, LoadOptions.None); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNamespace.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNamespace.cs index d7e0a5130e72b1..903b5942bd40b5 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNamespace.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNamespace.cs @@ -53,9 +53,8 @@ public string NamespaceName /// The returned object is guaranteed to be atomic (i.e. the only one in the system for this /// particular expanded name). /// - public XName GetName(string localName) + public XName GetName(string localName!!) { - if (localName == null) throw new ArgumentNullException(nameof(localName)); return GetName(localName, 0, localName.Length); } @@ -112,9 +111,8 @@ public static XNamespace Xmlns /// The returned object is guaranteed to be atomic /// (i.e. the only one in the system for that particular namespace name). /// - public static XNamespace Get(string namespaceName) + public static XNamespace Get(string namespaceName!!) { - if (namespaceName == null) throw new ArgumentNullException(nameof(namespaceName)); return Get(namespaceName, 0, namespaceName.Length); } @@ -136,9 +134,8 @@ public static XNamespace Get(string namespaceName) /// The namespace for the expanded name. /// The local name for the expanded name. /// The new XName constructed from the namespace and local name. - public static XName operator +(XNamespace ns, string localName) + public static XName operator +(XNamespace ns!!, string localName) { - if (ns == null) throw new ArgumentNullException(nameof(ns)); return ns.GetName(localName); } diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNode.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNode.cs index 389b9dc5767149..5c22fa17b53cd9 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNode.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNode.cs @@ -438,9 +438,8 @@ public bool IsBefore(XNode? node) /// /// Thrown if the is not positioned on a recognized node type. /// - public static XNode ReadFrom(XmlReader reader) + public static XNode ReadFrom(XmlReader reader!!) { - if (reader == null) throw new ArgumentNullException(nameof(reader)); if (reader.ReadState != ReadState.Interactive) throw new InvalidOperationException(SR.InvalidOperation_ExpectedInteractive); switch (reader.NodeType) { @@ -475,10 +474,8 @@ public static XNode ReadFrom(XmlReader reader) /// /// Thrown if the is not positioned on a recognized node type. /// - public static Task ReadFromAsync(XmlReader reader, CancellationToken cancellationToken) + public static Task ReadFromAsync(XmlReader reader!!, CancellationToken cancellationToken) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return ReadFromAsyncInternal(reader, cancellationToken); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNodeBuilder.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNodeBuilder.cs index 4e4164c04c326a..18260645a7773f 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNodeBuilder.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNodeBuilder.cs @@ -165,7 +165,7 @@ public override void WriteRaw(string data) public override void WriteStartAttribute(string? prefix, string localName, string? namespaceName) { - if (prefix == null) throw new ArgumentNullException(nameof(prefix)); + ArgumentNullException.ThrowIfNull(prefix); _attrName = XNamespace.Get(prefix.Length == 0 ? string.Empty : namespaceName!).GetName(localName); _attrValue = string.Empty; } diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XObject.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XObject.cs index 1855419be7db42..38f7ddda288733 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XObject.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XObject.cs @@ -77,9 +77,8 @@ public XElement? Parent /// Adds an object to the annotation list of this . /// /// The annotation to add. - public void AddAnnotation(object annotation) + public void AddAnnotation(object annotation!!) { - if (annotation == null) throw new ArgumentNullException(nameof(annotation)); if (annotations == null) { annotations = annotation is object[]? new object[] { annotation } : annotation; @@ -114,9 +113,8 @@ public void AddAnnotation(object annotation) /// The first matching annotation object, or null /// if no annotation is the specified type. /// - public object? Annotation(Type type) + public object? Annotation(Type type!!) { - if (type == null) throw new ArgumentNullException(nameof(type)); if (annotations != null) { object?[]? a = annotations as object[]; @@ -193,9 +191,8 @@ public void AddAnnotation(object annotation) /// /// The type of the annotations to retrieve. /// An enumerable collection of annotations for this XObject. - public IEnumerable Annotations(Type type) + public IEnumerable Annotations(Type type!!) { - if (type == null) throw new ArgumentNullException(nameof(type)); return AnnotationsIterator(type); } @@ -253,9 +250,8 @@ public IEnumerable Annotations() where T : class /// Removes the annotations of the specified type from this . /// /// The type of annotations to remove. - public void RemoveAnnotations(Type type) + public void RemoveAnnotations(Type type!!) { - if (type == null) throw new ArgumentNullException(nameof(type)); if (annotations != null) { object?[]? a = annotations as object[]; diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XProcessingInstruction.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XProcessingInstruction.cs index 4218332977c11d..77b4a539913c53 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XProcessingInstruction.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XProcessingInstruction.cs @@ -26,9 +26,8 @@ public class XProcessingInstruction : XNode /// /// Thrown if either the target or data parameter are null. /// - public XProcessingInstruction(string target, string data) + public XProcessingInstruction(string target, string data!!) { - if (data == null) throw new ArgumentNullException(nameof(data)); ValidateName(target); this.target = target; this.data = data; @@ -39,9 +38,8 @@ public XProcessingInstruction(string target, string data) /// from another XML processing instruction. /// /// XML processing instruction to copy from. - public XProcessingInstruction(XProcessingInstruction other) + public XProcessingInstruction(XProcessingInstruction other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); this.target = other.target; this.data = other.data; } @@ -67,7 +65,7 @@ public string Data } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Value); data = value; if (notify) NotifyChanged(this, XObjectChangeEventArgs.Value); @@ -115,9 +113,8 @@ public string Target /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteProcessingInstruction(target, data); } @@ -128,10 +125,8 @@ public override void WriteTo(XmlWriter writer) /// The to write this to. /// /// A cancellation token. - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return writer.WriteProcessingInstructionAsync(target, data); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XStreamingElement.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XStreamingElement.cs index 4e9373f031b1c6..08dd0fc7c35a11 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XStreamingElement.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XStreamingElement.cs @@ -21,9 +21,8 @@ public class XStreamingElement /// Creates a node with a given name /// /// The name to assign to the new node - public XStreamingElement(XName name) + public XStreamingElement(XName name!!) { - if (name == null) throw new ArgumentNullException(nameof(name)); this.name = name; } @@ -60,7 +59,7 @@ public XName Name } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); name = value; } } @@ -153,9 +152,8 @@ public void Save(TextWriter textWriter, SaveOptions options) /// Save the contents of an to an XML writer, not preserving whitespace /// /// to write to - public void Save(XmlWriter writer) + public void Save(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); writer.WriteStartDocument(); WriteTo(writer); writer.WriteEndDocument(); @@ -214,9 +212,8 @@ public string ToString(SaveOptions options) /// Write this to an /// /// - public void WriteTo(XmlWriter writer) + public void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); new StreamingElementWriter(writer).WriteStreamingElement(this); } diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XText.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XText.cs index fa85a690bb66cd..a6279f2fc4ece2 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XText.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XText.cs @@ -18,9 +18,8 @@ public class XText : XNode /// Initializes a new instance of the XText class. /// /// The string that contains the value of the text node. - public XText(string value) + public XText(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); text = value; } @@ -28,9 +27,8 @@ public XText(string value) /// Initializes a new instance of the XText class from another XText object. /// /// The text node to copy from. - public XText(XText other) + public XText(XText other!!) { - if (other == null) throw new ArgumentNullException(nameof(other)); text = other.text; } @@ -65,7 +63,7 @@ public string Value } set { - if (value == null) throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Value); text = value; if (notify) NotifyChanged(this, XObjectChangeEventArgs.Value); @@ -78,9 +76,8 @@ public string Value /// /// The to write this to. /// - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) throw new ArgumentNullException(nameof(writer)); if (parent is XDocument) { writer.WriteWhitespace(text); @@ -100,10 +97,8 @@ public override void WriteTo(XmlWriter writer) /// /// A cancellation token. /// - public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) + public override Task WriteToAsync(XmlWriter writer!!, CancellationToken cancellationToken) { - if (writer == null) - throw new ArgumentNullException(nameof(writer)); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Schema/XNodeValidator.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Schema/XNodeValidator.cs index a1c1b986df663c..752409ce7f6764 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/Schema/XNodeValidator.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/Schema/XNodeValidator.cs @@ -441,9 +441,8 @@ public static class Extensions /// Gets the schema information that has been assigned to the as a result of schema validation. /// /// Extension point - public static IXmlSchemaInfo? GetSchemaInfo(this XElement source) + public static IXmlSchemaInfo? GetSchemaInfo(this XElement source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return source.Annotation(); } @@ -451,9 +450,8 @@ public static class Extensions /// Gets the schema information that has been assigned to the as a result of schema validation. /// /// Extension point - public static IXmlSchemaInfo? GetSchemaInfo(this XAttribute source) + public static IXmlSchemaInfo? GetSchemaInfo(this XAttribute source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return source.Annotation(); } @@ -481,10 +479,8 @@ public static void Validate(this XDocument source, XmlSchemaSet schemas, Validat /// If enabled the and the corresponding /// subtree is augmented with PSVI in the form of annotations, /// default attributes and default element values - public static void Validate(this XDocument source, XmlSchemaSet schemas, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) + public static void Validate(this XDocument source!!, XmlSchemaSet schemas!!, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (schemas == null) throw new ArgumentNullException(nameof(schemas)); new XNodeValidator(schemas, validationEventHandler).Validate(source, null, addSchemaInfo); } @@ -518,11 +514,8 @@ public static void Validate(this XElement source, XmlSchemaObject partialValidat /// If enabled the and the corresponding /// subtree is augmented with PSVI in the form of annotations, /// default attributes and default element values - public static void Validate(this XElement source, XmlSchemaObject partialValidationType, XmlSchemaSet schemas, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) + public static void Validate(this XElement source!!, XmlSchemaObject partialValidationType!!, XmlSchemaSet schemas!!, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (partialValidationType == null) throw new ArgumentNullException(nameof(partialValidationType)); - if (schemas == null) throw new ArgumentNullException(nameof(schemas)); new XNodeValidator(schemas, validationEventHandler).Validate(source, partialValidationType, addSchemaInfo); } @@ -556,11 +549,8 @@ public static void Validate(this XAttribute source, XmlSchemaObject partialValid /// If enabled the is augmented with PSVI /// in the form of annotations, default attributes and /// default element values - public static void Validate(this XAttribute source, XmlSchemaObject partialValidationType, XmlSchemaSet schemas, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) + public static void Validate(this XAttribute source!!, XmlSchemaObject partialValidationType!!, XmlSchemaSet schemas!!, ValidationEventHandler? validationEventHandler, bool addSchemaInfo) { - if (source == null) throw new ArgumentNullException(nameof(source)); - if (partialValidationType == null) throw new ArgumentNullException(nameof(partialValidationType)); - if (schemas == null) throw new ArgumentNullException(nameof(schemas)); new XNodeValidator(schemas, validationEventHandler).Validate(source, partialValidationType, addSchemaInfo); } } diff --git a/src/libraries/System.Private.Xml.Linq/src/System/Xml/XPath/XNodeNavigator.cs b/src/libraries/System.Private.Xml.Linq/src/System/Xml/XPath/XNodeNavigator.cs index 8460c3345330c9..1476e69449d0b5 100644 --- a/src/libraries/System.Private.Xml.Linq/src/System/Xml/XPath/XNodeNavigator.cs +++ b/src/libraries/System.Private.Xml.Linq/src/System/Xml/XPath/XNodeNavigator.cs @@ -922,9 +922,8 @@ public static XPathNavigator CreateNavigator(this XNode node) /// The to be used by /// the /// An - public static XPathNavigator CreateNavigator(this XNode node, XmlNameTable? nameTable) + public static XPathNavigator CreateNavigator(this XNode node!!, XmlNameTable? nameTable) { - if (node == null) throw new ArgumentNullException(nameof(node)); if (node is XDocumentType) throw new ArgumentException(SR.Format(SR.Argument_CreateNavigator, XmlNodeType.DocumentType)); XText? text = node as XText; if (text != null) @@ -956,9 +955,8 @@ public static object XPathEvaluate(this XNode node, string expression) /// prefixes used in the XPath expression /// The result of evaluating the expression which can be typed as bool, double, string or /// IEnumerable - public static object XPathEvaluate(this XNode node, string expression, IXmlNamespaceResolver? resolver) + public static object XPathEvaluate(this XNode node!!, string expression, IXmlNamespaceResolver? resolver) { - if (node == null) throw new ArgumentNullException(nameof(node)); return default(XPathEvaluator).Evaluate(node, expression, resolver); } @@ -1005,9 +1003,8 @@ public static IEnumerable XPathSelectElements(this XNode node, string /// A for the namespace /// prefixes used in the XPath expression /// An corresponding to the resulting set of elements - public static IEnumerable XPathSelectElements(this XNode node, string expression, IXmlNamespaceResolver? resolver) + public static IEnumerable XPathSelectElements(this XNode node!!, string expression, IXmlNamespaceResolver? resolver) { - if (node == null) throw new ArgumentNullException(nameof(node)); return (IEnumerable)default(XPathEvaluator).Evaluate(node, expression, resolver); } diff --git a/src/libraries/System.Private.Xml.Linq/tests/Streaming/StreamExtensions.cs b/src/libraries/System.Private.Xml.Linq/tests/Streaming/StreamExtensions.cs index 0972d198ea76e1..054b50d7b3eafa 100644 --- a/src/libraries/System.Private.Xml.Linq/tests/Streaming/StreamExtensions.cs +++ b/src/libraries/System.Private.Xml.Linq/tests/Streaming/StreamExtensions.cs @@ -216,11 +216,8 @@ public static XElement LoadStream(TextReader textReader, XName rootName, params return LoadStream(XmlReader.Create(textReader, GetXmlReaderSettings()), rootName, streamNames); } - public static XElement LoadStream(XmlReader reader, XName rootName, params XName[] streamNames) + public static XElement LoadStream(XmlReader reader!!, XName rootName!!, params XName[] streamNames!!) { - if (reader == null) throw new ArgumentNullException(nameof(reader)); - if (rootName == null) throw new ArgumentNullException(nameof(rootName)); - if (streamNames == null) throw new ArgumentNullException(nameof(streamNames)); for (int i = 0; i < streamNames.Length; i++) { if (streamNames[i] == null) throw new ArgumentNullException("streamNames[" + i + "]"); @@ -237,17 +234,15 @@ public static XElement LoadStream(XmlReader reader, XName rootName, params XName return source; } - public static IEnumerable Stream(this XElement source) + public static IEnumerable Stream(this XElement source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); StreamLoader loader = source.Annotation(); if (loader == null) throw new InvalidOperationException("No stream associated with the element."); return loader.Stream(source); } - public static IEnumerable Stream(this IEnumerable source) + public static IEnumerable Stream(this IEnumerable source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return Enumerable.SelectMany(source, e => e.Stream()); } diff --git a/src/libraries/System.Private.Xml.Linq/tests/XDocument.Common/EventsHelper.cs b/src/libraries/System.Private.Xml.Linq/tests/XDocument.Common/EventsHelper.cs index 8ca3a859b2bd68..e4e5a976998f58 100644 --- a/src/libraries/System.Private.Xml.Linq/tests/XDocument.Common/EventsHelper.cs +++ b/src/libraries/System.Private.Xml.Linq/tests/XDocument.Common/EventsHelper.cs @@ -202,9 +202,8 @@ public class UndoManager : IDisposable private bool _redoing; private int _lastGroup; - public UndoManager(XObject root) + public UndoManager(XObject root!!) { - if (root == null) throw new ArgumentNullException(); _root = root; _root.Changing += new EventHandler(Changing); _root.Changed += new EventHandler(Changed); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs index e7ec9664f1939b..6588b4f0e05284 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs @@ -42,12 +42,8 @@ internal override bool IsFull } } - internal override int Decode(char[] chars, int startPos, int len) + internal override int Decode(char[] chars!!, int startPos, int len) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars)); - } if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len)); @@ -72,12 +68,8 @@ internal override int Decode(char[] chars, int startPos, int len) return charsDecoded; } - internal override int Decode(string str, int startPos, int len) + internal override int Decode(string str!!, int startPos, int len) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Base64Encoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/Base64Encoder.cs index 18d72d4778367e..7b1818693a2d2c 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Base64Encoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Base64Encoder.cs @@ -22,12 +22,8 @@ internal Base64Encoder() internal abstract void WriteChars(char[] chars, int index, int count); - internal void Encode(byte[] buffer, int index, int count) + internal void Encode(byte[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Base64EncoderAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Base64EncoderAsync.cs index 233b1a5044a39d..27012a54afeb9d 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Base64EncoderAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Base64EncoderAsync.cs @@ -12,12 +12,8 @@ internal abstract partial class Base64Encoder { internal abstract Task WriteCharsAsync(char[] chars, int index, int count); - internal async Task EncodeAsync(byte[] buffer, int index, int count) + internal async Task EncodeAsync(byte[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs index 9bacf94038822e..c22d4bd723f5cd 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs @@ -37,12 +37,8 @@ internal override bool IsFull } } - internal override int Decode(char[] chars, int startPos, int len) + internal override int Decode(char[] chars!!, int startPos, int len) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars)); - } if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len)); @@ -69,12 +65,8 @@ internal override int Decode(char[] chars, int startPos, int len) return charsDecoded; } - internal override int Decode(string str, int startPos, int len) + internal override int Decode(string str!!, int startPos, int len) { - if (str == null) - { - throw new ArgumentNullException(nameof(str)); - } if (len < 0) { throw new ArgumentOutOfRangeException(nameof(len)); @@ -124,13 +116,8 @@ internal override void SetNextOutputBuffer(Array buffer, int index, int count) // // Static methods // - public static byte[] Decode(char[] chars, bool allowOddChars) + public static byte[] Decode(char[] chars!!, bool allowOddChars) { - if (chars == null) - { - throw new ArgumentNullException(nameof(chars)); - } - int len = chars.Length; if (len == 0) { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoder.cs index 397b48adc6111e..77bd6d1ea9e3e0 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoder.cs @@ -7,12 +7,8 @@ internal static partial class BinHexEncoder { private const int CharsChunkSize = 128; - internal static void Encode(byte[] buffer, int index, int count, XmlWriter writer) + internal static void Encode(byte[] buffer!!, int index, int count, XmlWriter writer) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoderAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoderAsync.cs index 9a84f5f9829133..dcf46e3bccecba 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoderAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinHexEncoderAsync.cs @@ -7,12 +7,8 @@ namespace System.Xml { internal static partial class BinHexEncoder { - internal static async Task EncodeAsync(byte[] buffer, int index, int count, XmlWriter writer) + internal static async Task EncodeAsync(byte[] buffer!!, int index, int count, XmlWriter writer) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs index 33d1e3dff11c23..6a0361bd919770 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs @@ -655,8 +655,7 @@ public override int AttributeCount } else { - if (null == name) - throw new ArgumentNullException(nameof(name)); + ArgumentNullException.ThrowIfNull(name); if (null == ns) ns = string.Empty; int index = LocateAttribute(name, ns); @@ -706,8 +705,7 @@ public override bool MoveToAttribute(string name, string? ns) } else { - if (null == name) - throw new ArgumentNullException(nameof(name)); + ArgumentNullException.ThrowIfNull(name); if (null == ns) ns = string.Empty; int index = LocateAttribute(name, ns); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Cache/XPathDocumentIterator.cs b/src/libraries/System.Private.Xml/src/System/Xml/Cache/XPathDocumentIterator.cs index 80c4ab6d2df75e..dcab10a76dfe8a 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Cache/XPathDocumentIterator.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Cache/XPathDocumentIterator.cs @@ -60,10 +60,8 @@ internal sealed class XPathDocumentElementChildIterator : XPathDocumentBaseItera /// /// Create an iterator that ranges over all element children of "parent" having the specified QName. /// - public XPathDocumentElementChildIterator(XPathDocumentNavigator parent, string name, string namespaceURI) : base(parent) + public XPathDocumentElementChildIterator(XPathDocumentNavigator parent, string name, string namespaceURI!!) : base(parent) { - if (namespaceURI == null) throw new ArgumentNullException(nameof(namespaceURI)); - _localName = parent.NameTable.Get(name); _namespaceUri = namespaceURI; } @@ -173,10 +171,8 @@ internal sealed class XPathDocumentElementDescendantIterator : XPathDocumentBase /// /// Create an iterator that ranges over all element descendants of "root" having the specified QName. /// - public XPathDocumentElementDescendantIterator(XPathDocumentNavigator root, string name, string namespaceURI, bool matchSelf) : base(root) + public XPathDocumentElementDescendantIterator(XPathDocumentNavigator root, string name, string namespaceURI!!, bool matchSelf) : base(root) { - if (namespaceURI == null) throw new ArgumentNullException(nameof(namespaceURI)); - _localName = root.NameTable.Get(name); _namespaceUri = namespaceURI; _matchSelf = matchSelf; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelper.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelper.cs index 99ca6edc3049af..e376d5e6c78da5 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelper.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelper.cs @@ -60,13 +60,9 @@ internal static ReadContentAsBinaryHelper CreateOrReset(ReadContentAsBinaryHelpe // Internal methods - internal int ReadContentAsBase64(byte[] buffer, int index, int count) + internal int ReadContentAsBase64(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -116,13 +112,9 @@ internal int ReadContentAsBase64(byte[] buffer, int index, int count) return ReadContentAsBinary(buffer, index, count); } - internal int ReadContentAsBinHex(byte[] buffer, int index, int count) + internal int ReadContentAsBinHex(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -172,13 +164,9 @@ internal int ReadContentAsBinHex(byte[] buffer, int index, int count) return ReadContentAsBinary(buffer, index, count); } - internal int ReadElementContentAsBase64(byte[] buffer, int index, int count) + internal int ReadElementContentAsBase64(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -228,13 +216,9 @@ internal int ReadElementContentAsBase64(byte[] buffer, int index, int count) return ReadElementContentAsBinary(buffer, index, count); } - internal int ReadElementContentAsBinHex(byte[] buffer, int index, int count) + internal int ReadElementContentAsBinHex(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelperAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelperAsync.cs index 8a596529f426ef..0bde9d37029eea 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelperAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/ReadContentAsBinaryHelperAsync.cs @@ -10,13 +10,9 @@ internal sealed partial class ReadContentAsBinaryHelper { // Internal methods - internal async Task ReadContentAsBase64Async(byte[] buffer, int index, int count) + internal async Task ReadContentAsBase64Async(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -66,13 +62,9 @@ internal async Task ReadContentAsBase64Async(byte[] buffer, int index, int return await ReadContentAsBinaryAsync(buffer, index, count).ConfigureAwait(false); } - internal async Task ReadContentAsBinHexAsync(byte[] buffer, int index, int count) + internal async Task ReadContentAsBinHexAsync(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -122,13 +114,9 @@ internal async Task ReadContentAsBinHexAsync(byte[] buffer, int index, int return await ReadContentAsBinaryAsync(buffer, index, count).ConfigureAwait(false); } - internal async Task ReadElementContentAsBase64Async(byte[] buffer, int index, int count) + internal async Task ReadElementContentAsBase64Async(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -178,13 +166,9 @@ internal async Task ReadElementContentAsBase64Async(byte[] buffer, int inde return await ReadElementContentAsBinaryAsync(buffer, index, count).ConfigureAwait(false); } - internal async Task ReadElementContentAsBinHexAsync(byte[] buffer, int index, int count) + internal async Task ReadElementContentAsBinHexAsync(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs index f1f7bdd4e94e84..355ffdabcc95cb 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs @@ -476,13 +476,9 @@ public override int ReadContentAsBinHex(byte[] buffer, int index, int count) return readCount; } - public override int ReadElementContentAsBase64(byte[] buffer, int index, int count) + public override int ReadElementContentAsBase64(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -537,13 +533,9 @@ public override int ReadElementContentAsBase64(byte[] buffer, int index, int cou return readCount; } - public override int ReadElementContentAsBinHex(byte[] buffer, int index, int count) + public override int ReadElementContentAsBinHex(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs index 933d288774a0ee..7d49326315493f 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs @@ -299,13 +299,9 @@ public override async Task ReadContentAsBinHexAsync(byte[] buffer, int inde return readCount; } - public override async Task ReadElementContentAsBase64Async(byte[] buffer, int index, int count) + public override async Task ReadElementContentAsBase64Async(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -360,13 +356,9 @@ public override async Task ReadElementContentAsBase64Async(byte[] buffer, i return readCount; } - public override async Task ReadElementContentAsBinHexAsync(byte[] buffer, int index, int count) + public override async Task ReadElementContentAsBinHexAsync(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs index 2174c3017b124c..c3708a0805a5d5 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs @@ -269,12 +269,8 @@ public override void WriteSurrogateCharEntity(char lowChar, char highChar) writer.WriteSurrogateCharEntity(lowChar, highChar); } - public override void WriteChars(char[] buffer, int index, int count) + public override void WriteChars(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs index dc58522f067f46..ce6515601ad644 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs @@ -217,12 +217,8 @@ public override Task WriteSurrogateCharEntityAsync(char lowChar, char highChar) return writer.WriteSurrogateCharEntityAsync(lowChar, highChar); } - public override Task WriteCharsAsync(char[] buffer, int index, int count) + public override Task WriteCharsAsync(char[] buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlRawWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlRawWriter.cs index f3c2f1813257a5..f6246a9c4cbc3d 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlRawWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlRawWriter.cs @@ -184,13 +184,8 @@ public override void WriteRaw(string data) } // Override in order to handle Xml simple typed values and to pass resolver for QName values - public override void WriteValue(object value) + public override void WriteValue(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - WriteString(XmlUntypedConverter.Untyped.ToString(value, _resolver)); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReader.cs index b0e5d48b2d6967..4a345ca377bba3 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReader.cs @@ -913,10 +913,8 @@ public virtual bool IsStartElement(string localname, string ns) // Reads to the following element with the given Name. public virtual bool ReadToFollowing(string name) { - if (string.IsNullOrEmpty(name)) - { - throw XmlConvert.CreateInvalidNameArgumentException(name, nameof(name)); - } + ArgumentException.ThrowIfNullOrEmpty(name); + // atomize name name = NameTable.Add(name); @@ -934,11 +932,7 @@ public virtual bool ReadToFollowing(string name) // Reads to the following element with the given LocalName and NamespaceURI. public virtual bool ReadToFollowing(string localName, string namespaceURI) { - if (string.IsNullOrEmpty(localName)) - { - throw XmlConvert.CreateInvalidNameArgumentException(localName, nameof(localName)); - } - + ArgumentException.ThrowIfNullOrEmpty(localName); ArgumentNullException.ThrowIfNull(namespaceURI); // atomize local name and namespace @@ -959,10 +953,8 @@ public virtual bool ReadToFollowing(string localName, string namespaceURI) // Reads to the first descendant of the current element with the given Name. public virtual bool ReadToDescendant(string name) { - if (string.IsNullOrEmpty(name)) - { - throw XmlConvert.CreateInvalidNameArgumentException(name, nameof(name)); - } + ArgumentException.ThrowIfNullOrEmpty(name); + // save the element or root depth int parentDepth = Depth; if (NodeType != XmlNodeType.Element) @@ -1001,12 +993,9 @@ public virtual bool ReadToDescendant(string name) // Reads to the first descendant of the current element with the given LocalName and NamespaceURI. public virtual bool ReadToDescendant(string localName, string namespaceURI) { - if (string.IsNullOrEmpty(localName)) - { - throw XmlConvert.CreateInvalidNameArgumentException(localName, nameof(localName)); - } - + ArgumentException.ThrowIfNullOrEmpty(localName); ArgumentNullException.ThrowIfNull(namespaceURI); + // save the element or root depth int parentDepth = Depth; if (NodeType != XmlNodeType.Element) @@ -1046,10 +1035,7 @@ public virtual bool ReadToDescendant(string localName, string namespaceURI) // Reads to the next sibling of the current element with the given Name. public virtual bool ReadToNextSibling(string name) { - if (string.IsNullOrEmpty(name)) - { - throw XmlConvert.CreateInvalidNameArgumentException(name, nameof(name)); - } + ArgumentException.ThrowIfNullOrEmpty(name); // atomize name name = NameTable.Add(name); @@ -1074,11 +1060,7 @@ public virtual bool ReadToNextSibling(string name) // Reads to the next sibling of the current element with the given LocalName and NamespaceURI. public virtual bool ReadToNextSibling(string localName, string namespaceURI) { - if (string.IsNullOrEmpty(localName)) - { - throw XmlConvert.CreateInvalidNameArgumentException(localName, nameof(localName)); - } - + ArgumentException.ThrowIfNullOrEmpty(localName); ArgumentNullException.ThrowIfNull(namespaceURI); // atomize local name and namespace @@ -1428,11 +1410,7 @@ private bool SkipSubtree() internal void CheckElement(string localName, string namespaceURI) { - if (string.IsNullOrEmpty(localName)) - { - throw XmlConvert.CreateInvalidNameArgumentException(localName, nameof(localName)); - } - + ArgumentException.ThrowIfNullOrEmpty(localName); ArgumentNullException.ThrowIfNull(namespaceURI); if (NodeType != XmlNodeType.Element) @@ -1656,10 +1634,8 @@ public static XmlReader Create(string inputUri, XmlReaderSettings? settings, Xml } // Creates an XmlReader according for parsing XML from the given stream. - public static XmlReader Create(Stream input) + public static XmlReader Create(Stream input!!) { - ArgumentNullException.ThrowIfNull(input); - // Avoid using XmlReader.Create(Stream, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. return new XmlTextReaderImpl(input, null, 0, XmlReaderSettings.s_defaultReaderSettings, null, string.Empty, null, false); @@ -1686,10 +1662,8 @@ public static XmlReader Create(Stream input, XmlReaderSettings? settings, XmlPar } // Creates an XmlReader according for parsing XML from the given TextReader. - public static XmlReader Create(TextReader input) + public static XmlReader Create(TextReader input!!) { - ArgumentNullException.ThrowIfNull(input); - // Avoid using XmlReader.Create(TextReader, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. return new XmlTextReaderImpl(input, XmlReaderSettings.s_defaultReaderSettings, string.Empty, null); @@ -1725,10 +1699,8 @@ public static XmlReader Create(XmlReader reader, XmlReaderSettings? settings) // !!!!!! // NOTE: This method is called via reflection from System.Data.Common.dll. // !!!!!! - internal static XmlReader CreateSqlReader(Stream input, XmlReaderSettings? settings, XmlParserContext inputContext) + internal static XmlReader CreateSqlReader(Stream input!!, XmlReaderSettings? settings, XmlParserContext inputContext) { - ArgumentNullException.ThrowIfNull(input); - settings ??= XmlReaderSettings.s_defaultReaderSettings; XmlReader reader; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReaderSettings.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReaderSettings.cs index 68adf4d128807b..8280e0201088ca 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReaderSettings.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlReaderSettings.cs @@ -340,10 +340,8 @@ internal XmlReader CreateReader(string inputUri, XmlParserContext? inputContext) return reader; } - internal XmlReader CreateReader(Stream input, Uri? baseUri, string? baseUriString, XmlParserContext? inputContext) + internal XmlReader CreateReader(Stream input!!, Uri? baseUri, string? baseUriString, XmlParserContext? inputContext) { - ArgumentNullException.ThrowIfNull(input); - baseUriString ??= baseUri?.ToString() ?? string.Empty; // create text XML reader @@ -363,10 +361,8 @@ internal XmlReader CreateReader(Stream input, Uri? baseUri, string? baseUriStrin return reader; } - internal XmlReader CreateReader(TextReader input, string? baseUriString, XmlParserContext? inputContext) + internal XmlReader CreateReader(TextReader input!!, string? baseUriString, XmlParserContext? inputContext) { - ArgumentNullException.ThrowIfNull(input); - baseUriString ??= string.Empty; // create xml text reader @@ -386,10 +382,8 @@ internal XmlReader CreateReader(TextReader input, string? baseUriString, XmlPars return reader; } - internal XmlReader CreateReader(XmlReader reader) + internal XmlReader CreateReader(XmlReader reader!!) { - ArgumentNullException.ThrowIfNull(reader); - return AddValidationAndConformanceWrapper(reader); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlSubtreeReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlSubtreeReader.cs index 0f5850fe6db2de..61b8546dd703b2 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlSubtreeReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlSubtreeReader.cs @@ -1580,12 +1580,8 @@ private void FinishReadContentAsType() } } - private void CheckBuffer(Array buffer, int index, int count) + private void CheckBuffer(Array buffer!!, int index, int count) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs index d2fdefe60d0dc7..52d924a6c491df 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs @@ -107,13 +107,8 @@ internal void WriteSurrogateChar(char lowChar, char highChar) _textWriter.Write(lowChar); } - internal void Write(char[] array, int offset, int count) + internal void Write(char[] array!!, int offset, int count) { - if (null == array) - { - throw new ArgumentNullException(nameof(array)); - } - if (0 > offset) { throw new ArgumentOutOfRangeException(nameof(offset)); @@ -447,13 +442,8 @@ internal void WriteRawWithSurrogateChecking(string text) return; } - internal void WriteRaw(char[] array, int offset, int count) + internal void WriteRaw(char[] array!!, int offset, int count) { - if (null == array) - { - throw new ArgumentNullException(nameof(array)); - } - if (0 > count) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs index 2222a29d20685f..e4b1c34537d251 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs @@ -1596,13 +1596,9 @@ public override bool CanReadBinaryContent } // Reads and concatenates content nodes, base64-decodes the results and copies the decoded bytes into the provided buffer - public override int ReadContentAsBase64(byte[] buffer, int index, int count) + public override int ReadContentAsBase64(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -1656,13 +1652,9 @@ public override int ReadContentAsBase64(byte[] buffer, int index, int count) // Reads and concatenates content nodes, binhex-decodes the results and copies the decoded bytes into the provided buffer - public override int ReadContentAsBinHex(byte[] buffer, int index, int count) + public override int ReadContentAsBinHex(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -1715,13 +1707,9 @@ public override int ReadContentAsBinHex(byte[] buffer, int index, int count) } // Reads and concatenates content of an element, base64-decodes the results and copies the decoded bytes into the provided buffer - public override int ReadElementContentAsBase64(byte[] buffer, int index, int count) + public override int ReadElementContentAsBase64(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -1775,13 +1763,9 @@ public override int ReadElementContentAsBase64(byte[] buffer, int index, int cou // Reads and concatenates content of an element, binhex-decodes the results and copies the decoded bytes into the provided buffer - public override int ReadElementContentAsBinHex(byte[] buffer, int index, int count) + public override int ReadElementContentAsBinHex(byte[] buffer!!, int index, int count) { // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -1851,10 +1835,7 @@ public override int ReadValueChunk(char[] buffer, int index, int count) throw new InvalidOperationException(SR.Format(SR.Xml_InvalidReadValueChunk, _curNode.type)); } // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs index dab8726286b55b..fbbed2084b84db 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs @@ -388,10 +388,7 @@ public override Task ReadContentAsBase64Async(byte[] buffer, int index, int { CheckAsyncCall(); // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -457,10 +454,7 @@ public override async Task ReadContentAsBinHexAsync(byte[] buffer, int inde { CheckAsyncCall(); // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -535,10 +529,7 @@ public override Task ReadElementContentAsBase64Async(byte[] buffer, int ind { CheckAsyncCall(); // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -604,10 +595,7 @@ public override async Task ReadElementContentAsBinHexAsync(byte[] buffer, i { CheckAsyncCall(); // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -669,10 +657,7 @@ public override async Task ReadValueChunkAsync(char[] buffer, int index, in throw new InvalidOperationException(SR.Format(SR.Xml_InvalidReadValueChunk, _curNode.type)); } // check arguments - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlValidatingReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlValidatingReader.cs index 35018b19b94793..118cc94257e8de 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlValidatingReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlValidatingReader.cs @@ -27,23 +27,14 @@ public XmlValidatingReader(XmlReader reader) _impl.OuterReader = this; } - public XmlValidatingReader(string xmlFragment, XmlNodeType fragType, XmlParserContext context) + public XmlValidatingReader(string xmlFragment!!, XmlNodeType fragType, XmlParserContext context) { - if (xmlFragment == null) - { - throw new ArgumentNullException(nameof(xmlFragment)); - } - _impl = new XmlValidatingReaderImpl(xmlFragment, fragType, context); _impl.OuterReader = this; } - public XmlValidatingReader(Stream xmlFragment, XmlNodeType fragType, XmlParserContext context) + public XmlValidatingReader(Stream xmlFragment!!, XmlNodeType fragType, XmlParserContext context) { - if (xmlFragment == null) - { - throw new ArgumentNullException(nameof(xmlFragment)); - } _impl = new XmlValidatingReaderImpl(xmlFragment, fragType, context); _impl.OuterReader = this; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriter.cs index f4cb8945acce1f..85eaf61b3702af 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriter.cs @@ -1096,10 +1096,7 @@ public override void WriteChars(char[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); @@ -1134,10 +1131,7 @@ public override void WriteRaw(char[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); @@ -1198,10 +1192,7 @@ public override void WriteBase64(byte[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); @@ -1300,10 +1291,7 @@ public override void Flush() { try { - if (ns == null) - { - throw new ArgumentNullException(nameof(ns)); - } + ArgumentNullException.ThrowIfNull(ns); for (int i = _nsTop; i >= 0; i--) { if (_nsStack[i].namespaceUri == ns) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriterAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriterAsync.cs index 0e3ef48bc3acc7..1129fad98fafde 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriterAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWellFormedWriterAsync.cs @@ -1036,10 +1036,7 @@ public override async Task WriteCharsAsync(char[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); @@ -1074,10 +1071,7 @@ public override async Task WriteRawAsync(char[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); @@ -1138,10 +1132,7 @@ public override Task WriteBase64Async(byte[] buffer, int index, int count) { try { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); - } + ArgumentNullException.ThrowIfNull(buffer); if (index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriter.cs index 47c3460f0f7a49..eb45d2e1e82b4b 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriter.cs @@ -243,12 +243,8 @@ public virtual void WriteQualifiedName(string localName, string? ns) } // Writes out the specified value. - public virtual void WriteValue(object value) + public virtual void WriteValue(object value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } WriteString(XmlUntypedConverter.Untyped.ToString(value, null)); } @@ -315,13 +311,8 @@ public virtual void WriteValue(long value) // XmlReader Helper Methods // Writes out all the attributes found at the current position in the specified XmlReader. - public virtual void WriteAttributes(XmlReader reader, bool defattr) + public virtual void WriteAttributes(XmlReader reader!!, bool defattr) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - if (reader.NodeType is XmlNodeType.Element or XmlNodeType.XmlDeclaration) { if (reader.MoveToFirstAttribute()) @@ -363,13 +354,8 @@ public virtual void WriteAttributes(XmlReader reader, bool defattr) // Copies the current node from the given reader to the writer (including child nodes), and if called on an element moves the XmlReader // to the corresponding end element. - public virtual void WriteNode(XmlReader reader, bool defattr) + public virtual void WriteNode(XmlReader reader!!, bool defattr) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - bool canReadChunk = reader.CanReadValueChunk; int d = reader.NodeType == XmlNodeType.None ? -1 : reader.Depth; do @@ -430,12 +416,8 @@ public virtual void WriteNode(XmlReader reader, bool defattr) } // Copies the current node from the given XPathNavigator to the writer (including child nodes). - public virtual void WriteNode(XPathNavigator navigator, bool defattr) + public virtual void WriteNode(XPathNavigator navigator!!, bool defattr) { - if (navigator == null) - { - throw new ArgumentNullException(nameof(navigator)); - } int iLevel = 0; navigator = navigator.Clone(); @@ -623,13 +605,8 @@ private void WriteLocalNamespaces(XPathNavigator nsNav) // Static methods for creating writers // // Creates an XmlWriter for writing into the provided file. - public static XmlWriter Create(string outputFileName) + public static XmlWriter Create(string outputFileName!!) { - if (outputFileName == null) - { - throw new ArgumentNullException(nameof(outputFileName)); - } - // Avoid using XmlWriter.Create(string, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. var fs = new FileStream(outputFileName, FileMode.Create, FileAccess.Write, FileShare.Read); @@ -654,13 +631,8 @@ public static XmlWriter Create(string outputFileName, XmlWriterSettings? setting } // Creates an XmlWriter for writing into the provided stream. - public static XmlWriter Create(Stream output) + public static XmlWriter Create(Stream output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - // Avoid using XmlWriter.Create(Stream, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. XmlWriterSettings settings = XmlWriterSettings.s_defaultWriterSettings; @@ -676,13 +648,8 @@ public static XmlWriter Create(Stream output, XmlWriterSettings? settings) } // Creates an XmlWriter for writing into the provided TextWriter. - public static XmlWriter Create(TextWriter output) + public static XmlWriter Create(TextWriter output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - // Avoid using XmlWriter.Create(TextWriter, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. XmlWriterSettings settings = XmlWriterSettings.s_defaultWriterSettings; @@ -698,26 +665,16 @@ public static XmlWriter Create(TextWriter output, XmlWriterSettings? settings) } // Creates an XmlWriter for writing into the provided StringBuilder. - public static XmlWriter Create(StringBuilder output) + public static XmlWriter Create(StringBuilder output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - // Avoid using XmlWriter.Create(StringBuilder, XmlReaderSettings), as it references a lot of types // that then can't be trimmed away. return Create(new StringWriter(output, CultureInfo.InvariantCulture)); } // Creates an XmlWriter for writing into the provided StringBuilder with the specified settings. - public static XmlWriter Create(StringBuilder output, XmlWriterSettings? settings) + public static XmlWriter Create(StringBuilder output!!, XmlWriterSettings? settings) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - settings ??= XmlWriterSettings.s_defaultWriterSettings; return settings.CreateWriter(new StringWriter(output, CultureInfo.InvariantCulture)); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterAsync.cs index 7172624ab351bb..ce4fc852872bc8 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterAsync.cs @@ -231,13 +231,8 @@ public virtual async Task WriteQualifiedNameAsync(string localName, string? ns) // XmlReader Helper Methods // Writes out all the attributes found at the current position in the specified XmlReader. - public virtual async Task WriteAttributesAsync(XmlReader reader, bool defattr) + public virtual async Task WriteAttributesAsync(XmlReader reader!!, bool defattr) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - if (reader.NodeType is XmlNodeType.Element or XmlNodeType.XmlDeclaration) { if (reader.MoveToFirstAttribute()) @@ -279,13 +274,8 @@ public virtual async Task WriteAttributesAsync(XmlReader reader, bool defattr) // Copies the current node from the given reader to the writer (including child nodes), and if called on an element moves the XmlReader // to the corresponding end element. - public virtual Task WriteNodeAsync(XmlReader reader, bool defattr) + public virtual Task WriteNodeAsync(XmlReader reader!!, bool defattr) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - if (reader.Settings is { Async: true }) { return WriteNodeAsync_CallAsyncReader(reader, defattr); @@ -421,12 +411,8 @@ internal async Task WriteNodeAsync_CallAsyncReader(XmlReader reader, bool defatt } // Copies the current node from the given XPathNavigator to the writer (including child nodes). - public virtual async Task WriteNodeAsync(XPathNavigator navigator, bool defattr) + public virtual async Task WriteNodeAsync(XPathNavigator navigator!!, bool defattr) { - if (navigator == null) - { - throw new ArgumentNullException(nameof(navigator)); - } int iLevel = 0; navigator = navigator.Clone(); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterSettings.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterSettings.cs index 11492a32b99786..bd0afc62a28440 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterSettings.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlWriterSettings.cs @@ -332,10 +332,8 @@ internal bool AutoXmlDeclaration // method will default to Indent=true for Html and Indent=false for Xml. internal TriState IndentInternal { get; set; } private bool IsQuerySpecific => CDataSectionElements.Count != 0 || _docTypePublic != null || _docTypeSystem != null || _standalone == XmlStandalone.Yes; - internal XmlWriter CreateWriter(string outputFileName) + internal XmlWriter CreateWriter(string outputFileName!!) { - ArgumentNullException.ThrowIfNull(outputFileName); - // need to clone the settigns so that we can set CloseOutput to true to make sure the stream gets closed in the end XmlWriterSettings newSettings = this; if (!newSettings.CloseOutput) @@ -360,10 +358,8 @@ internal XmlWriter CreateWriter(string outputFileName) } } - internal XmlWriter CreateWriter(Stream output) + internal XmlWriter CreateWriter(Stream output!!) { - ArgumentNullException.ThrowIfNull(output); - XmlWriter writer; // create raw writer @@ -435,10 +431,8 @@ internal XmlWriter CreateWriter(Stream output) return writer; } - internal XmlWriter CreateWriter(TextWriter output) + internal XmlWriter CreateWriter(TextWriter output!!) { - ArgumentNullException.ThrowIfNull(output); - XmlWriter writer; // create raw writer @@ -481,10 +475,8 @@ internal XmlWriter CreateWriter(TextWriter output) return writer; } - internal XmlWriter CreateWriter(XmlWriter output) + internal XmlWriter CreateWriter(XmlWriter output!!) { - ArgumentNullException.ThrowIfNull(output); - return AddConformanceWrapper(output); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Dom/DocumentXPathNavigator.cs b/src/libraries/System.Private.Xml/src/System/Xml/Dom/DocumentXPathNavigator.cs index 84d4fa56c28805..eb9da0d5881ab1 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Dom/DocumentXPathNavigator.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Dom/DocumentXPathNavigator.cs @@ -38,13 +38,8 @@ public override XPathNavigator Clone() return new DocumentXPathNavigator(this); } - public override void SetValue(string value) + public override void SetValue(string value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - XmlNode node = _source; XmlNode end; @@ -1599,14 +1594,8 @@ public override XmlWriter ReplaceRange(XPathNavigator lastSiblingToReplace) { if (!(lastSiblingToReplace is DocumentXPathNavigator that)) { - if (lastSiblingToReplace == null) - { - throw new ArgumentNullException(nameof(lastSiblingToReplace)); - } - else - { - throw new NotSupportedException(); - } + ArgumentNullException.ThrowIfNull(lastSiblingToReplace); + throw new NotSupportedException(); } this.CalibrateText(); @@ -1656,14 +1645,8 @@ public override void DeleteRange(XPathNavigator lastSiblingToDelete) { if (!(lastSiblingToDelete is DocumentXPathNavigator that)) { - if (lastSiblingToDelete == null) - { - throw new ArgumentNullException(nameof(lastSiblingToDelete)); - } - else - { - throw new NotSupportedException(); - } + ArgumentNullException.ThrowIfNull(lastSiblingToDelete); + throw new NotSupportedException(); } this.CalibrateText(); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Dom/XmlNodeReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Dom/XmlNodeReader.cs index ade3ad8fbfdd8b..e9e24dcc41fed1 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Dom/XmlNodeReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Dom/XmlNodeReader.cs @@ -1133,13 +1133,8 @@ public class XmlNodeReader : XmlReader, IXmlNamespaceResolver // Creates an instance of the XmlNodeReader class using the specified XmlNode. - public XmlNodeReader(XmlNode node) + public XmlNodeReader(XmlNode node!!) { - if (node == null) - { - throw new ArgumentNullException(nameof(node)); - } - _readerNav = new XmlNodeReaderNavigator(node); _curDepth = 0; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/MTNameTable.cs b/src/libraries/System.Private.Xml/src/System/Xml/MTNameTable.cs index 2c2b4cd78e13b4..886cd5df3cc66a 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/MTNameTable.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/MTNameTable.cs @@ -48,10 +48,7 @@ public MTNameTable() { // // XmlNameTable public methods // - public override string Add( string key ) { - if ( key == null ) { - throw new ArgumentNullException( "key" ); - } + public override string Add( string key!! ) { int len = key.Length; if ( len == 0 ) { return string.Empty; @@ -104,10 +101,7 @@ public override string Add( char[] key, int start, int len ) { return AddEntry( new string( key, start, len ), hashCode ); } - public override string Get( string value ) { - if ( value == null ) { - throw new ArgumentNullException(nameof(value)); - } + public override string Get( string value!! ) { if ( value.Length == 0 ) { return string.Empty; } @@ -245,23 +239,14 @@ public IEnumerator GetEnumerator() { } - public override String Get( String value ) { - if (value == null) { - throw new ArgumentNullException(nameof(value)); - } - + public override String Get( String value!! ) { MTNameTableName name = new MTNameTableName(value); return Get( ref name ); } - public override String Get( char[] key, int start, int len ) { - if (key == null) { - throw new ArgumentNullException(nameof(key)); - } - else { - if ((start < 0) || (len < 0) || (start > key.Length - len)) - throw new ArgumentOutOfRangeException(); - } + public override String Get( char[] key!!, int start, int len ) { + if ((start < 0) || (len < 0) || (start > key.Length - len)) + throw new ArgumentOutOfRangeException(); MTNameTableName name = new MTNameTableName(key, start, len); return Get( ref name ); @@ -309,23 +294,14 @@ private String Get( ref MTNameTableName nn ) { // Find the matching string atom given a string, or // insert a new one. - public override String Add(String value) { - if (value == null) { - throw new ArgumentNullException(nameof(value)); - } - + public override String Add(String value!!) { MTNameTableName name = new MTNameTableName( value ); return Add( ref name, rwLock != null ).value; } - public override String Add(char[] key, int start, int len) { - if (key == null) { - throw new ArgumentNullException(nameof(key)); - } - else { - if ((start < 0) || (len < 0) || (start > key.Length - len)) - throw new ArgumentOutOfRangeException(); - } + public override String Add(char[] key!!, int start, int len) { + if ((start < 0) || (len < 0) || (start > key.Length - len)) + throw new ArgumentOutOfRangeException(); MTNameTableName name = new MTNameTableName( key, start, len ); return Add( ref name, rwLock != null ).value; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/NameTable.cs b/src/libraries/System.Private.Xml/src/System/Xml/NameTable.cs index e2d7fb2dfa0cc6..0f8e6d52b5b97c 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/NameTable.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/NameTable.cs @@ -51,13 +51,8 @@ public NameTable() /// Add the given string to the NameTable or return /// the existing string if it is already in the NameTable. /// - public override string Add(string key) + public override string Add(string key!!) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } - int len = key.Length; if (len == 0) { @@ -118,13 +113,8 @@ public override string Add(char[] key, int start, int len) /// /// Find the matching string in the NameTable. /// - public override string? Get(string value) + public override string? Get(string value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (value.Length == 0) { return string.Empty; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolver.cs b/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolver.cs index 1ee3949536b803..884c21218c0cec 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolver.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolver.cs @@ -222,13 +222,8 @@ public override Uri ResolveUri(Uri? baseUri, string? relativeUri) return base.ResolveUri(baseUri, relativeUri); } - public override object? GetEntity(Uri absoluteUri, string? role, Type? ofObjectToReturn) + public override object? GetEntity(Uri absoluteUri!!, string? role, Type? ofObjectToReturn) { - if (absoluteUri == null) - { - throw new ArgumentNullException(nameof(absoluteUri)); - } - PreloadedData? data; if (!_mappings.TryGetValue(absoluteUri, out data)) { @@ -265,13 +260,8 @@ public override ICredentials Credentials } } - public override bool SupportsType(Uri absoluteUri, Type? type) + public override bool SupportsType(Uri absoluteUri!!, Type? type) { - if (absoluteUri == null) - { - throw new ArgumentNullException(nameof(absoluteUri)); - } - PreloadedData? data; if (!_mappings.TryGetValue(absoluteUri, out data)) { @@ -285,30 +275,13 @@ public override bool SupportsType(Uri absoluteUri, Type? type) return data.SupportsType(type); } - public void Add(Uri uri, byte[] value) + public void Add(Uri uri!!, byte[] value!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - Add(uri, new ByteArrayChunk(value, 0, value.Length)); } - public void Add(Uri uri, byte[] value, int offset, int count) + public void Add(Uri uri!!, byte[] value!!, int offset, int count) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (count < 0) { throw new ArgumentOutOfRangeException(nameof(count)); @@ -325,16 +298,8 @@ public void Add(Uri uri, byte[] value, int offset, int count) Add(uri, new ByteArrayChunk(value, offset, count)); } - public void Add(Uri uri, Stream value) + public void Add(Uri uri!!, Stream value!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (value.CanSeek) { // stream of known length -> allocate the byte array and read all data into it @@ -360,16 +325,8 @@ public void Add(Uri uri, Stream value) } } - public void Add(Uri uri, string value) + public void Add(Uri uri!!, string value!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } Add(uri, new StringData(value)); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolverAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolverAsync.cs index 97fc6c3c2ef9a4..5a037d4c9afe07 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolverAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Resolvers/XmlPreloadedResolverAsync.cs @@ -14,15 +14,10 @@ namespace System.Xml.Resolvers // public partial class XmlPreloadedResolver : XmlResolver { - public override Task GetEntityAsync(Uri absoluteUri, + public override Task GetEntityAsync(Uri absoluteUri!!, string? role, Type? ofObjectToReturn) { - if (absoluteUri == null) - { - throw new ArgumentNullException(nameof(absoluteUri)); - } - PreloadedData? data; if (!_mappings.TryGetValue(absoluteUri, out data)) { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/DataTypeImplementation.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/DataTypeImplementation.cs index 78685724522bdb..0aa55c25b10cc4 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/DataTypeImplementation.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/DataTypeImplementation.cs @@ -575,16 +575,11 @@ internal override object ParseValue(string s, XmlNameTable? nameTable, IXmlNames } } - internal override Exception? TryParseValue(object value, XmlNameTable? nameTable, IXmlNamespaceResolver? namespaceResolver, out object? typedValue) + internal override Exception? TryParseValue(object value!!, XmlNameTable? nameTable, IXmlNamespaceResolver? namespaceResolver, out object? typedValue) { Exception? exception; typedValue = null; - if (value == null) - { - return new ArgumentNullException(nameof(value)); - } - string? s = value as string; if (s != null) { @@ -1040,14 +1035,9 @@ internal override RestrictionFlags ValidRestrictionFlags } internal DatatypeImplementation ItemType { get { return _itemType; } } - internal override Exception? TryParseValue(object value, XmlNameTable? nameTable, IXmlNamespaceResolver? namespaceResolver, out object? typedValue) + internal override Exception? TryParseValue(object value!!, XmlNameTable? nameTable, IXmlNamespaceResolver? namespaceResolver, out object? typedValue) { Exception? exception; - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - string? s = value as string; typedValue = null; if (s != null) @@ -1304,13 +1294,9 @@ internal bool IsUnionBaseOf(DatatypeImplementation derivedType) return exception; } - internal override Exception? TryParseValue(object value, XmlNameTable? nameTable, IXmlNamespaceResolver? nsmgr, out object? typedValue) + internal override Exception? TryParseValue(object value!!, XmlNameTable? nameTable, IXmlNamespaceResolver? nsmgr, out object? typedValue) { Exception? exception; - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } typedValue = null; string? s = value as string; if (s != null) @@ -3822,10 +3808,8 @@ public override object ParseValue(string s, XmlNameTable? nameTable, IXmlNamespa { throw new XmlSchemaException(SR.Sch_EmptyAttributeValue, string.Empty); } - if (nsmgr == null) - { - throw new ArgumentNullException(nameof(nsmgr)); - } + ArgumentNullException.ThrowIfNull(nsmgr); + string prefix; try { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/DtdParser.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/DtdParser.cs index 768c00aaf5d081..14b87f912fb31b 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/DtdParser.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/DtdParser.cs @@ -269,10 +269,7 @@ private void InitializeFreeFloatingDtd(string baseUri, string docTypeName, strin { Initialize(adapter); - if (docTypeName == null || docTypeName.Length == 0) - { - throw XmlConvert.CreateInvalidNameArgumentException(docTypeName, nameof(docTypeName)); - } + ArgumentException.ThrowIfNullOrEmpty(docTypeName); // check doctype name XmlConvert.VerifyName(docTypeName); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/Inference/Infer.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/Inference/Infer.cs index 33847d7040ea67..fdcdb6438cb4e7 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/Inference/Infer.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/Inference/Infer.cs @@ -177,12 +177,8 @@ public XmlSchemaSet InferSchema(XmlReader instanceDocument, XmlSchemaSet schemas return InferSchema1(instanceDocument, schemas); } - internal XmlSchemaSet InferSchema1(XmlReader instanceDocument, XmlSchemaSet schemas) + internal XmlSchemaSet InferSchema1(XmlReader instanceDocument!!, XmlSchemaSet schemas) { - if (instanceDocument == null) - { - throw new ArgumentNullException(nameof(instanceDocument)); - } _rootSchema = null; _xtr = instanceDocument; schemas.Compile(); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlAtomicValue.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlAtomicValue.cs index 939862db6b2edd..0581ab222c6484 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlAtomicValue.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlAtomicValue.cs @@ -78,58 +78,49 @@ public IDictionary GetNamespacesInScope(XmlNamespaceScope scope) // XmlAtomicValue constructors and methods //----------------------------------------------- - internal XmlAtomicValue(XmlSchemaType xmlType, bool value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, bool value) { - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _clrType = TypeCode.Boolean; _unionVal.boolVal = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, DateTime value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, DateTime value) { - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _clrType = TypeCode.DateTime; _unionVal.dtVal = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, double value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, double value) { - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _clrType = TypeCode.Double; _unionVal.dblVal = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, int value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, int value) { - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _clrType = TypeCode.Int32; _unionVal.i32Val = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, long value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, long value) { - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _clrType = TypeCode.Int64; _unionVal.i64Val = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, string value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _objVal = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, string value, IXmlNamespaceResolver? nsResolver) + internal XmlAtomicValue(XmlSchemaType xmlType!!, string value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _objVal = value; if (nsResolver != null && (_xmlType.TypeCode == XmlTypeCode.QName || _xmlType.TypeCode == XmlTypeCode.Notation)) @@ -139,18 +130,14 @@ internal XmlAtomicValue(XmlSchemaType xmlType, string value, IXmlNamespaceResolv } } - internal XmlAtomicValue(XmlSchemaType xmlType, object value) + internal XmlAtomicValue(XmlSchemaType xmlType!!, object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _objVal = value; } - internal XmlAtomicValue(XmlSchemaType xmlType, object value, IXmlNamespaceResolver? nsResolver) + internal XmlAtomicValue(XmlSchemaType xmlType!!, object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (xmlType == null) throw new ArgumentNullException(nameof(xmlType)); _xmlType = xmlType; _objVal = value; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaCollection.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaCollection.cs index 6b75f550f00c83..c1d9664e985c85 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaCollection.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaCollection.cs @@ -42,13 +42,8 @@ public XmlSchemaCollection() : this(new NameTable()) /// Construct a new empty schema collection with associated XmlNameTable. /// The XmlNameTable is used when loading schemas. /// - public XmlSchemaCollection(XmlNameTable nametable) + public XmlSchemaCollection(XmlNameTable nametable!!) { - if (nametable == null) - { - throw new ArgumentNullException(nameof(nametable)); - } - _nameTable = nametable; _collection = Hashtable.Synchronized(new Hashtable()); _xmlResolver = null; @@ -126,10 +121,8 @@ internal XmlResolver? XmlResolver /// If the given schema references other namespaces, the schemas for those /// other namespaces are NOT automatically loaded. /// - public XmlSchema? Add(string? ns, XmlReader reader, XmlResolver? resolver) + public XmlSchema? Add(string? ns, XmlReader reader!!, XmlResolver? resolver) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); XmlNameTable readerNameTable = reader.NameTable; SchemaInfo schemaInfo = new SchemaInfo(); @@ -162,11 +155,8 @@ internal XmlResolver? XmlResolver return Add(schema, _xmlResolver); } - public XmlSchema? Add(XmlSchema schema, XmlResolver? resolver) + public XmlSchema? Add(XmlSchema schema!!, XmlResolver? resolver) { - if (schema == null) - throw new ArgumentNullException(nameof(schema)); - SchemaInfo schemaInfo = new SchemaInfo(); schemaInfo.SchemaType = SchemaType.XSD; return Add(schema.TargetNamespace, schemaInfo, schema, true, resolver); @@ -176,10 +166,8 @@ internal XmlResolver? XmlResolver /// Adds all the namespaces defined in the given collection /// (including their associated schemas) to this collection. /// - public void Add(XmlSchemaCollection schema) + public void Add(XmlSchemaCollection schema!!) { - if (schema == null) - throw new ArgumentNullException(nameof(schema)); if (this == schema) return; IDictionaryEnumerator enumerator = schema._collection.GetEnumerator(); @@ -203,13 +191,8 @@ public XmlSchema? this[string? ns] } } - public bool Contains(XmlSchema schema) + public bool Contains(XmlSchema schema!!) { - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } - return this[schema.TargetNamespace] != null; } @@ -231,10 +214,8 @@ public XmlSchemaCollectionEnumerator GetEnumerator() return new XmlSchemaCollectionEnumerator(_collection); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index)); for (XmlSchemaCollectionEnumerator e = this.GetEnumerator(); e.MoveNext();) @@ -247,10 +228,8 @@ void ICollection.CopyTo(Array array, int index) } } - public void CopyTo(XmlSchema[] array, int index) + public void CopyTo(XmlSchema[] array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0) throw new ArgumentOutOfRangeException(nameof(index)); for (XmlSchemaCollectionEnumerator e = this.GetEnumerator(); e.MoveNext();) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaDataType.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaDataType.cs index fc4806a095920d..0d09a2f0994180 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaDataType.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaDataType.cs @@ -23,33 +23,13 @@ public abstract class XmlSchemaDatatype internal XmlSchemaDatatype() { } - public virtual object ChangeType(object value, Type targetType) + public virtual object ChangeType(object value!!, Type targetType!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (targetType == null) - { - throw new ArgumentNullException(nameof(targetType)); - } return ValueConverter.ChangeType(value, targetType); } - public virtual object ChangeType(object value, Type targetType, IXmlNamespaceResolver namespaceResolver) + public virtual object ChangeType(object value!!, Type targetType!!, IXmlNamespaceResolver namespaceResolver!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (targetType == null) - { - throw new ArgumentNullException(nameof(targetType)); - } - if (namespaceResolver == null) - { - throw new ArgumentNullException(nameof(namespaceResolver)); - } return ValueConverter.ChangeType(value, targetType, namespaceResolver); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaObjectTable.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaObjectTable.cs index 54693372418579..62ee7612bb5bf0 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaObjectTable.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaObjectTable.cs @@ -186,11 +186,8 @@ public bool IsSynchronized } } - public void CopyTo(Array array, int arrayIndex) + public void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array)); - if (arrayIndex < 0) throw new ArgumentOutOfRangeException(nameof(arrayIndex)); @@ -241,11 +238,8 @@ public bool IsSynchronized } } - public void CopyTo(Array array, int arrayIndex) + public void CopyTo(Array array!!, int arrayIndex) { - if (array == null) - throw new ArgumentNullException(nameof(array)); - if (arrayIndex < 0) throw new ArgumentOutOfRangeException(nameof(arrayIndex)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaSet.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaSet.cs index 50ba298672844c..3e408b36555ac5 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaSet.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaSet.cs @@ -84,13 +84,8 @@ public XmlSchemaSet() : this(new NameTable()) /// Construct a new empty schema schemas with associated XmlNameTable. /// The XmlNameTable is used when loading schemas. /// - public XmlSchemaSet(XmlNameTable nameTable) + public XmlSchemaSet(XmlNameTable nameTable!!) { - if (nameTable == null) - { - throw new ArgumentNullException(nameof(nameTable)); - } - _nameTable = nameTable; _schemas = new SortedList(); @@ -324,12 +319,8 @@ internal XmlSchemaObjectTable TypeExtensions /// If the given schema references other namespaces, the schemas for those /// other namespaces are NOT automatically loaded. /// - public XmlSchema? Add(string? targetNamespace, XmlReader schemaDocument) + public XmlSchema? Add(string? targetNamespace, XmlReader schemaDocument!!) { - if (schemaDocument == null) - { - throw new ArgumentNullException(nameof(schemaDocument)); - } if (targetNamespace != null) { targetNamespace = XmlComplianceUtil.CDataNormalize(targetNamespace); @@ -358,12 +349,8 @@ internal XmlSchemaObjectTable TypeExtensions /// Adds all the namespaces defined in the given schemas /// (including their associated schemas) to this schemas. /// - public void Add(XmlSchemaSet schemas) + public void Add(XmlSchemaSet schemas!!) { - if (schemas == null) - { - throw new ArgumentNullException(nameof(schemas)); - } if (this == schemas) { return; @@ -444,12 +431,8 @@ public void Add(XmlSchemaSet schemas) } } - public XmlSchema? Add(XmlSchema schema) + public XmlSchema? Add(XmlSchema schema!!) { - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } lock (InternalSyncObject) { if (_schemas.ContainsKey(schema.SchemaId)) @@ -466,12 +449,8 @@ public void Add(XmlSchemaSet schemas) return Remove(schema, true); } - public bool RemoveRecursive(XmlSchema schemaToRemove) + public bool RemoveRecursive(XmlSchema schemaToRemove!!) { - if (schemaToRemove == null) - { - throw new ArgumentNullException(nameof(schemaToRemove)); - } if (!_schemas.ContainsKey(schemaToRemove.SchemaId)) { return false; @@ -549,12 +528,8 @@ public bool Contains(string? targetNamespace) return _targetNamespaces[targetNamespace] != null; } - public bool Contains(XmlSchema schema) + public bool Contains(XmlSchema schema!!) { - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } return _schemas.ContainsValue(schema); } @@ -653,17 +628,13 @@ public void Compile() return; } - public XmlSchema Reprocess(XmlSchema schema) + public XmlSchema Reprocess(XmlSchema schema!!) { // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Remove, Add and AddSchemaToSet // methods. If you change anything here *make sure* to update Remove/Add/AddSchemaToSet method(s) accordingly. // The only difference is that we don't touch .schemas collection here to not break a code like this: // foreach (XmlSchema s in schemaset.schemas) { schemaset.Reprocess(s); } // This is by purpose. - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } if (!_schemas.ContainsKey(schema.SchemaId)) { throw new ArgumentException(SR.Sch_SchemaDoesNotExist, nameof(schema)); @@ -744,10 +715,8 @@ public XmlSchema Reprocess(XmlSchema schema) } } - public void CopyTo(XmlSchema[] schemas, int index) + public void CopyTo(XmlSchema[] schemas!!, int index) { - if (schemas == null) - throw new ArgumentNullException(nameof(schemas)); if (index < 0 || index > schemas.Length - 1) throw new ArgumentOutOfRangeException(nameof(index)); _schemas.Values.CopyTo(schemas, index); @@ -877,12 +846,8 @@ private bool AddToCompiledInfo(XmlSchema schema, SchemaInfo newCompiledInfo, ref #endif //For use by the validator when loading schemaLocations in the instance - internal void Add(string? targetNamespace, XmlReader reader, Hashtable validatedNamespaces) + internal void Add(string? targetNamespace, XmlReader reader!!, Hashtable validatedNamespaces) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } if (targetNamespace == null) { targetNamespace = string.Empty; @@ -1115,15 +1080,10 @@ private void ResolveSubstitutionGroup(XmlSchemaSubstitutionGroup substitutionGro substitutionGroup.Members.Add(headElement); } - internal XmlSchema? Remove(XmlSchema schema, bool forceCompile) + internal XmlSchema? Remove(XmlSchema schema!!, bool forceCompile) { // Due to bug 644477 - this method is tightly coupled (THE CODE IS BASICALLY COPIED) to Reprocess // method. If you change anything here *make sure* to update Reprocess method accordingly. - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } - lock (InternalSyncObject) { //Need to lock here so that remove cannot be called while the set is being compiled if (_schemas.ContainsKey(schema.SchemaId)) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaType.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaType.cs index cd824e739012ee..d11d5381da19b6 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaType.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaType.cs @@ -29,13 +29,8 @@ public class XmlSchemaType : XmlSchemaAnnotated /// /// [To be supplied.] /// - public static XmlSchemaSimpleType? GetBuiltInSimpleType(XmlQualifiedName qualifiedName) + public static XmlSchemaSimpleType? GetBuiltInSimpleType(XmlQualifiedName qualifiedName!!) { - if (qualifiedName == null) - { - throw new ArgumentNullException(nameof(qualifiedName)); - } - return DatatypeImplementation.GetSimpleTypeFromXsdType(qualifiedName); } @@ -63,13 +58,8 @@ public static XmlSchemaSimpleType GetBuiltInSimpleType(XmlTypeCode typeCode) /// /// [To be supplied.] /// - public static XmlSchemaComplexType? GetBuiltInComplexType(XmlQualifiedName qualifiedName) + public static XmlSchemaComplexType? GetBuiltInComplexType(XmlQualifiedName qualifiedName!!) { - if (qualifiedName == null) - { - throw new ArgumentNullException(nameof(qualifiedName)); - } - if (qualifiedName.Equals(XmlSchemaComplexType.AnyType.QualifiedName)) { return XmlSchemaComplexType.AnyType; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaValidator.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaValidator.cs index e02e6af5fe8597..537a8587c64389 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaValidator.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlSchemaValidator.cs @@ -159,21 +159,8 @@ public sealed class XmlSchemaValidator private static readonly string[] s_methodNames = new string[12] { "None", "Initialize", "top-level ValidateAttribute", "top-level ValidateText or ValidateWhitespace", "ValidateElement", "ValidateAttribute", "ValidateEndOfAttributes", "ValidateText", "ValidateWhitespace", "ValidateEndElement", "SkipToEndElement", "EndValidation" }; - public XmlSchemaValidator(XmlNameTable nameTable, XmlSchemaSet schemas, IXmlNamespaceResolver namespaceResolver, XmlSchemaValidationFlags validationFlags) + public XmlSchemaValidator(XmlNameTable nameTable!!, XmlSchemaSet schemas!!, IXmlNamespaceResolver namespaceResolver!!, XmlSchemaValidationFlags validationFlags) { - if (nameTable == null) - { - throw new ArgumentNullException(nameof(nameTable)); - } - if (schemas == null) - { - throw new ArgumentNullException(nameof(schemas)); - } - if (namespaceResolver == null) - { - throw new ArgumentNullException(nameof(namespaceResolver)); - } - _nameTable = nameTable; _nsResolver = namespaceResolver; _validationFlags = validationFlags; @@ -328,12 +315,8 @@ public event ValidationEventHandler? ValidationEventHandler } //Methods - public void AddSchema(XmlSchema schema) + public void AddSchema(XmlSchema schema!!) { - if (schema == null) - { - throw new ArgumentNullException(nameof(schema)); - } if ((_validationFlags & XmlSchemaValidationFlags.ProcessInlineSchema) == 0) { //Do not process schema if processInlineSchema is not set return; @@ -398,10 +381,7 @@ public void Initialize(XmlSchemaObject partialValidationType) { throw new InvalidOperationException(SR.Format(SR.Sch_InvalidStateTransition, new string[] { s_methodNames[(int)_currentState], s_methodNames[(int)ValidatorState.Start] })); } - if (partialValidationType == null) - { - throw new ArgumentNullException(nameof(partialValidationType)); - } + ArgumentNullException.ThrowIfNull(partialValidationType); if (!(partialValidationType is XmlSchemaElement || partialValidationType is XmlSchemaAttribute || partialValidationType is XmlSchemaType)) { throw new ArgumentException(SR.Sch_InvalidPartialValidationType); @@ -418,17 +398,8 @@ public void ValidateElement(string localName, string namespaceUri, XmlSchemaInfo ValidateElement(localName, namespaceUri, schemaInfo, null, null, null, null); } - public void ValidateElement(string localName, string namespaceUri, XmlSchemaInfo? schemaInfo, string? xsiType, string? xsiNil, string? xsiSchemaLocation, string? xsiNoNamespaceSchemaLocation) + public void ValidateElement(string localName!!, string namespaceUri!!, XmlSchemaInfo? schemaInfo, string? xsiType, string? xsiNil, string? xsiSchemaLocation, string? xsiNoNamespaceSchemaLocation) { - if (localName == null) - { - throw new ArgumentNullException(nameof(localName)); - } - if (namespaceUri == null) - { - throw new ArgumentNullException(nameof(namespaceUri)); - } - CheckStateTransition(ValidatorState.Element, s_methodNames[(int)ValidatorState.Element]); ClearPSVI(); @@ -507,37 +478,18 @@ public void ValidateElement(string localName, string namespaceUri, XmlSchemaInfo } } - public object? ValidateAttribute(string localName, string namespaceUri, string attributeValue, XmlSchemaInfo? schemaInfo) + public object? ValidateAttribute(string localName, string namespaceUri, string attributeValue!!, XmlSchemaInfo? schemaInfo) { - if (attributeValue == null) - { - throw new ArgumentNullException(nameof(attributeValue)); - } - return ValidateAttribute(localName, namespaceUri, null, attributeValue, schemaInfo); } - public object? ValidateAttribute(string localName, string namespaceUri, XmlValueGetter attributeValue, XmlSchemaInfo? schemaInfo) + public object? ValidateAttribute(string localName, string namespaceUri, XmlValueGetter attributeValue!!, XmlSchemaInfo? schemaInfo) { - if (attributeValue == null) - { - throw new ArgumentNullException(nameof(attributeValue)); - } - return ValidateAttribute(localName, namespaceUri, attributeValue, null, schemaInfo); } - private object? ValidateAttribute(string localName, string namespaceUri, XmlValueGetter? attributeValueGetter, string? attributeStringValue, XmlSchemaInfo? schemaInfo) + private object? ValidateAttribute(string localName!!, string namespaceUri!!, XmlValueGetter? attributeValueGetter, string? attributeStringValue, XmlSchemaInfo? schemaInfo) { - if (localName == null) - { - throw new ArgumentNullException(nameof(localName)); - } - if (namespaceUri == null) - { - throw new ArgumentNullException(nameof(namespaceUri)); - } - ValidatorState toState = _validationStack.Length > 1 ? ValidatorState.Attribute : ValidatorState.TopLevelAttribute; CheckStateTransition(toState, s_methodNames[(int)toState]); @@ -744,13 +696,8 @@ public void ValidateElement(string localName, string namespaceUri, XmlSchemaInfo return typedVal; } - public void GetUnspecifiedDefaultAttributes(ArrayList defaultAttributes) + public void GetUnspecifiedDefaultAttributes(ArrayList defaultAttributes!!) { - if (defaultAttributes == null) - { - throw new ArgumentNullException(nameof(defaultAttributes)); - } - CheckStateTransition(ValidatorState.Attribute, "GetUnspecifiedDefaultAttributes"); GetUnspecifiedDefaultAttributes(defaultAttributes, false); } @@ -771,21 +718,13 @@ public void ValidateEndOfAttributes(XmlSchemaInfo? schemaInfo) } } - public void ValidateText(string elementValue) + public void ValidateText(string elementValue!!) { - if (elementValue == null) - { - throw new ArgumentNullException(nameof(elementValue)); - } ValidateText(elementValue, null); } - public void ValidateText(XmlValueGetter elementValue) + public void ValidateText(XmlValueGetter elementValue!!) { - if (elementValue == null) - { - throw new ArgumentNullException(nameof(elementValue)); - } ValidateText(null, elementValue); } @@ -854,22 +793,13 @@ private void ValidateText(string? elementStringValue, XmlValueGetter? elementVal } } - public void ValidateWhitespace(string elementValue) + public void ValidateWhitespace(string elementValue!!) { - if (elementValue == null) - { - throw new ArgumentNullException(nameof(elementValue)); - } ValidateWhitespace(elementValue, null); } - public void ValidateWhitespace(XmlValueGetter elementValue) + public void ValidateWhitespace(XmlValueGetter elementValue!!) { - if (elementValue == null) - { - throw new ArgumentNullException(nameof(elementValue)); - } - ValidateWhitespace(null, elementValue); } @@ -928,12 +858,8 @@ private void ValidateWhitespace(string? elementStringValue, XmlValueGetter? elem return InternalValidateEndElement(schemaInfo, null); } - public object? ValidateEndElement(XmlSchemaInfo? schemaInfo, object typedValue) + public object? ValidateEndElement(XmlSchemaInfo? schemaInfo, object typedValue!!) { - if (typedValue == null) - { - throw new ArgumentNullException(nameof(typedValue)); - } if (_textValue.Length > 0) { throw new InvalidOperationException(SR.Sch_InvalidEndElementCall); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlValueConverter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlValueConverter.cs index 3dd143e7b24dd0..2267accdafab16 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlValueConverter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Schema/XmlValueConverter.cs @@ -874,17 +874,13 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) } #region AUTOGENERATED_XMLNUMERIC10CONVERTER - public override decimal ToDecimal(string value) + public override decimal ToDecimal(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (TypeCode == XmlTypeCode.Decimal) return XmlConvert.ToDecimal((string)value); return XmlConvert.ToInteger((string)value); } - public override decimal ToDecimal(object value) + public override decimal ToDecimal(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DecimalType) return ((decimal)value); @@ -899,17 +895,13 @@ public override int ToInt32(long value) { return Int64ToInt32((long)value); } - public override int ToInt32(string value) + public override int ToInt32(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (TypeCode == XmlTypeCode.Decimal) return DecimalToInt32(XmlConvert.ToDecimal((string)value)); return XmlConvert.ToInt32((string)value); } - public override int ToInt32(object value) + public override int ToInt32(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DecimalType) return DecimalToInt32((decimal)value); @@ -924,17 +916,13 @@ public override long ToInt64(int value) { return ((long)(int)value); } - public override long ToInt64(string value) + public override long ToInt64(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (TypeCode == XmlTypeCode.Decimal) return DecimalToInt64(XmlConvert.ToDecimal((string)value)); return XmlConvert.ToInt64((string)value); } - public override long ToInt64(object value) + public override long ToInt64(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DecimalType) return DecimalToInt64((decimal)value); @@ -971,10 +959,8 @@ public override string ToString(long value) { return XmlConvert.ToString((long)value); } - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DecimalType) return this.ToString((decimal)value); @@ -991,10 +977,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(decimal value, Type destinationType) + public override object ChangeType(decimal value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DecimalType) return ((decimal)value); if (destinationType == Int32Type) return DecimalToInt32((decimal)value); @@ -1006,10 +990,8 @@ public override object ChangeType(decimal value, Type destinationType) return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(int value, Type destinationType) + public override object ChangeType(int value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DecimalType) return ((decimal)(int)value); if (destinationType == Int32Type) return ((int)value); @@ -1021,10 +1003,8 @@ public override object ChangeType(int value, Type destinationType) return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(long value, Type destinationType) + public override object ChangeType(long value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DecimalType) return ((decimal)(long)value); if (destinationType == Int32Type) return Int64ToInt32((long)value); @@ -1036,11 +1016,8 @@ public override object ChangeType(long value, Type destinationType) return ChangeTypeWildcardSource(value, destinationType!, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DecimalType) return this.ToDecimal((string)value); if (destinationType == Int32Type) return this.ToInt32((string)value); @@ -1052,11 +1029,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeTypeWildcardSource(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -1140,17 +1114,13 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) } #region AUTOGENERATED_XMLNUMERIC2CONVERTER - public override double ToDouble(string value) + public override double ToDouble(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (TypeCode == XmlTypeCode.Float) return ((double)XmlConvert.ToSingle((string)value)); return XmlConvert.ToDouble((string)value); } - public override double ToDouble(object value) + public override double ToDouble(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DoubleType) return ((double)value); @@ -1184,17 +1154,13 @@ public override float ToSingle(double value) { return ((float)(double)value); } - public override float ToSingle(string value) + public override float ToSingle(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (TypeCode == XmlTypeCode.Float) return XmlConvert.ToSingle((string)value); return ((float)XmlConvert.ToDouble((string)value)); } - public override float ToSingle(object value) + public override float ToSingle(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DoubleType) return ((float)(double)value); @@ -1220,10 +1186,8 @@ public override string ToString(float value) if (TypeCode == XmlTypeCode.Float) return XmlConvert.ToString((float)value); return XmlConvert.ToString((double)(float)value); } - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DoubleType) return this.ToString((double)value); @@ -1239,10 +1203,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(double value, Type destinationType) + public override object ChangeType(double value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DoubleType) return ((double)value); if (destinationType == SingleType) return ((float)(double)value); @@ -1253,11 +1215,8 @@ public override object ChangeType(double value, Type destinationType) return ChangeListType(value, destinationType, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DoubleType) return this.ToDouble((string)value); if (destinationType == SingleType) return this.ToSingle((string)value); @@ -1268,11 +1227,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeListType(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -1317,10 +1273,8 @@ public override DateTime ToDateTime(DateTimeOffset value) return DateTimeOffsetToDateTime(value); } - public override DateTime ToDateTime(string value) + public override DateTime ToDateTime(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return TypeCode switch { XmlTypeCode.Date => StringToDate((string)value), @@ -1333,10 +1287,8 @@ public override DateTime ToDateTime(string value) _ => StringToDateTime((string)value), }; } - public override DateTime ToDateTime(object value) + public override DateTime ToDateTime(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DateTimeType) return ((DateTime)value); @@ -1356,10 +1308,8 @@ public override DateTimeOffset ToDateTimeOffset(DateTime value) return new DateTimeOffset(value); } - public override DateTimeOffset ToDateTimeOffset(string value) + public override DateTimeOffset ToDateTimeOffset(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return TypeCode switch { XmlTypeCode.Date => StringToDateOffset((string)value), @@ -1373,10 +1323,8 @@ public override DateTimeOffset ToDateTimeOffset(string value) }; } - public override DateTimeOffset ToDateTimeOffset(object value) + public override DateTimeOffset ToDateTimeOffset(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DateTimeType) return ToDateTimeOffset((DateTime)value); @@ -1452,10 +1400,8 @@ public override string ToString(DateTimeOffset value) => _ => DateTimeOffsetToString((DateTimeOffset)value), }; - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == DateTimeType) return this.ToString((DateTime)value); @@ -1471,10 +1417,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(DateTime value, Type destinationType) + public override object ChangeType(DateTime value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DateTimeType) return ((DateTime)value); if (destinationType == DateTimeOffsetType) return this.ToDateTimeOffset((DateTime)value); @@ -1485,11 +1429,8 @@ public override object ChangeType(DateTime value, Type destinationType) return ChangeListType(value, destinationType, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == DateTimeType) return this.ToDateTime((string)value); if (destinationType == DateTimeOffsetType) return this.ToDateTimeOffset((string)value); @@ -1500,11 +1441,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeListType(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -1543,16 +1481,12 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) } #region AUTOGENERATED_XMLBOOLEANCONVERTER - public override bool ToBoolean(string value) + public override bool ToBoolean(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToBoolean((string)value); } - public override bool ToBoolean(object value) + public override bool ToBoolean(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == BooleanType) return ((bool)value); @@ -1613,10 +1547,8 @@ public override string ToString(bool value) { return XmlConvert.ToString((bool)value); } - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == BooleanType) return XmlConvert.ToString((bool)value); @@ -1631,10 +1563,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(bool value, Type destinationType) + public override object ChangeType(bool value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == BooleanType) return ((bool)value); if (destinationType == StringType) return XmlConvert.ToString((bool)value); @@ -1644,11 +1574,8 @@ public override object ChangeType(bool value, Type destinationType) return ChangeListType(value, destinationType, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == BooleanType) return XmlConvert.ToBoolean((string)value); if (destinationType == StringType) return ((string)value); @@ -1658,11 +1585,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeListType(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -1698,10 +1622,8 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) } #region AUTOGENERATED_XMLMISCCONVERTER - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == ByteArrayType) @@ -1740,11 +1662,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == ByteArrayType) { @@ -1778,11 +1697,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeTypeWildcardSource(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -1927,10 +1843,8 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) } #region AUTOGENERATED_XMLSTRINGCONVERTER - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return ((string)value); @@ -1944,11 +1858,8 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return ((string)value); if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(SchemaType!, (string)value)); @@ -1957,11 +1868,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeListType(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -2005,16 +1913,12 @@ private XmlUntypedConverter(XmlUntypedConverter atomicConverter, bool allowListT // ToBoolean //----------------------------------------------- - public override bool ToBoolean(string value) + public override bool ToBoolean(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToBoolean((string)value); } - public override bool ToBoolean(object value) + public override bool ToBoolean(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToBoolean((string)value); @@ -2027,16 +1931,12 @@ public override bool ToBoolean(object value) // ToDateTime //----------------------------------------------- - public override DateTime ToDateTime(string value) + public override DateTime ToDateTime(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return UntypedAtomicToDateTime((string)value); } - public override DateTime ToDateTime(object value) + public override DateTime ToDateTime(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return UntypedAtomicToDateTime((string)value); @@ -2048,17 +1948,13 @@ public override DateTime ToDateTime(object value) // ToDateTimeOffset //----------------------------------------------- - public override DateTimeOffset ToDateTimeOffset(string value) + public override DateTimeOffset ToDateTimeOffset(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return UntypedAtomicToDateTimeOffset((string)value); } - public override DateTimeOffset ToDateTimeOffset(object value) + public override DateTimeOffset ToDateTimeOffset(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return UntypedAtomicToDateTimeOffset((string)value); @@ -2070,16 +1966,12 @@ public override DateTimeOffset ToDateTimeOffset(object value) // ToDecimal //----------------------------------------------- - public override decimal ToDecimal(string value) + public override decimal ToDecimal(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToDecimal((string)value); } - public override decimal ToDecimal(object value) + public override decimal ToDecimal(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToDecimal((string)value); @@ -2092,16 +1984,12 @@ public override decimal ToDecimal(object value) // ToDouble //----------------------------------------------- - public override double ToDouble(string value) + public override double ToDouble(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToDouble((string)value); } - public override double ToDouble(object value) + public override double ToDouble(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToDouble((string)value); @@ -2114,16 +2002,12 @@ public override double ToDouble(object value) // ToInt32 //----------------------------------------------- - public override int ToInt32(string value) + public override int ToInt32(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToInt32((string)value); } - public override int ToInt32(object value) + public override int ToInt32(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToInt32((string)value); @@ -2136,16 +2020,12 @@ public override int ToInt32(object value) // ToInt64 //----------------------------------------------- - public override long ToInt64(string value) + public override long ToInt64(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToInt64((string)value); } - public override long ToInt64(object value) + public override long ToInt64(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToInt64((string)value); @@ -2158,16 +2038,12 @@ public override long ToInt64(object value) // ToSingle //----------------------------------------------- - public override float ToSingle(string value) + public override float ToSingle(string value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - return XmlConvert.ToSingle((string)value); } - public override float ToSingle(object value) + public override float ToSingle(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == StringType) return XmlConvert.ToSingle((string)value); @@ -2212,10 +2088,8 @@ public override string ToString(float value) { return XmlConvert.ToString((float)value); } - public override string ToString(object value, IXmlNamespaceResolver? nsResolver) + public override string ToString(object value!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == BooleanType) return XmlConvert.ToString((bool)value); @@ -2247,71 +2121,56 @@ public override string ToString(object value, IXmlNamespaceResolver? nsResolver) // ChangeType //----------------------------------------------- - public override object ChangeType(bool value, Type destinationType) + public override object ChangeType(bool value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return XmlConvert.ToString((bool)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(DateTime value, Type destinationType) + public override object ChangeType(DateTime value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return DateTimeToString((DateTime)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(decimal value, Type destinationType) + public override object ChangeType(decimal value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return XmlConvert.ToString((decimal)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(double value, Type destinationType) + public override object ChangeType(double value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return XmlConvert.ToString((double)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(int value, Type destinationType) + public override object ChangeType(int value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return XmlConvert.ToString((int)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(long value, Type destinationType) + public override object ChangeType(long value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == StringType) return XmlConvert.ToString((long)value); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == BooleanType) return XmlConvert.ToBoolean((string)value); if (destinationType == ByteType) return Int32ToByte(XmlConvert.ToInt32((string)value)); @@ -2338,11 +2197,8 @@ public override object ChangeType(string value, Type destinationType, IXmlNamesp return ChangeTypeWildcardSource(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -2523,10 +2379,8 @@ private XmlAnyConverter(XmlTypeCode typeCode) : base(typeCode) // ToBoolean //----------------------------------------------- - public override bool ToBoolean(object value) + public override bool ToBoolean(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((XmlAtomicValue)value).ValueAsBoolean; @@ -2539,10 +2393,8 @@ public override bool ToBoolean(object value) // ToDateTime //----------------------------------------------- - public override DateTime ToDateTime(object value) + public override DateTime ToDateTime(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((XmlAtomicValue)value).ValueAsDateTime; @@ -2554,10 +2406,8 @@ public override DateTime ToDateTime(object value) // ToDateTimeOffset //----------------------------------------------- - public override DateTimeOffset ToDateTimeOffset(object value) + public override DateTimeOffset ToDateTimeOffset(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return (DateTimeOffset)((XmlAtomicValue)value).ValueAs(DateTimeOffsetType); @@ -2570,10 +2420,8 @@ public override DateTimeOffset ToDateTimeOffset(object value) // ToDecimal //----------------------------------------------- - public override decimal ToDecimal(object value) + public override decimal ToDecimal(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((decimal)((XmlAtomicValue)value).ValueAs(DecimalType)); @@ -2586,10 +2434,8 @@ public override decimal ToDecimal(object value) // ToDouble //----------------------------------------------- - public override double ToDouble(object value) + public override double ToDouble(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((XmlAtomicValue)value).ValueAsDouble; @@ -2602,10 +2448,8 @@ public override double ToDouble(object value) // ToInt32 //----------------------------------------------- - public override int ToInt32(object value) + public override int ToInt32(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((XmlAtomicValue)value).ValueAsInt; @@ -2618,10 +2462,8 @@ public override int ToInt32(object value) // ToInt64 //----------------------------------------------- - public override long ToInt64(object value) + public override long ToInt64(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((XmlAtomicValue)value).ValueAsLong; @@ -2634,10 +2476,8 @@ public override long ToInt64(object value) // ToSingle //----------------------------------------------- - public override float ToSingle(object value) + public override float ToSingle(object value!!) { - if (value == null) throw new ArgumentNullException(nameof(value)); - Type sourceType = value.GetType(); if (sourceType == XmlAtomicValueType) return ((float)((XmlAtomicValue)value).ValueAs(SingleType)); @@ -2657,82 +2497,64 @@ public override float ToSingle(object value) // ChangeType //----------------------------------------------- - public override object ChangeType(bool value, Type destinationType) + public override object ChangeType(bool value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Boolean), (bool)value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(DateTime value, Type destinationType) + public override object ChangeType(DateTime value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.DateTime), (DateTime)value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(decimal value, Type destinationType) + public override object ChangeType(decimal value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Decimal), value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(double value, Type destinationType) + public override object ChangeType(double value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Double), (double)value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(int value, Type destinationType) + public override object ChangeType(int value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Int), (int)value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(long value, Type destinationType) + public override object ChangeType(long value, Type destinationType!!) { - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Long), (long)value)); return ChangeTypeWildcardSource(value, destinationType, null); } - public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(string value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - if (destinationType == ObjectType) destinationType = DefaultClrType!; if (destinationType == XmlAtomicValueType) return (new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.String), (string)value)); return ChangeTypeWildcardSource(value, destinationType, nsResolver); } - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); if (destinationType == ObjectType) destinationType = DefaultClrType!; @@ -2853,11 +2675,8 @@ private XmlAnyListConverter(XmlBaseConverter atomicConverter) : base(atomicConve // ChangeType //----------------------------------------------- - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - // If source value does not implement IEnumerable, or it is a string or byte[], if (!(value is IEnumerable) || value.GetType() == StringType || value.GetType() == ByteArrayType) { @@ -2909,11 +2728,8 @@ public static XmlValueConverter Create(XmlValueConverter atomicConverter) // ChangeType //----------------------------------------------- - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - return ChangeListType(value, destinationType, nsResolver); } @@ -3151,11 +2967,8 @@ public static XmlValueConverter Create(XmlSchemaType schemaType) // ChangeType //----------------------------------------------- - public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver? nsResolver) + public override object ChangeType(object value!!, Type destinationType!!, IXmlNamespaceResolver? nsResolver) { - if (value == null) throw new ArgumentNullException(nameof(value)); - if (destinationType == null) throw new ArgumentNullException(nameof(destinationType)); - Type sourceType = value.GetType(); // If source value is an XmlAtomicValue, then allow it to perform the conversion diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/TypeExtensions.cs b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/TypeExtensions.cs index 77b150b7626b32..2fb7a24efc65d9 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/TypeExtensions.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/TypeExtensions.cs @@ -13,14 +13,9 @@ internal static class TypeExtensions public static bool TryConvertTo( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] - this Type targetType, + this Type targetType!!, object? data, out object? returnValue) { - if (targetType == null) - { - throw new ArgumentNullException(nameof(targetType)); - } - returnValue = null; if (data == null) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlReflectionImporter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlReflectionImporter.cs index 105c5f2897051f..80f57fa0d24e6d 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlReflectionImporter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlReflectionImporter.cs @@ -166,10 +166,8 @@ public XmlTypeMapping ImportTypeMapping(Type type, XmlRootAttribute? root) /// [To be supplied.] /// [RequiresUnreferencedCode(XmlSerializer.TrimSerializationWarning)] - public XmlTypeMapping ImportTypeMapping(Type type, XmlRootAttribute? root, string? defaultNamespace) + public XmlTypeMapping ImportTypeMapping(Type type!!, XmlRootAttribute? root, string? defaultNamespace) { - if (type == null) - throw new ArgumentNullException(nameof(type)); XmlTypeMapping xmlMapping = new XmlTypeMapping(_typeScope, ImportElement(_modelScope.GetTypeModel(type), root, defaultNamespace, new RecursionLimiter())); xmlMapping.SetKeyInternal(XmlMapping.GenerateKey(type, root, defaultNamespace)); xmlMapping.GenerateSerializer = true; @@ -485,10 +483,7 @@ private TypeMapping ImportTypeMapping(TypeModel model, string? ns, ImportContext // do not validate the schema provider method for wildcard types. return null; } - else if (provider.MethodName == null) - { - throw new ArgumentNullException(nameof(provider.MethodName)); - } + ArgumentNullException.ThrowIfNull(provider.MethodName, nameof(provider.MethodName)); if (!CSharpHelpers.IsValidLanguageIndependentIdentifier(provider.MethodName)) throw new ArgumentException(SR.Format(SR.XmlGetSchemaMethodName, provider.MethodName), nameof(provider.MethodName)); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReader.cs index 1a49b131660f22..979756374c8bbd 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializationReader.cs @@ -947,7 +947,7 @@ protected int GetArrayLength(string name, string ns) { if (GetNullAttr()) return 0; string? arrayType = _r.GetAttribute(_arrayTypeID, _soapNsID); - SoapArrayInfo arrayInfo = ParseArrayType(arrayType); + SoapArrayInfo arrayInfo = ParseArrayType(arrayType!); if (arrayInfo.dimensions != 1) throw new InvalidOperationException(SR.Format(SR.XmlInvalidArrayDimentions, CurrentTag())); XmlQualifiedName qname = ToXmlQualifiedName(arrayInfo.qname, false); if (qname.Name != name) throw new InvalidOperationException(SR.Format(SR.XmlInvalidArrayTypeName, qname.Name, name, CurrentTag())); @@ -963,7 +963,7 @@ private struct SoapArrayInfo public int jaggedDimensions; } - private SoapArrayInfo ParseArrayType(string? value) + private SoapArrayInfo ParseArrayType(string value) { if (value == null) { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs index 7b66766d4cab06..38413c9f499218 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs @@ -189,11 +189,8 @@ public XmlSerializer(Type type, XmlAttributeOverrides? overrides) : this(type, o } [RequiresUnreferencedCode(TrimSerializationWarning)] - public XmlSerializer(XmlTypeMapping xmlTypeMapping) + public XmlSerializer(XmlTypeMapping xmlTypeMapping!!) { - if (xmlTypeMapping == null) - throw new ArgumentNullException(nameof(xmlTypeMapping)); - if (Mode != SerializationMode.ReflectionOnly) { _tempAssembly = GenerateTempAssembly(xmlTypeMapping); @@ -207,11 +204,8 @@ public XmlSerializer(Type type) : this(type, (string?)null) } [RequiresUnreferencedCode(TrimSerializationWarning)] - public XmlSerializer(Type type, string? defaultNamespace) + public XmlSerializer(Type type!!, string? defaultNamespace) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - DefaultNamespace = defaultNamespace; _rootType = type; @@ -269,11 +263,8 @@ public XmlSerializer(Type type, string? defaultNamespace) } [RequiresUnreferencedCode(TrimSerializationWarning)] - public XmlSerializer(Type type, XmlAttributeOverrides? overrides, Type[]? extraTypes, XmlRootAttribute? root, string? defaultNamespace, string? location) + public XmlSerializer(Type type!!, XmlAttributeOverrides? overrides, Type[]? extraTypes, XmlRootAttribute? root, string? defaultNamespace, string? location) { - if (type == null) - throw new ArgumentNullException(nameof(type)); - DefaultNamespace = defaultNamespace; _rootType = type; _mapping = GenerateXmlTypeMapping(type, overrides, extraTypes, root, defaultNamespace); @@ -309,13 +300,8 @@ private XmlTypeMapping GenerateXmlTypeMapping(Type type, XmlAttributeOverrides? } [RequiresUnreferencedCode("creates TempAssembly")] - internal static TempAssembly? GenerateTempAssembly(XmlMapping xmlMapping, Type? type, string? defaultNamespace, string? location) + internal static TempAssembly? GenerateTempAssembly(XmlMapping xmlMapping!!, Type? type, string? defaultNamespace, string? location) { - if (xmlMapping == null) - { - throw new ArgumentNullException(nameof(xmlMapping)); - } - xmlMapping.CheckShallow(); if (xmlMapping.IsSoap) { @@ -659,11 +645,8 @@ internal static bool GenerateSerializer(Type[]? types, XmlMapping[] mappings, St if (types == null || types.Length == 0) return false; - if (mappings == null) - throw new ArgumentNullException(nameof(mappings)); - - if (stream == null) - throw new ArgumentNullException(nameof(stream)); + ArgumentNullException.ThrowIfNull(mappings); + ArgumentNullException.ThrowIfNull(stream); if (XmlMapping.IsShallow(mappings)) { @@ -762,12 +745,8 @@ public static string GetXmlSerializerAssemblyName(Type type) return GetXmlSerializerAssemblyName(type, null); } - public static string GetXmlSerializerAssemblyName(Type type, string? defaultNamespace) + public static string GetXmlSerializerAssemblyName(Type type!!, string? defaultNamespace) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } return Compiler.GetTempAssemblyName(type.Assembly.GetName(), defaultNamespace); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XPath/Internal/XPathAxisIterator.cs b/src/libraries/System.Private.Xml/src/System/Xml/XPath/Internal/XPathAxisIterator.cs index 996b35e8b7e69a..8fe6921dce1f0a 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XPath/Internal/XPathAxisIterator.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XPath/Internal/XPathAxisIterator.cs @@ -27,11 +27,8 @@ public XPathAxisIterator(XPathNavigator nav, XPathNodeType type, bool matchSelf) this.type = type; } - public XPathAxisIterator(XPathNavigator nav, string name, string namespaceURI, bool matchSelf) : this(nav, matchSelf) + public XPathAxisIterator(XPathNavigator nav, string name!!, string namespaceURI!!, bool matchSelf) : this(nav, matchSelf) { - if (name == null) throw new ArgumentNullException(nameof(name)); - if (namespaceURI == null) throw new ArgumentNullException(nameof(namespaceURI)); - this.name = name; this.uri = namespaceURI; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathDocument.cs b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathDocument.cs index 82b173a82adf6e..f7fb25d6ddb13a 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathDocument.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathDocument.cs @@ -49,11 +49,8 @@ internal XPathDocument() /// /// Create a new empty document. All names should be atomized using "nameTable". /// - internal XPathDocument(XmlNameTable nameTable) + internal XPathDocument(XmlNameTable nameTable!!) { - if (nameTable == null) - throw new ArgumentNullException(nameof(nameTable)); - _nameTable = nameTable; } @@ -67,11 +64,8 @@ public XPathDocument(XmlReader reader) : this(reader, XmlSpace.Default) /// /// Create a new document from "reader", with whitespace handling controlled according to "space". /// - public XPathDocument(XmlReader reader, XmlSpace space) + public XPathDocument(XmlReader reader!!, XmlSpace space) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); - LoadFromReader(reader, space); } @@ -147,7 +141,7 @@ internal XmlRawWriter LoadFromWriter(LoadFlags flags, string baseUri) /// can be passed to indicate that names should be atomized by the builder and/or a fragment should be created. /// [MemberNotNull(nameof(_nameTable))] - internal void LoadFromReader(XmlReader reader, XmlSpace space) + internal void LoadFromReader(XmlReader reader!!, XmlSpace space) { XPathDocumentBuilder builder; IXmlLineInfo? lineInfo; @@ -155,9 +149,6 @@ internal void LoadFromReader(XmlReader reader, XmlSpace space) bool topLevelReader; int initialDepth; - if (reader == null) - throw new ArgumentNullException(nameof(reader)); - // Determine line number provider lineInfo = reader as IXmlLineInfo; if (lineInfo == null || !lineInfo.HasLineInfo()) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigator.cs b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigator.cs index 965213102cf06d..360ededdb57cee 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigator.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigator.cs @@ -109,12 +109,8 @@ public override object TypedValue } } - public virtual void SetTypedValue(object typedValue) + public virtual void SetTypedValue(object typedValue!!) { - if (typedValue == null) - { - throw new ArgumentNullException(nameof(typedValue)); - } switch (NodeType) { case XPathNodeType.Element: @@ -604,10 +600,8 @@ public virtual XmlReader ReadSubtree() return CreateReader(); } - public virtual void WriteSubtree(XmlWriter writer) + public virtual void WriteSubtree(XmlWriter writer!!) { - if (null == writer) - throw new ArgumentNullException(nameof(writer)); writer.WriteNode(this, true); } @@ -1341,12 +1335,8 @@ public virtual void ReplaceSelf(string newNode) ReplaceSelf(reader); } - public virtual void ReplaceSelf(XmlReader newNode) + public virtual void ReplaceSelf(XmlReader newNode!!) { - if (newNode == null) - { - throw new ArgumentNullException(nameof(newNode)); - } XPathNodeType type = NodeType; if (type == XPathNodeType.Root || type == XPathNodeType.Attribute @@ -1359,12 +1349,8 @@ public virtual void ReplaceSelf(XmlReader newNode) writer.Close(); } - public virtual void ReplaceSelf(XPathNavigator newNode) + public virtual void ReplaceSelf(XPathNavigator newNode!!) { - if (newNode == null) - { - throw new ArgumentNullException(nameof(newNode)); - } XmlReader reader = newNode.CreateReader(); ReplaceSelf(reader); } @@ -1467,10 +1453,7 @@ public virtual string InnerXml set { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); switch (NodeType) { @@ -1501,23 +1484,15 @@ public virtual void AppendChild(string newChild) AppendChild(reader); } - public virtual void AppendChild(XmlReader newChild) + public virtual void AppendChild(XmlReader newChild!!) { - if (newChild == null) - { - throw new ArgumentNullException(nameof(newChild)); - } XmlWriter writer = AppendChild(); BuildSubtree(newChild, writer); writer.Close(); } - public virtual void AppendChild(XPathNavigator newChild) + public virtual void AppendChild(XPathNavigator newChild!!) { - if (newChild == null) - { - throw new ArgumentNullException(nameof(newChild)); - } if (!IsValidChildType(newChild.NodeType)) { throw new InvalidOperationException(SR.Xpn_BadPosition); @@ -1532,23 +1507,15 @@ public virtual void PrependChild(string newChild) PrependChild(reader); } - public virtual void PrependChild(XmlReader newChild) + public virtual void PrependChild(XmlReader newChild!!) { - if (newChild == null) - { - throw new ArgumentNullException(nameof(newChild)); - } XmlWriter writer = PrependChild(); BuildSubtree(newChild, writer); writer.Close(); } - public virtual void PrependChild(XPathNavigator newChild) + public virtual void PrependChild(XPathNavigator newChild!!) { - if (newChild == null) - { - throw new ArgumentNullException(nameof(newChild)); - } if (!IsValidChildType(newChild.NodeType)) { throw new InvalidOperationException(SR.Xpn_BadPosition); @@ -1563,23 +1530,15 @@ public virtual void InsertBefore(string newSibling) InsertBefore(reader); } - public virtual void InsertBefore(XmlReader newSibling) + public virtual void InsertBefore(XmlReader newSibling!!) { - if (newSibling == null) - { - throw new ArgumentNullException(nameof(newSibling)); - } XmlWriter writer = InsertBefore(); BuildSubtree(newSibling, writer); writer.Close(); } - public virtual void InsertBefore(XPathNavigator newSibling) + public virtual void InsertBefore(XPathNavigator newSibling!!) { - if (newSibling == null) - { - throw new ArgumentNullException(nameof(newSibling)); - } if (!IsValidSiblingType(newSibling.NodeType)) { throw new InvalidOperationException(SR.Xpn_BadPosition); @@ -1594,23 +1553,15 @@ public virtual void InsertAfter(string newSibling) InsertAfter(reader); } - public virtual void InsertAfter(XmlReader newSibling) + public virtual void InsertAfter(XmlReader newSibling!!) { - if (newSibling == null) - { - throw new ArgumentNullException(nameof(newSibling)); - } XmlWriter writer = InsertAfter(); BuildSubtree(newSibling, writer); writer.Close(); } - public virtual void InsertAfter(XPathNavigator newSibling) + public virtual void InsertAfter(XPathNavigator newSibling!!) { - if (newSibling == null) - { - throw new ArgumentNullException(nameof(newSibling)); - } if (!IsValidSiblingType(newSibling.NodeType)) { throw new InvalidOperationException(SR.Xpn_BadPosition); @@ -2066,13 +2017,8 @@ private XmlReader CreateReader() return XPathNavigatorReader.Create(this); } - private XmlReader CreateContextReader(string xml, bool fromCurrentNode) + private XmlReader CreateContextReader(string xml!!, bool fromCurrentNode) { - if (xml == null) - { - throw new ArgumentNullException(nameof(xml)); - } - // We have to set the namespace context for the reader. XPathNavigator editor = CreateNavigator(); // scope starts from parent. diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorKeyComparer.cs b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorKeyComparer.cs index 703aca1d6e1e2d..cc155b51536a75 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorKeyComparer.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorKeyComparer.cs @@ -20,17 +20,13 @@ bool IEqualityComparer.Equals(object? obj1, object? obj2) return false; } - int IEqualityComparer.GetHashCode(object obj) + int IEqualityComparer.GetHashCode(object obj!!) { int hashCode; XPathNavigator? nav; XPathDocumentNavigator? xpdocNav; - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - else if (null != (xpdocNav = obj as XPathDocumentNavigator)) + if (null != (xpdocNav = obj as XPathDocumentNavigator)) { hashCode = xpdocNav.GetPositionHashCode(); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorReader.cs index d7edb4c9acbaee..152e317ca40757 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XPath/XPathNavigatorReader.cs @@ -455,10 +455,8 @@ public override int AttributeCount return null; } - public override string? GetAttribute(string localName, string? namespaceURI) + public override string? GetAttribute(string localName!!, string? namespaceURI) { - if (null == localName) - throw new ArgumentNullException(nameof(localName)); // reader allows calling GetAttribute, even when positioned inside attributes XPathNavigator nav = _nav; switch (nav.NodeType) @@ -554,10 +552,8 @@ public override string GetAttribute(int index) } - public override bool MoveToAttribute(string localName, string? namespaceName) + public override bool MoveToAttribute(string localName!!, string? namespaceName) { - if (null == localName) - throw new ArgumentNullException(nameof(localName)); int depth; XPathNavigator? nav = GetElemNav(out depth); if (null != nav) diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XmlConvert.cs b/src/libraries/System.Private.Xml/src/System/Xml/XmlConvert.cs index ed42e646f8df24..e60306826c54b5 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XmlConvert.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XmlConvert.cs @@ -322,23 +322,13 @@ internal static byte[] FromBinHexString(string s) return FromBinHexString(s, true); } - internal static byte[] FromBinHexString(string s, bool allowOddCount) + internal static byte[] FromBinHexString(string s!!, bool allowOddCount) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } - return BinHexDecoder.Decode(s.ToCharArray(), allowOddCount); } - internal static string ToBinHexString(byte[] inArray) + internal static string ToBinHexString(byte[] inArray!!) { - if (inArray == null) - { - throw new ArgumentNullException(nameof(inArray)); - } - return BinHexEncoder.Encode(inArray, 0, inArray.Length); } @@ -348,13 +338,8 @@ internal static string ToBinHexString(byte[] inArray) /// /// /// - public static string VerifyName(string name) + public static string VerifyName(string name!!) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (name.Length == 0) { throw new ArgumentNullException(nameof(name), SR.Xml_EmptyName); @@ -414,13 +399,8 @@ public static string VerifyNCName(string name) return VerifyNCName(name, ExceptionType.XmlException); } - internal static string VerifyNCName(string name, ExceptionType exceptionType) + internal static string VerifyNCName(string name!!, ExceptionType exceptionType) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (name.Length == 0) { throw new ArgumentNullException(nameof(name), SR.Xml_EmptyLocalName); @@ -492,13 +472,8 @@ public static string VerifyNMTOKEN(string name) return VerifyNMTOKEN(name, ExceptionType.XmlException); } - internal static string VerifyNMTOKEN(string name, ExceptionType exceptionType) + internal static string VerifyNMTOKEN(string name!!, ExceptionType exceptionType) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - if (name.Length == 0) { throw CreateException(SR.Xml_InvalidNmToken, name, exceptionType); @@ -542,25 +517,16 @@ internal static string VerifyNMTOKEN(string name, ExceptionType exceptionType) // Verification method for XML characters as defined in XML spec production [2] Char. // Throws XmlException if invalid character is found, otherwise returns the input string. - public static string VerifyXmlChars(string content) + public static string VerifyXmlChars(string content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } - VerifyCharData(content, ExceptionType.XmlException); return content; } // Verification method for XML public ID characters as defined in XML spec production [13] PubidChar. // Throws XmlException if invalid character is found, otherwise returns the input string. - public static string VerifyPublicId(string publicId) + public static string VerifyPublicId(string publicId!!) { - if (publicId == null) - { - throw new ArgumentNullException(nameof(publicId)); - } // returns the position of invalid character or -1 int pos = XmlCharType.IsPublicId(publicId); @@ -574,12 +540,8 @@ public static string VerifyPublicId(string publicId) // Verification method for XML whitespace characters as defined in XML spec production [3] S. // Throws XmlException if invalid character is found, otherwise returns the input string. - public static string VerifyWhitespace(string content) + public static string VerifyWhitespace(string content!!) { - if (content == null) - { - throw new ArgumentNullException(nameof(content)); - } // returns the position of invalid character or -1 int pos = XmlCharType.IsOnlyWhitespaceWithPos(content); @@ -829,13 +791,8 @@ public static bool ToBoolean(string s) return new FormatException(SR.Format(SR.XmlConvert_BadFormat, s, "Boolean")); } - public static char ToChar(string s) + public static char ToChar(string s!!) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } - if (s.Length != 1) { throw new FormatException(SR.XmlConvert_NotOneCharString); @@ -1288,32 +1245,20 @@ public static DateTime ToDateTime(string s, XmlDateTimeSerializationMode dateTim return dt; } - public static DateTimeOffset ToDateTimeOffset(string s) + public static DateTimeOffset ToDateTimeOffset(string s!!) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } XsdDateTime xsdDateTime = new XsdDateTime(s, XsdDateTimeFlags.AllXsd); DateTimeOffset dateTimeOffset = (DateTimeOffset)xsdDateTime; return dateTimeOffset; } - public static DateTimeOffset ToDateTimeOffset(string s, [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] string format) + public static DateTimeOffset ToDateTimeOffset(string s!!, [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] string format) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } return DateTimeOffset.ParseExact(s, format, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite); } - public static DateTimeOffset ToDateTimeOffset(string s, [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] string[] formats) + public static DateTimeOffset ToDateTimeOffset(string s!!, [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] string[] formats) { - if (s == null) - { - throw new ArgumentNullException(nameof(s)); - } return DateTimeOffset.ParseExact(s, formats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite); } @@ -1716,10 +1661,5 @@ internal static Exception CreateInvalidNameCharException(string name, int index, { return CreateException(index == 0 ? SR.Xml_BadStartNameChar : SR.Xml_BadNameChar, XmlException.BuildCharExceptionArgs(name, index), exceptionType, 0, index + 1); } - - internal static ArgumentException CreateInvalidNameArgumentException(string? name, string? argumentName) - { - return (name == null) ? new ArgumentNullException(argumentName) : new ArgumentException(SR.Xml_EmptyName, argumentName); - } } } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XmlNamespacemanager.cs b/src/libraries/System.Private.Xml/src/System/Xml/XmlNamespacemanager.cs index 9e209bd16b61a9..bc3ced1aa9fc19 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XmlNamespacemanager.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XmlNamespacemanager.cs @@ -118,14 +118,8 @@ public virtual bool PopScope() return true; } - public virtual void AddNamespace(string prefix, string uri) + public virtual void AddNamespace(string prefix!!, string uri!!) { - if (uri == null) - throw new ArgumentNullException(nameof(uri)); - - if (prefix == null) - throw new ArgumentNullException(nameof(prefix)); - Debug.Assert(_nameTable != null); Debug.Assert(_nsdecls != null); prefix = _nameTable.Add(prefix); @@ -188,17 +182,8 @@ public virtual void AddNamespace(string prefix, string uri) } } - public virtual void RemoveNamespace(string prefix, string uri) + public virtual void RemoveNamespace(string prefix!!, string uri!!) { - if (uri == null) - { - throw new ArgumentNullException(nameof(uri)); - } - if (prefix == null) - { - throw new ArgumentNullException(nameof(prefix)); - } - Debug.Assert(_nsdecls != null); int declIndex = LookupNamespaceDecl(prefix); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/XmlResolver.cs b/src/libraries/System.Private.Xml/src/System/Xml/XmlResolver.cs index 357cf3c69b162d..ef2873825a7c54 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/XmlResolver.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/XmlResolver.cs @@ -71,13 +71,8 @@ public virtual ICredentials Credentials set { } } - public virtual bool SupportsType(Uri absoluteUri, Type? type) + public virtual bool SupportsType(Uri absoluteUri!!, Type? type) { - if (absoluteUri == null) - { - throw new ArgumentNullException(nameof(absoluteUri)); - } - if (type == null || type == typeof(Stream)) { return true; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/Xslt/CompilerError.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/Xslt/CompilerError.cs index 1ae326c41bc12d..58eb5e550843b9 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/Xslt/CompilerError.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/Xslt/CompilerError.cs @@ -35,13 +35,8 @@ public CompilerErrorCollection() { } public int Add(CompilerError value) => List.Add(value); - public void AddRange(CompilerError[] value) + public void AddRange(CompilerError[] value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < value.Length; i++) { this.Add(value[i]); diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/NavigatorInput.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/NavigatorInput.cs index 8d1497f60aa46d..220693b894fc9b 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/NavigatorInput.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/NavigatorInput.cs @@ -204,16 +204,8 @@ internal bool MoveToNextNamespace() // // Constructor // - internal NavigatorInput(XPathNavigator navigator, string baseUri, InputScope? rootScope) + internal NavigatorInput(XPathNavigator navigator!!, string baseUri!!, InputScope? rootScope) { - if (navigator == null) - { - throw new ArgumentNullException(nameof(navigator)); - } - if (baseUri == null) - { - throw new ArgumentNullException(nameof(baseUri)); - } Debug.Assert(navigator.NameTable != null); _Next = null; _Href = baseUri; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOnlyOutput.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOnlyOutput.cs index da293c56478dec..559a2a169f8f8f 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOnlyOutput.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOnlyOutput.cs @@ -24,24 +24,14 @@ public TextWriter Writer // Constructor // - internal TextOnlyOutput(Processor processor, Stream stream) + internal TextOnlyOutput(Processor processor, Stream stream!!) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - _processor = processor; _writer = new StreamWriter(stream, Output.Encoding); } - internal TextOnlyOutput(Processor processor, TextWriter writer) + internal TextOnlyOutput(Processor processor, TextWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - _processor = processor; _writer = writer; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOutput.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOutput.cs index 15360671a3ac94..e32732fe30c8e5 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOutput.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/TextOutput.cs @@ -13,26 +13,16 @@ internal sealed class TextOutput : SequentialOutput { private TextWriter _writer; - internal TextOutput(Processor processor, Stream stream) + internal TextOutput(Processor processor, Stream stream!!) : base(processor) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - this.encoding = processor.Output.Encoding; _writer = new StreamWriter(stream, this.encoding); } - internal TextOutput(Processor processor, TextWriter writer) + internal TextOutput(Processor processor, TextWriter writer!!) : base(processor) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - this.encoding = writer.Encoding; _writer = writer; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/WriterOutput.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/WriterOutput.cs index 3e9d0054ec71dc..2db4ecb841b4bc 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/WriterOutput.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/WriterOutput.cs @@ -11,13 +11,8 @@ internal sealed class WriterOutput : IRecordOutput private XmlWriter _writer; private readonly Processor _processor; - internal WriterOutput(Processor processor, XmlWriter writer) + internal WriterOutput(Processor processor, XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - _writer = writer; _processor = processor; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslCompiledTransform.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslCompiledTransform.cs index 11ac3b1ce60501..1694851515ba8e 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslCompiledTransform.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslCompiledTransform.cs @@ -123,9 +123,8 @@ public void Load(string stylesheetUri, XsltSettings? settings, XmlResolver? styl LoadInternal(stylesheetUri, settings, stylesheetResolver); } - private void LoadInternal(object stylesheet, XsltSettings? settings, XmlResolver? stylesheetResolver) + private void LoadInternal(object stylesheet!!, XsltSettings? settings, XmlResolver? stylesheetResolver) { - ArgumentNullException.ThrowIfNull(stylesheet); settings ??= XsltSettings.Default; CompileXsltToQil(stylesheet, settings, stylesheetResolver); CompilerError? error = GetFirstError(); @@ -234,28 +233,24 @@ public void Load(MethodInfo executeMethod, byte[] queryData, Type[]? earlyBoundT // Transform methods which take an IXPathNavigable //------------------------------------------------ - public void Transform(IXPathNavigable input, XmlWriter results) + public void Transform(IXPathNavigable input!!, XmlWriter results!!) { - CheckArguments(input, results); Transform(input, null, results, CreateDefaultResolver()); } - public void Transform(IXPathNavigable input, XsltArgumentList? arguments, XmlWriter results) + public void Transform(IXPathNavigable input!!, XsltArgumentList? arguments, XmlWriter results!!) { - CheckArguments(input, results); Transform(input, arguments, results, CreateDefaultResolver()); } - public void Transform(IXPathNavigable input, XsltArgumentList? arguments, TextWriter results) + public void Transform(IXPathNavigable input!!, XsltArgumentList? arguments, TextWriter results!!) { - CheckArguments(input, results); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(input, arguments, writer, CreateDefaultResolver()); } - public void Transform(IXPathNavigable input, XsltArgumentList? arguments, Stream results) + public void Transform(IXPathNavigable input!!, XsltArgumentList? arguments, Stream results!!) { - CheckArguments(input, results); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(input, arguments, writer, CreateDefaultResolver()); } @@ -264,28 +259,24 @@ public void Transform(IXPathNavigable input, XsltArgumentList? arguments, Stream // Transform methods which take an XmlReader //------------------------------------------------ - public void Transform(XmlReader input, XmlWriter results) + public void Transform(XmlReader input!!, XmlWriter results!!) { - CheckArguments(input, results); Transform(input, null, results, CreateDefaultResolver()); } - public void Transform(XmlReader input, XsltArgumentList? arguments, XmlWriter results) + public void Transform(XmlReader input!!, XsltArgumentList? arguments, XmlWriter results!!) { - CheckArguments(input, results); Transform(input, arguments, results, CreateDefaultResolver()); } - public void Transform(XmlReader input, XsltArgumentList? arguments, TextWriter results) + public void Transform(XmlReader input!!, XsltArgumentList? arguments, TextWriter results!!) { - CheckArguments(input, results); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(input, arguments, writer, CreateDefaultResolver()); } - public void Transform(XmlReader input, XsltArgumentList? arguments, Stream results) + public void Transform(XmlReader input!!, XsltArgumentList? arguments, Stream results!!) { - CheckArguments(input, results); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(input, arguments, writer, CreateDefaultResolver()); } @@ -297,40 +288,34 @@ public void Transform(XmlReader input, XsltArgumentList? arguments, Stream resul // suppress the message. //------------------------------------------------ - public void Transform(string inputUri, XmlWriter results) + public void Transform(string inputUri!!, XmlWriter results!!) { - CheckArguments(inputUri, results); using XmlReader reader = XmlReader.Create(inputUri); Transform(reader, null, results, CreateDefaultResolver()); } - public void Transform(string inputUri, XsltArgumentList? arguments, XmlWriter results) + public void Transform(string inputUri!!, XsltArgumentList? arguments, XmlWriter results!!) { - CheckArguments(inputUri, results); using XmlReader reader = XmlReader.Create(inputUri); Transform(reader, arguments, results, CreateDefaultResolver()); } - public void Transform(string inputUri, XsltArgumentList? arguments, TextWriter results) + public void Transform(string inputUri!!, XsltArgumentList? arguments, TextWriter results!!) { - CheckArguments(inputUri, results); using XmlReader reader = XmlReader.Create(inputUri); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(reader, arguments, writer, CreateDefaultResolver()); } - public void Transform(string inputUri, XsltArgumentList? arguments, Stream results) + public void Transform(string inputUri!!, XsltArgumentList? arguments, Stream results!!) { - CheckArguments(inputUri, results); using XmlReader reader = XmlReader.Create(inputUri); using XmlWriter writer = XmlWriter.Create(results, OutputSettings); Transform(reader, arguments, writer, CreateDefaultResolver()); } - public void Transform(string inputUri, string resultsFile) + public void Transform(string inputUri!!, string resultsFile!!) { - ArgumentNullException.ThrowIfNull(inputUri); - ArgumentNullException.ThrowIfNull(resultsFile); // SQLBUDT 276415: Prevent wiping out the content of the input file if the output file is the same using XmlReader reader = XmlReader.Create(inputUri); using XmlWriter writer = XmlWriter.Create(resultsFile, OutputSettings); @@ -343,34 +328,20 @@ public void Transform(string inputUri, string resultsFile) // SxS: This method does not take any resource name and does not expose any resources to the caller. // It's OK to suppress the SxS warning. - public void Transform(XmlReader input, XsltArgumentList? arguments, XmlWriter results, XmlResolver? documentResolver) + public void Transform(XmlReader input!!, XsltArgumentList? arguments, XmlWriter results!!, XmlResolver? documentResolver) { - CheckArguments(input, results); CheckCommand(); _command.Execute(input, documentResolver, arguments, results); } // SxS: This method does not take any resource name and does not expose any resources to the caller. // It's OK to suppress the SxS warning. - public void Transform(IXPathNavigable input, XsltArgumentList? arguments, XmlWriter results, XmlResolver? documentResolver) + public void Transform(IXPathNavigable input!!, XsltArgumentList? arguments, XmlWriter results!!, XmlResolver? documentResolver) { - CheckArguments(input, results); CheckCommand(); _command.Execute(input.CreateNavigator()!, documentResolver, arguments, results); } - private static void CheckArguments(object input, object results) - { - ArgumentNullException.ThrowIfNull(input); - ArgumentNullException.ThrowIfNull(results); - } - - private static void CheckArguments(string inputUri, object results) - { - ArgumentNullException.ThrowIfNull(inputUri); - ArgumentNullException.ThrowIfNull(results); - } - [MemberNotNull(nameof(_command))] private void CheckCommand() { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslTransform.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslTransform.cs index 28cda9fa635654..3088eba590a365 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslTransform.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XslTransform.cs @@ -51,12 +51,8 @@ public void Load(XmlReader stylesheet) { Load(stylesheet, CreateDefaultResolver()); } - public void Load(XmlReader stylesheet, XmlResolver? resolver) + public void Load(XmlReader stylesheet!!, XmlResolver? resolver) { - if (stylesheet == null) - { - throw new ArgumentNullException(nameof(stylesheet)); - } Load(new XPathDocument(stylesheet, XmlSpace.Preserve), resolver); } @@ -64,30 +60,18 @@ public void Load(IXPathNavigable stylesheet) { Load(stylesheet, CreateDefaultResolver()); } - public void Load(IXPathNavigable stylesheet, XmlResolver? resolver) + public void Load(IXPathNavigable stylesheet!!, XmlResolver? resolver) { - if (stylesheet == null) - { - throw new ArgumentNullException(nameof(stylesheet)); - } Load(stylesheet.CreateNavigator()!, resolver); } - public void Load(XPathNavigator stylesheet) + public void Load(XPathNavigator stylesheet!!) { - if (stylesheet == null) - { - throw new ArgumentNullException(nameof(stylesheet)); - } Load(stylesheet, CreateDefaultResolver()); } - public void Load(XPathNavigator stylesheet, XmlResolver? resolver) + public void Load(XPathNavigator stylesheet!!, XmlResolver? resolver) { - if (stylesheet == null) - { - throw new ArgumentNullException(nameof(stylesheet)); - } Compile(stylesheet, resolver); } @@ -170,74 +154,42 @@ public void Transform(XPathNavigator input, XsltArgumentList? args, TextWriter o processor.Execute(output); } - public XmlReader Transform(IXPathNavigable input, XsltArgumentList? args, XmlResolver? resolver) + public XmlReader Transform(IXPathNavigable input!!, XsltArgumentList? args, XmlResolver? resolver) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } return Transform(input.CreateNavigator()!, args, resolver); } - public XmlReader Transform(IXPathNavigable input, XsltArgumentList? args) + public XmlReader Transform(IXPathNavigable input!!, XsltArgumentList? args) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } return Transform(input.CreateNavigator()!, args, _DocumentResolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, TextWriter output, XmlResolver? resolver) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, TextWriter output, XmlResolver? resolver) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, resolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, TextWriter output) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, TextWriter output) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, _DocumentResolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, Stream output, XmlResolver? resolver) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, Stream output, XmlResolver? resolver) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, resolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, Stream output) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, Stream output) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, _DocumentResolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, XmlWriter output, XmlResolver? resolver) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, XmlWriter output, XmlResolver? resolver) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, resolver); } - public void Transform(IXPathNavigable input, XsltArgumentList? args, XmlWriter output) + public void Transform(IXPathNavigable input!!, XsltArgumentList? args, XmlWriter output) { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } Transform(input.CreateNavigator()!, args, output, _DocumentResolver); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XsltArgumentList.cs b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XsltArgumentList.cs index 76045522c30887..d3b08c776ded0d 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XsltArgumentList.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Xslt/XsltArgumentList.cs @@ -38,22 +38,16 @@ public XsltArgumentList() { } return _extensions[namespaceUri]; } - public void AddParam(string name, string namespaceUri, object parameter) + public void AddParam(string name!!, string namespaceUri!!, object parameter!!) { - CheckArgumentNull(name, nameof(name)); - CheckArgumentNull(namespaceUri, nameof(namespaceUri)); - CheckArgumentNull(parameter, nameof(parameter)); - XmlQualifiedName qname = new XmlQualifiedName(name, namespaceUri); qname.Verify(); _parameters.Add(qname, parameter); } [RequiresUnreferencedCode(ExtensionObjectWarning)] - public void AddExtensionObject(string namespaceUri, object extension) + public void AddExtensionObject(string namespaceUri!!, object extension!!) { - CheckArgumentNull(namespaceUri, nameof(namespaceUri)); - CheckArgumentNull(extension, nameof(extension)); _extensions.Add(namespaceUri, extension); } @@ -90,13 +84,5 @@ public void Clear() _extensions.Clear(); xsltMessageEncountered = null; } - - private static void CheckArgumentNull(object param, string paramName) - { - if (param == null) - { - throw new ArgumentNullException(paramName); - } - } } } diff --git a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/CustomReflectionContext.cs b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/CustomReflectionContext.cs index e4ed81281a400d..8536e4beb1646e 100644 --- a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/CustomReflectionContext.cs +++ b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/CustomReflectionContext.cs @@ -20,29 +20,19 @@ public abstract partial class CustomReflectionContext : ReflectionContext protected CustomReflectionContext() : this(new IdentityReflectionContext()) { } - protected CustomReflectionContext(ReflectionContext source) + protected CustomReflectionContext(ReflectionContext source!!) { - SourceContext = source ?? throw new ArgumentNullException(nameof(source)); + SourceContext = source; _projector = new ReflectionContextProjector(this); } - public override Assembly MapAssembly(Assembly assembly) + public override Assembly MapAssembly(Assembly assembly!!) { - if (assembly == null) - { - throw new ArgumentNullException(nameof(assembly)); - } - return _projector.ProjectAssemblyIfNeeded(assembly); } - public override TypeInfo MapType(TypeInfo type) + public override TypeInfo MapType(TypeInfo type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - return _projector.ProjectTypeIfNeeded(type); } diff --git a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualParameter.cs b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualParameter.cs index aac19da96e36da..dd2b782ac4855d 100644 --- a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualParameter.cs +++ b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualParameter.cs @@ -8,12 +8,12 @@ namespace System.Reflection.Context.Virtual { internal class VirtualParameter : ParameterInfo { - public VirtualParameter(MemberInfo member, Type parameterType, string? name, int position) + public VirtualParameter(MemberInfo member!!, Type parameterType!!, string? name, int position) { Debug.Assert(position >= -1); - ClassImpl = parameterType ?? throw new ArgumentNullException(nameof(parameterType)); - MemberImpl = member ?? throw new ArgumentNullException(nameof(member)); + ClassImpl = parameterType; + MemberImpl = member; NameImpl = name; PositionImpl = position; } diff --git a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualPropertyBase.cs b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualPropertyBase.cs index 7f2526bbf20f7a..badbc3b6f045c1 100644 --- a/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualPropertyBase.cs +++ b/src/libraries/System.Reflection.Context/src/System/Reflection/Context/Virtual/VirtualPropertyBase.cs @@ -15,11 +15,8 @@ internal abstract partial class VirtualPropertyBase : PropertyInfo private Type? _declaringType; private ParameterInfo[]? _indexedParameters; - protected VirtualPropertyBase(Type propertyType, string name, CustomReflectionContext context) + protected VirtualPropertyBase(Type propertyType, string name!!, CustomReflectionContext context) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (name.Length == 0) throw new ArgumentException("", nameof(name)); diff --git a/src/libraries/System.Reflection.Extensions/tests/RuntimeReflectionExtensionTests.cs b/src/libraries/System.Reflection.Extensions/tests/RuntimeReflectionExtensionTests.cs index 6934766e36392e..0dd03017c9e4b3 100644 --- a/src/libraries/System.Reflection.Extensions/tests/RuntimeReflectionExtensionTests.cs +++ b/src/libraries/System.Reflection.Extensions/tests/RuntimeReflectionExtensionTests.cs @@ -249,7 +249,7 @@ public void GetRuntimeField() }); - AssertExtensions.Throws(null, () => + Assert.Throws(() => { typeof(RuntimeReflectionExtensionsTests).GetRuntimeField(null); }); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs index cd56fe02ca60f8..6a641f97092bd1 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs @@ -322,13 +322,8 @@ public ImmutableArray ToImmutableArray(int start, int byteCount) /// is null. /// Content is not available, the builder has been linked with another one. - public void WriteContentTo(Stream destination) + public void WriteContentTo(Stream destination!!) { - if (destination == null) - { - Throw.ArgumentNull(nameof(destination)); - } - foreach (var chunk in GetChunks()) { destination.Write(chunk._buffer, 0, chunk.Length); @@ -352,13 +347,8 @@ public void WriteContentTo(ref BlobWriter destination) /// is null. /// Content is not available, the builder has been linked with another one. - public void WriteContentTo(BlobBuilder destination) + public void WriteContentTo(BlobBuilder destination!!) { - if (destination == null) - { - Throw.ArgumentNull(nameof(destination)); - } - foreach (var chunk in GetChunks()) { destination.WriteBytes(chunk._buffer, 0, chunk.Length); @@ -367,13 +357,8 @@ public void WriteContentTo(BlobBuilder destination) /// is null. /// Builder is not writable, it has been linked with another one. - public void LinkPrefix(BlobBuilder prefix) + public void LinkPrefix(BlobBuilder prefix!!) { - if (prefix == null) - { - Throw.ArgumentNull(nameof(prefix)); - } - // TODO: consider copying data from right to left while there is space if (!prefix.IsHead || !IsHead) @@ -427,13 +412,8 @@ public void LinkPrefix(BlobBuilder prefix) /// is null. /// Builder is not writable, it has been linked with another one. - public void LinkSuffix(BlobBuilder suffix) + public void LinkSuffix(BlobBuilder suffix!!) { - if (suffix == null) - { - throw new ArgumentNullException(nameof(suffix)); - } - // TODO: consider copying data from right to left while there is space if (!IsHead || !suffix.IsHead) @@ -636,13 +616,8 @@ public void WriteBytes(byte value, int byteCount) /// is null. /// is negative. /// Builder is not writable, it has been linked with another one. - public unsafe void WriteBytes(byte* buffer, int byteCount) + public unsafe void WriteBytes(byte* buffer!!, int byteCount) { - if (buffer == null) - { - Throw.ArgumentNull(nameof(buffer)); - } - if (byteCount < 0) { Throw.ArgumentOutOfRange(nameof(byteCount)); @@ -678,13 +653,8 @@ private unsafe void WriteBytesUnchecked(byte* buffer, int byteCount) /// is negative. /// Builder is not writable, it has been linked with another one. /// Bytes successfully written from the . - public int TryWriteBytes(Stream source, int byteCount) + public int TryWriteBytes(Stream source!!, int byteCount) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (byteCount < 0) { throw new ArgumentOutOfRangeException(nameof(byteCount)); @@ -747,13 +717,8 @@ public void WriteBytes(byte[] buffer) /// is null. /// Range specified by and falls outside of the bounds of the . /// Builder is not writable, it has been linked with another one. - public unsafe void WriteBytes(byte[] buffer, int start, int byteCount) + public unsafe void WriteBytes(byte[] buffer!!, int start, int byteCount) { - if (buffer == null) - { - Throw.ArgumentNull(nameof(buffer)); - } - BlobUtilities.ValidateRange(buffer.Length, start, byteCount, nameof(byteCount)); if (!IsHead) @@ -930,13 +895,8 @@ public void WriteReference(int reference, bool isSmall) /// /// is null. /// Builder is not writable, it has been linked with another one. - public unsafe void WriteUTF16(char[] value) + public unsafe void WriteUTF16(char[] value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - if (!IsHead) { Throw.InvalidOperationBuilderAlreadyLinked(); @@ -968,13 +928,8 @@ public unsafe void WriteUTF16(char[] value) /// /// is null. /// Builder is not writable, it has been linked with another one. - public unsafe void WriteUTF16(string value) + public unsafe void WriteUTF16(string value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - if (!IsHead) { Throw.InvalidOperationBuilderAlreadyLinked(); @@ -1026,13 +981,8 @@ public void WriteSerializedString(string? value) /// The 1 signifies Unicode characters that require handling beyond that normally provided for 8-bit encoding sets. /// /// Builder is not writable, it has been linked with another one. - public void WriteUserString(string value) + public void WriteUserString(string value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - WriteCompressedInteger(BlobUtilities.GetUserStringByteLength(value.Length)); WriteUTF16(value); WriteByte(BlobUtilities.GetUserStringTrailingByte(value)); @@ -1047,13 +997,8 @@ public void WriteUserString(string value) /// /// is null. /// Builder is not writable, it has been linked with another one. - public void WriteUTF8(string value, bool allowUnpairedSurrogates = true) + public void WriteUTF8(string value!!, bool allowUnpairedSurrogates = true) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - WriteUTF8(value, 0, value.Length, allowUnpairedSurrogates, prependSize: false); } diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobContentId.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobContentId.cs index eb7ca38a6a7a18..ca4332bfd383a9 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobContentId.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobContentId.cs @@ -26,13 +26,8 @@ public BlobContentId(ImmutableArray id) { } - public unsafe BlobContentId(byte[] id) + public unsafe BlobContentId(byte[] id!!) { - if (id == null) - { - throw new ArgumentNullException(nameof(id)); - } - if (id.Length != Size) { throw new ArgumentException(SR.Format(SR.UnexpectedArrayLength, Size), nameof(id)); @@ -53,15 +48,10 @@ public static BlobContentId FromHash(ImmutableArray hashCode) return FromHash(ImmutableByteArrayInterop.DangerousGetUnderlyingArray(hashCode)!); } - public static BlobContentId FromHash(byte[] hashCode) + public static BlobContentId FromHash(byte[] hashCode!!) { const int minHashSize = 20; - if (hashCode == null) - { - throw new ArgumentNullException(nameof(hashCode)); - } - if (hashCode.Length < minHashSize) { throw new ArgumentException(SR.Format(SR.HashTooShort, minHashSize), nameof(hashCode)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobWriter.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobWriter.cs index 5ae45500de8846..0e088355e28958 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobWriter.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobWriter.cs @@ -140,13 +140,8 @@ public void WriteBytes(byte value, int byteCount) /// is null. /// is negative. - public unsafe void WriteBytes(byte* buffer, int byteCount) + public unsafe void WriteBytes(byte* buffer!!, int byteCount) { - if (buffer == null) - { - Throw.ArgumentNull(nameof(buffer)); - } - if (byteCount < 0) { Throw.ArgumentOutOfRange(nameof(byteCount)); @@ -162,25 +157,15 @@ private unsafe void WriteBytesUnchecked(byte* buffer, int byteCount) } /// is null. - public void WriteBytes(BlobBuilder source) + public void WriteBytes(BlobBuilder source!!) { - if (source == null) - { - Throw.ArgumentNull(nameof(source)); - } - source.WriteContentTo(ref this); } /// is null. /// is negative. - public int WriteBytes(Stream source, int byteCount) + public int WriteBytes(Stream source!!, int byteCount) { - if (source == null) - { - Throw.ArgumentNull(nameof(source)); - } - if (byteCount < 0) { Throw.ArgumentOutOfRange(nameof(byteCount)); @@ -213,13 +198,8 @@ public unsafe void WriteBytes(byte[] buffer) /// is null. /// Range specified by and falls outside of the bounds of the . - public unsafe void WriteBytes(byte[] buffer, int start, int byteCount) + public unsafe void WriteBytes(byte[] buffer!!, int start, int byteCount) { - if (buffer == null) - { - Throw.ArgumentNull(nameof(buffer)); - } - BlobUtilities.ValidateRange(buffer.Length, start, byteCount, nameof(byteCount)); // an empty array has no element pointer: @@ -369,13 +349,8 @@ public void WriteReference(int reference, bool isSmall) /// Writes UTF16 (little-endian) encoded string at the current position. /// /// is null. - public void WriteUTF16(char[] value) + public void WriteUTF16(char[] value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - if (value.Length == 0) { return; @@ -401,13 +376,8 @@ public void WriteUTF16(char[] value) /// Writes UTF16 (little-endian) encoded string at the current position. /// /// is null. - public void WriteUTF16(string value) + public void WriteUTF16(string value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - if (BitConverter.IsLittleEndian) { fixed (char* ptr = value) @@ -454,13 +424,8 @@ public void WriteSerializedString(string? str) /// The 1 signifies Unicode characters that require handling beyond that normally provided for 8-bit encoding sets. /// /// Builder is not writable, it has been linked with another one. - public void WriteUserString(string value) + public void WriteUserString(string value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - WriteCompressedInteger(BlobUtilities.GetUserStringByteLength(value.Length)); WriteUTF16(value); WriteByte(BlobUtilities.GetUserStringTrailingByte(value)); @@ -470,13 +435,8 @@ public void WriteUserString(string value) /// Writes UTF8 encoded string at the current position. /// /// is null. - public void WriteUTF8(string value, bool allowUnpairedSurrogates) + public void WriteUTF8(string value!!, bool allowUnpairedSurrogates) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - WriteUTF8(value, 0, value.Length, allowUnpairedSurrogates, prependSize: false); } diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/Encoding/BlobEncoders.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/Encoding/BlobEncoders.cs index 40efe2f0ecf69e..5e662461018652 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/Encoding/BlobEncoders.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/Encoding/BlobEncoders.cs @@ -12,13 +12,8 @@ public readonly struct BlobEncoder { public BlobBuilder Builder { get; } - public BlobEncoder(BlobBuilder builder) + public BlobEncoder(BlobBuilder builder!!) { - if (builder == null) - { - Throw.BuilderArgumentNull(); - } - Builder = builder; } @@ -114,11 +109,8 @@ public void CustomAttributeSignature(out FixedArgumentsEncoder fixedArguments, o /// Called first, to encode fixed arguments. /// Called second, to encode named arguments. /// or is null. - public void CustomAttributeSignature(Action fixedArguments, Action namedArguments) + public void CustomAttributeSignature(Action fixedArguments!!, Action namedArguments!!) { - if (fixedArguments == null) Throw.ArgumentNull(nameof(fixedArguments)); - if (namedArguments == null) Throw.ArgumentNull(nameof(namedArguments)); - FixedArgumentsEncoder fixedArgumentsEncoder; CustomAttributeNamedArgumentsEncoder namedArgumentsEncoder; CustomAttributeSignature(out fixedArgumentsEncoder, out namedArgumentsEncoder); @@ -228,11 +220,8 @@ public void Parameters(int parameterCount, out ReturnTypeEncoder returnType, out /// Called first, to encode the return type. /// Called second, to encode the actual parameters. /// or is null. - public void Parameters(int parameterCount, Action returnType, Action parameters) + public void Parameters(int parameterCount, Action returnType!!, Action parameters!!) { - if (returnType == null) Throw.ArgumentNull(nameof(returnType)); - if (parameters == null) Throw.ArgumentNull(nameof(parameters)); - ReturnTypeEncoder returnTypeEncoder; ParametersEncoder parametersEncoder; Parameters(parameterCount, out returnTypeEncoder, out parametersEncoder); @@ -330,13 +319,8 @@ public PermissionSetEncoder(BlobBuilder builder) Builder = builder; } - public PermissionSetEncoder AddPermission(string typeName, ImmutableArray encodedArguments) + public PermissionSetEncoder AddPermission(string typeName!!, ImmutableArray encodedArguments) { - if (typeName == null) - { - Throw.ArgumentNull(nameof(typeName)); - } - if (encodedArguments.IsDefault) { Throw.ArgumentNull(nameof(encodedArguments)); @@ -353,18 +337,8 @@ public PermissionSetEncoder AddPermission(string typeName, ImmutableArray return this; } - public PermissionSetEncoder AddPermission(string typeName, BlobBuilder encodedArguments) + public PermissionSetEncoder AddPermission(string typeName!!, BlobBuilder encodedArguments!!) { - if (typeName == null) - { - Throw.ArgumentNull(nameof(typeName)); - } - - if (encodedArguments == null) - { - Throw.ArgumentNull(nameof(encodedArguments)); - } - if (encodedArguments.Count > BlobWriterImpl.MaxCompressedIntegerValue) { Throw.BlobTooLarge(nameof(encodedArguments)); @@ -439,11 +413,8 @@ public void TaggedVector(out CustomAttributeArrayTypeEncoder arrayType, out Vect /// Called first, to encode the type of the vector. /// Called second, to encode the items of the vector. /// or is null. - public void TaggedVector(Action arrayType, Action vector) + public void TaggedVector(Action arrayType!!, Action vector!!) { - if (arrayType == null) Throw.ArgumentNull(nameof(arrayType)); - if (vector == null) Throw.ArgumentNull(nameof(vector)); - CustomAttributeArrayTypeEncoder arrayTypeEncoder; VectorEncoder vectorEncoder; TaggedVector(out arrayTypeEncoder, out vectorEncoder); @@ -478,11 +449,8 @@ public void TaggedScalar(out CustomAttributeElementTypeEncoder type, out ScalarE /// Called first, to encode the type of the literal. /// Called second, to encode the value of the literal. /// or is null. - public void TaggedScalar(Action type, Action scalar) + public void TaggedScalar(Action type!!, Action scalar!!) { - if (type == null) Throw.ArgumentNull(nameof(type)); - if (scalar == null) Throw.ArgumentNull(nameof(scalar)); - CustomAttributeElementTypeEncoder typeEncoder; ScalarEncoder scalarEncoder; TaggedScalar(out typeEncoder, out scalarEncoder); @@ -608,9 +576,8 @@ public NameEncoder(BlobBuilder builder) Builder = builder; } - public void Name(string name) + public void Name(string name!!) { - if (name == null) Throw.ArgumentNull(nameof(name)); if (name.Length == 0) Throw.ArgumentEmptyString(nameof(name)); Builder.WriteSerializedString(name); @@ -671,12 +638,8 @@ public void AddArgument(bool isField, out NamedArgumentTypeEncoder type, out Nam /// Called second, to encode the name of the field or property. /// Called third, to encode the literal value of the argument. /// , or is null. - public void AddArgument(bool isField, Action type, Action name, Action literal) + public void AddArgument(bool isField, Action type!!, Action name!!, Action literal!!) { - if (type == null) Throw.ArgumentNull(nameof(type)); - if (name == null) Throw.ArgumentNull(nameof(name)); - if (literal == null) Throw.ArgumentNull(nameof(literal)); - NamedArgumentTypeEncoder typeEncoder; NameEncoder nameEncoder; LiteralEncoder literalEncoder; @@ -793,9 +756,8 @@ public void SystemType() WriteTypeCode(SerializationTypeCode.Type); } - public void Enum(string enumTypeName) + public void Enum(string enumTypeName!!) { - if (enumTypeName == null) Throw.ArgumentNull(nameof(enumTypeName)); if (enumTypeName.Length == 0) Throw.ArgumentEmptyString(nameof(enumTypeName)); WriteTypeCode(SerializationTypeCode.Enum); @@ -894,11 +856,8 @@ public void Array(out SignatureTypeEncoder elementType, out ArrayShapeEncoder ar /// Called first, to encode the type of the element. /// Called second, to encode the shape of the array. /// or is null. - public void Array(Action elementType, Action arrayShape) + public void Array(Action elementType!!, Action arrayShape!!) { - if (elementType == null) Throw.ArgumentNull(nameof(elementType)); - if (arrayShape == null) Throw.ArgumentNull(nameof(arrayShape)); - SignatureTypeEncoder elementTypeEncoder; ArrayShapeEncoder arrayShapeEncoder; Array(out elementTypeEncoder, out arrayShapeEncoder); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Heaps.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Heaps.cs index 3277792f61cb4f..a77cffc3ae9a13 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Heaps.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Heaps.cs @@ -186,13 +186,8 @@ public void SetCapacity(HeapIndex heap, int byteCount) /// containing the blob. /// Handle to the added or existing blob. /// is null. - public BlobHandle GetOrAddBlob(BlobBuilder value) + public BlobHandle GetOrAddBlob(BlobBuilder value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - // TODO: avoid making a copy if the blob exists in the index return GetOrAddBlob(value.ToImmutableArray()); } @@ -203,13 +198,8 @@ public BlobHandle GetOrAddBlob(BlobBuilder value) /// Array containing the blob. /// Handle to the added or existing blob. /// is null. - public BlobHandle GetOrAddBlob(byte[] value) + public BlobHandle GetOrAddBlob(byte[] value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - // TODO: avoid making a copy if the blob exists in the index return GetOrAddBlob(ImmutableArray.Create(value)); } @@ -301,13 +291,8 @@ public BlobHandle GetOrAddBlobUTF8(string value, bool allowUnpairedSurrogates = /// (see https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md#DocumentNameBlob). /// /// is null. - public BlobHandle GetOrAddDocumentName(string value) + public BlobHandle GetOrAddDocumentName(string value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - char separator = ChooseSeparator(value); var resultBuilder = PooledBlobBuilder.GetInstance(); @@ -424,13 +409,8 @@ private GuidHandle GetNewGuidHandle() /// Array containing the blob. /// Handle to the added or existing blob. /// is null. - public StringHandle GetOrAddString(string value) + public StringHandle GetOrAddString(string value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - StringHandle handle; if (value.Length == 0) { @@ -480,13 +460,8 @@ public ReservedBlob ReserveUserString(int length) /// /// The remaining space on the heap is too small to fit the string. /// is null. - public UserStringHandle GetOrAddUserString(string value) + public UserStringHandle GetOrAddUserString(string value!!) { - if (value == null) - { - Throw.ArgumentNull(nameof(value)); - } - UserStringHandle handle; if (!_userStrings.TryGetValue(value, out handle)) { diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Tables.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Tables.cs index 98e1ba533303e1..9339113b87a197 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Tables.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Tables.cs @@ -386,17 +386,12 @@ public ModuleDefinitionHandle AddModule( public AssemblyDefinitionHandle AddAssembly( StringHandle name, - Version version, + Version version!!, StringHandle culture, BlobHandle publicKey, AssemblyFlags flags, AssemblyHashAlgorithm hashAlgorithm) { - if (version == null) - { - Throw.ArgumentNull(nameof(version)); - } - if (_assemblyRow.HasValue) { Throw.InvalidOperation(SR.AssemblyAlreadyAdded); @@ -417,17 +412,12 @@ public AssemblyDefinitionHandle AddAssembly( public AssemblyReferenceHandle AddAssemblyReference( StringHandle name, - Version version, + Version version!!, StringHandle culture, BlobHandle publicKeyOrToken, AssemblyFlags flags, BlobHandle hashValue) { - if (version == null) - { - Throw.ArgumentNull(nameof(version)); - } - _assemblyRefTable.Add(new AssemblyRefTableRow { Name = name, diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataReaderExtensions.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataReaderExtensions.cs index f675d4361dd5ef..031524a9cd4e7b 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataReaderExtensions.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataReaderExtensions.cs @@ -17,13 +17,8 @@ public static class MetadataReaderExtensions /// /// is null. /// is not a valid table index. - public static int GetTableRowCount(this MetadataReader reader, TableIndex tableIndex) + public static int GetTableRowCount(this MetadataReader reader!!, TableIndex tableIndex) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - if ((int)tableIndex >= MetadataTokens.TableCount) { Throw.TableIndexOutOfRange(); @@ -37,13 +32,8 @@ public static int GetTableRowCount(this MetadataReader reader, TableIndex tableI /// /// is null. /// is not a valid table index. - public static int GetTableRowSize(this MetadataReader reader, TableIndex tableIndex) + public static int GetTableRowSize(this MetadataReader reader!!, TableIndex tableIndex) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return tableIndex switch { TableIndex.Module => reader.ModuleTable.RowSize, @@ -111,13 +101,8 @@ public static int GetTableRowSize(this MetadataReader reader, TableIndex tableIn /// /// is null. /// is not a valid table index. - public static unsafe int GetTableMetadataOffset(this MetadataReader reader, TableIndex tableIndex) + public static unsafe int GetTableMetadataOffset(this MetadataReader reader!!, TableIndex tableIndex) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return (int)(reader.GetTableMetadataBlock(tableIndex).Pointer - reader.Block.Pointer); } @@ -192,13 +177,8 @@ private static MemoryBlock GetTableMetadataBlock(this MetadataReader reader, Tab /// /// is null. /// is not a valid heap index. - public static int GetHeapSize(this MetadataReader reader, HeapIndex heapIndex) + public static int GetHeapSize(this MetadataReader reader!!, HeapIndex heapIndex) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return reader.GetMetadataBlock(heapIndex).Length; } @@ -207,13 +187,8 @@ public static int GetHeapSize(this MetadataReader reader, HeapIndex heapIndex) /// /// is null. /// is not a valid heap index. - public static unsafe int GetHeapMetadataOffset(this MetadataReader reader, HeapIndex heapIndex) + public static unsafe int GetHeapMetadataOffset(this MetadataReader reader!!, HeapIndex heapIndex) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return (int)(reader.GetMetadataBlock(heapIndex).Pointer - reader.Block.Pointer); } @@ -240,13 +215,8 @@ private static MemoryBlock GetMetadataBlock(this MetadataReader reader, HeapInde /// Returns the a handle to the UserString that follows the given one in the UserString heap or a nil handle if it is the last one. /// /// is null. - public static UserStringHandle GetNextHandle(this MetadataReader reader, UserStringHandle handle) + public static UserStringHandle GetNextHandle(this MetadataReader reader!!, UserStringHandle handle) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return reader.UserStringHeap.GetNextHandle(handle); } @@ -254,13 +224,8 @@ public static UserStringHandle GetNextHandle(this MetadataReader reader, UserStr /// Returns the a handle to the Blob that follows the given one in the Blob heap or a nil handle if it is the last one. /// /// is null. - public static BlobHandle GetNextHandle(this MetadataReader reader, BlobHandle handle) + public static BlobHandle GetNextHandle(this MetadataReader reader!!, BlobHandle handle) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return reader.BlobHeap.GetNextHandle(handle); } @@ -268,13 +233,8 @@ public static BlobHandle GetNextHandle(this MetadataReader reader, BlobHandle ha /// Returns the a handle to the String that follows the given one in the String heap or a nil handle if it is the last one. /// /// is null. - public static StringHandle GetNextHandle(this MetadataReader reader, StringHandle handle) + public static StringHandle GetNextHandle(this MetadataReader reader!!, StringHandle handle) { - if (reader == null) - { - Throw.ArgumentNull(nameof(reader)); - } - return reader.StringHeap.GetNextHandle(handle); } @@ -282,13 +242,8 @@ public static StringHandle GetNextHandle(this MetadataReader reader, StringHandl /// Enumerates entries of EnC log. /// /// is null. - public static IEnumerable GetEditAndContinueLogEntries(this MetadataReader reader) + public static IEnumerable GetEditAndContinueLogEntries(this MetadataReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - for (int rid = 1; rid <= reader.EncLogTable.NumberOfRows; rid++) { yield return new EditAndContinueLogEntry( @@ -301,13 +256,8 @@ public static IEnumerable GetEditAndContinueLogEntries( /// Enumerates entries of EnC map. /// /// is null. - public static IEnumerable GetEditAndContinueMapEntries(this MetadataReader reader) + public static IEnumerable GetEditAndContinueMapEntries(this MetadataReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - for (int rid = 1; rid <= reader.EncMapTable.NumberOfRows; rid++) { yield return new EntityHandle(reader.EncMapTable.GetToken(rid)); @@ -321,13 +271,8 @@ public static IEnumerable GetEditAndContinueMapEntries(this Metada /// The resulting sequence corresponds exactly to entries in PropertyMap table, /// i.e. n-th returned is stored in n-th row of PropertyMap. /// - public static IEnumerable GetTypesWithProperties(this MetadataReader reader) + public static IEnumerable GetTypesWithProperties(this MetadataReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - for (int rid = 1; rid <= reader.PropertyMapTable.NumberOfRows; rid++) { yield return reader.PropertyMapTable.GetParentType(rid); @@ -341,13 +286,8 @@ public static IEnumerable GetTypesWithProperties(this Meta /// The resulting sequence corresponds exactly to entries in EventMap table, /// i.e. n-th returned is stored in n-th row of EventMap. /// - public static IEnumerable GetTypesWithEvents(this MetadataReader reader) + public static IEnumerable GetTypesWithEvents(this MetadataReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - for (int rid = 1; rid <= reader.EventMapTable.NumberOfRows; rid++) { yield return reader.EventMapTable.GetParentType(rid); @@ -357,13 +297,8 @@ public static IEnumerable GetTypesWithEvents(this Metadata /// /// Given a type handle and a raw type kind found in a signature blob determines whether the target type is a value type or a reference type. /// - public static SignatureTypeKind ResolveSignatureTypeKind(this MetadataReader reader, EntityHandle typeHandle, byte rawTypeKind) + public static SignatureTypeKind ResolveSignatureTypeKind(this MetadataReader reader!!, EntityHandle typeHandle, byte rawTypeKind) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - var typeKind = (SignatureTypeKind)rawTypeKind; switch (typeKind) diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataRootBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataRootBuilder.cs index 46e142638c13e1..5a7b947159fcc9 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataRootBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataRootBuilder.cs @@ -51,13 +51,8 @@ public sealed class MetadataRootBuilder /// /// is null. /// is too long (the number of bytes when UTF8-encoded must be less than 255). - public MetadataRootBuilder(MetadataBuilder tablesAndHeaps, string? metadataVersion = null, bool suppressValidation = false) + public MetadataRootBuilder(MetadataBuilder tablesAndHeaps!!, string? metadataVersion = null, bool suppressValidation = false) { - if (tablesAndHeaps == null) - { - Throw.ArgumentNull(nameof(tablesAndHeaps)); - } - Debug.Assert(BlobUtilities.GetUTF8ByteCount(DefaultMetadataVersionString) == DefaultMetadataVersionString.Length); int metadataVersionByteCount = metadataVersion != null ? BlobUtilities.GetUTF8ByteCount(metadataVersion) : DefaultMetadataVersionString.Length; @@ -94,13 +89,8 @@ public MetadataRootBuilder(MetadataBuilder tablesAndHeaps, string? metadataVersi /// /// A metadata table is not ordered as required by the specification and is false. /// - public void Serialize(BlobBuilder builder, int methodBodyStreamRva, int mappedFieldDataStreamRva) + public void Serialize(BlobBuilder builder!!, int methodBodyStreamRva, int mappedFieldDataStreamRva) { - if (builder == null) - { - Throw.ArgumentNull(nameof(builder)); - } - if (methodBodyStreamRva < 0) { Throw.ArgumentOutOfRange(nameof(methodBodyStreamRva)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/PortablePdbBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/PortablePdbBuilder.cs index de27b363b7ab83..0fb6349de43df0 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/PortablePdbBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/PortablePdbBuilder.cs @@ -45,16 +45,11 @@ public sealed class PortablePdbBuilder /// /// or is null. public PortablePdbBuilder( - MetadataBuilder tablesAndHeaps, + MetadataBuilder tablesAndHeaps!!, ImmutableArray typeSystemRowCounts, MethodDefinitionHandle entryPoint, Func, BlobContentId>? idProvider = null) { - if (tablesAndHeaps == null) - { - Throw.ArgumentNull(nameof(tablesAndHeaps)); - } - ValidateTypeSystemRowCounts(typeSystemRowCounts); _builder = tablesAndHeaps; @@ -122,13 +117,8 @@ private void SerializeStandalonePdbStream(BlobBuilder builder) /// Builder to write to. /// The id of the serialized content. /// is null. - public BlobContentId Serialize(BlobBuilder builder) + public BlobContentId Serialize(BlobBuilder builder!!) { - if (builder == null) - { - Throw.ArgumentNull(nameof(builder)); - } - // header: MetadataBuilder.SerializeMetadataHeader(builder, MetadataVersion, _serializedMetadata.Sizes); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/SignatureDecoder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/SignatureDecoder.cs index c7697e5dde2b8b..ca5b24d6e91875 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/SignatureDecoder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/SignatureDecoder.cs @@ -27,15 +27,10 @@ public readonly struct SignatureDecoder /// Additional context needed to resolve generic parameters. /// public SignatureDecoder( - ISignatureTypeProvider provider, + ISignatureTypeProvider provider!!, MetadataReader metadataReader, TGenericContext genericContext) { - if (provider == null) - { - Throw.ArgumentNull(nameof(provider)); - } - _metadataReaderOpt = metadataReader; _provider = provider; _genericContext = genericContext; diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.netstandard.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.netstandard.cs index 6cdac1a324b58f..0679b389d61afa 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.netstandard.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.netstandard.cs @@ -42,11 +42,8 @@ internal AssemblyName GetAssemblyName(StringHandle nameHandle, Version version, return assemblyName; } - internal static unsafe AssemblyName GetAssemblyName(string assemblyFile) + internal static unsafe AssemblyName GetAssemblyName(string assemblyFile!!) { - if (assemblyFile == null) - throw new ArgumentNullException(nameof(assemblyFile)); - FileStream? fileStream = null; MemoryMappedFile? mappedFile = null; MemoryMappedViewAccessor? accessor = null; diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReaderProvider.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReaderProvider.cs index b5dc81c048d9bc..eb2e32d07cffe5 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReaderProvider.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReaderProvider.cs @@ -68,13 +68,8 @@ private MetadataReaderProvider(MemoryBlockProvider blockProvider) /// The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . /// The content of the blob is not read during the construction of the /// - public static unsafe MetadataReaderProvider FromMetadataImage(byte* start, int size) + public static unsafe MetadataReaderProvider FromMetadataImage(byte* start!!, int size) { - if (start == null) - { - throw new ArgumentNullException(nameof(start)); - } - if (size < 0) { throw new ArgumentOutOfRangeException(nameof(size)); @@ -160,13 +155,8 @@ public static MetadataReaderProvider FromMetadataImage(ImmutableArray imag /// doesn't support read and seek operations. /// Size is negative or extends past the end of the stream. /// Error reading from the stream (only when is specified). - public static MetadataReaderProvider FromMetadataStream(Stream stream, MetadataStreamOptions options = MetadataStreamOptions.Default, int size = 0) + public static MetadataReaderProvider FromMetadataStream(Stream stream!!, MetadataStreamOptions options = MetadataStreamOptions.Default, int size = 0) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - if (!stream.CanRead || !stream.CanSeek) { throw new ArgumentException(SR.StreamMustSupportReadAndSeek, nameof(stream)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataStringDecoder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataStringDecoder.cs index 3d97f85c9662f6..d5e3f7a6acb7d6 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataStringDecoder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataStringDecoder.cs @@ -41,13 +41,8 @@ public class MetadataStringDecoder /// /// To cache and reuse existing strings. Create a derived class and override /// - public MetadataStringDecoder(Encoding encoding) + public MetadataStringDecoder(Encoding encoding!!) { - if (encoding == null) - { - throw new ArgumentNullException(nameof(encoding)); - } - // Non-enforcement of (encoding is UTF8Encoding) here is by design. // // This type is not itself aware of any particular encoding. However, the constructor argument that accepts a diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/PEReaderExtensions.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/PEReaderExtensions.cs index 8f769a21319a15..7f924ed70363c9 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/PEReaderExtensions.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/PEReaderExtensions.cs @@ -21,13 +21,8 @@ public static class PEReaderExtensions /// The body is not found in the metadata or is invalid. /// Section where the method is stored is not available. /// IO error while reading from the underlying stream. - public static MethodBodyBlock GetMethodBody(this PEReader peReader, int relativeVirtualAddress) + public static MethodBodyBlock GetMethodBody(this PEReader peReader!!, int relativeVirtualAddress) { - if (peReader == null) - { - throw new ArgumentNullException(nameof(peReader)); - } - var block = peReader.GetSectionData(relativeVirtualAddress); if (block.Length == 0) { @@ -76,13 +71,8 @@ public static MetadataReader GetMetadataReader(this PEReader peReader, MetadataR /// The encoding of is not . /// The current platform is big-endian. /// IO error while reading from the underlying stream. - public static unsafe MetadataReader GetMetadataReader(this PEReader peReader, MetadataReaderOptions options, MetadataStringDecoder? utf8Decoder) + public static unsafe MetadataReader GetMetadataReader(this PEReader peReader!!, MetadataReaderOptions options, MetadataStringDecoder? utf8Decoder) { - if (peReader == null) - { - throw new ArgumentNullException(nameof(peReader)); - } - var metadata = peReader.GetMetadata(); return new MetadataReader(metadata.Pointer, metadata.Length, options, utf8Decoder, memoryOwner: peReader); } diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.EmbeddedPortablePdb.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.EmbeddedPortablePdb.cs index d05b5a6c922e58..7ba3ba937aecde 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.EmbeddedPortablePdb.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.EmbeddedPortablePdb.cs @@ -18,13 +18,8 @@ public sealed partial class DebugDirectoryBuilder /// Version of Portable PDB format (e.g. 0x0100 for 1.0). /// is null. /// is smaller than 0x0100. - public void AddEmbeddedPortablePdbEntry(BlobBuilder debugMetadata, ushort portablePdbVersion) + public void AddEmbeddedPortablePdbEntry(BlobBuilder debugMetadata!!, ushort portablePdbVersion) { - if (debugMetadata == null) - { - Throw.ArgumentNull(nameof(debugMetadata)); - } - if (portablePdbVersion < PortablePdbVersions.MinFormatVersion) { Throw.ArgumentOutOfRange(nameof(portablePdbVersion)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.cs index c7596088cc5c19..77b5826d30964b 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/DebugDirectory/DebugDirectoryBuilder.cs @@ -55,13 +55,8 @@ public void AddEntry(DebugDirectoryEntryType type, uint version, uint stamp) /// Entry stamp. /// Data passed to . /// Serializes data to a . - public void AddEntry(DebugDirectoryEntryType type, uint version, uint stamp, TData data, Action dataSerializer) + public void AddEntry(DebugDirectoryEntryType type, uint version, uint stamp, TData data, Action dataSerializer!!) { - if (dataSerializer == null) - { - Throw.ArgumentNull(nameof(dataSerializer)); - } - int start = _dataBuilder.Count; dataSerializer(_dataBuilder, data); int dataSize = _dataBuilder.Count - start; @@ -98,16 +93,11 @@ public void AddCodeViewEntry( /// is less than 1. /// is smaller than 0x0100. public void AddCodeViewEntry( - string pdbPath, + string pdbPath!!, BlobContentId pdbContentId, ushort portablePdbVersion, int age) { - if (pdbPath == null) - { - Throw.ArgumentNull(nameof(pdbPath)); - } - if (age < 1) { Throw.ArgumentOutOfRange(nameof(age)); @@ -168,13 +158,8 @@ private static int WriteCodeViewData(BlobBuilder builder, string pdbPath, Guid p /// Checksum. /// or is null. /// or is empty. - public void AddPdbChecksumEntry(string algorithmName, ImmutableArray checksum) + public void AddPdbChecksumEntry(string algorithmName!!, ImmutableArray checksum) { - if (algorithmName == null) - { - Throw.ArgumentNull(nameof(algorithmName)); - } - if (algorithmName.Length == 0) { Throw.ArgumentEmptyString(nameof(algorithmName)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/ManagedPEBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/ManagedPEBuilder.cs index b83a3555d13fb3..ecb424666a4d0e 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/ManagedPEBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/ManagedPEBuilder.cs @@ -35,9 +35,9 @@ public class ManagedPEBuilder : PEBuilder private Blob _lazyStrongNameSignature; public ManagedPEBuilder( - PEHeaderBuilder header, - MetadataRootBuilder metadataRootBuilder, - BlobBuilder ilStream, + PEHeaderBuilder header!!, + MetadataRootBuilder metadataRootBuilder!!, + BlobBuilder ilStream!!, BlobBuilder? mappedFieldData = null, BlobBuilder? managedResources = null, ResourceSectionBuilder? nativeResources = null, @@ -48,21 +48,6 @@ public ManagedPEBuilder( Func, BlobContentId>? deterministicIdProvider = null) : base(header, deterministicIdProvider) { - if (header == null) - { - Throw.ArgumentNull(nameof(header)); - } - - if (metadataRootBuilder == null) - { - Throw.ArgumentNull(nameof(metadataRootBuilder)); - } - - if (ilStream == null) - { - Throw.ArgumentNull(nameof(ilStream)); - } - if (strongNameSignatureSize < 0) { Throw.ArgumentOutOfRange(nameof(strongNameSignatureSize)); @@ -227,18 +212,8 @@ protected internal override PEDirectoriesBuilder GetDirectories() return _peDirectoriesBuilder; } - public void Sign(BlobBuilder peImage, Func, byte[]> signatureProvider) + public void Sign(BlobBuilder peImage!!, Func, byte[]> signatureProvider!!) { - if (peImage == null) - { - Throw.ArgumentNull(nameof(peImage)); - } - - if (signatureProvider == null) - { - Throw.ArgumentNull(nameof(signatureProvider)); - } - Sign(peImage!, _lazyStrongNameSignature, signatureProvider!); } } diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs index a2de3a185fad0f..12741bba3ed2a7 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEBuilder.cs @@ -23,13 +23,8 @@ protected readonly struct Section public readonly string Name; public readonly SectionCharacteristics Characteristics; - public Section(string name, SectionCharacteristics characteristics) + public Section(string name!!, SectionCharacteristics characteristics) { - if (name == null) - { - Throw.ArgumentNull(nameof(name)); - } - Name = name; Characteristics = characteristics; } @@ -58,13 +53,8 @@ public SerializedSection(BlobBuilder builder, string name, SectionCharacteristic public int VirtualSize => Builder.Count; } - protected PEBuilder(PEHeaderBuilder header, Func, BlobContentId>? deterministicIdProvider) + protected PEBuilder(PEHeaderBuilder header!!, Func, BlobContentId>? deterministicIdProvider) { - if (header == null) - { - Throw.ArgumentNull(nameof(header)); - } - IdProvider = deterministicIdProvider ?? BlobContentId.GetTimeBasedProvider(); IsDeterministic = deterministicIdProvider != null; Header = header; diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEHeaders.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEHeaders.cs index af4e9eb4dc7a31..b84652be123928 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEHeaders.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEHeaders.cs @@ -70,13 +70,8 @@ public PEHeaders(Stream peStream, int size) /// The stream doesn't support seek operations. /// is null. /// Size is negative or extends past the end of the stream. - public PEHeaders(Stream peStream, int size, bool isLoadedImage) + public PEHeaders(Stream peStream!!, int size, bool isLoadedImage) { - if (peStream == null) - { - throw new ArgumentNullException(nameof(peStream)); - } - if (!peStream.CanRead || !peStream.CanSeek) { throw new ArgumentException(SR.StreamMustSupportReadAndSeek, nameof(peStream)); diff --git a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEReader.cs b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEReader.cs index 0cee4c215cef15..24cc3cf5ccb97b 100644 --- a/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEReader.cs +++ b/src/libraries/System.Reflection.Metadata/src/System/Reflection/PortableExecutable/PEReader.cs @@ -69,13 +69,8 @@ public unsafe PEReader(byte* peImage, int size) /// The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . /// The content of the image is not read during the construction of the /// - public unsafe PEReader(byte* peImage, int size, bool isLoadedImage) + public unsafe PEReader(byte* peImage!!, int size, bool isLoadedImage) { - if (peImage == null) - { - throw new ArgumentNullException(nameof(peImage)); - } - if (size < 0) { throw new ArgumentOutOfRangeException(nameof(size)); @@ -150,13 +145,8 @@ public PEReader(Stream peStream, PEStreamOptions options) /// Size is negative or extends past the end of the stream. /// Error reading from the stream (only when prefetching data). /// is specified and the PE headers of the image are invalid. - public unsafe PEReader(Stream peStream, PEStreamOptions options, int size) + public unsafe PEReader(Stream peStream!!, PEStreamOptions options, int size) { - if (peStream == null) - { - throw new ArgumentNullException(nameof(peStream)); - } - if (!peStream.CanRead || !peStream.CanSeek) { throw new ArgumentException(SR.StreamMustSupportReadAndSeek, nameof(peStream)); @@ -500,13 +490,8 @@ public PEMemoryBlock GetSectionData(int relativeVirtualAddress) /// /// is null. /// PE image not available. - public PEMemoryBlock GetSectionData(string sectionName) + public PEMemoryBlock GetSectionData(string sectionName!!) { - if (sectionName == null) - { - Throw.ArgumentNull(nameof(sectionName)); - } - int sectionIndex = PEHeaders.IndexOfSection(sectionName); if (sectionIndex < 0) { @@ -697,18 +682,8 @@ internal static PdbChecksumDebugDirectoryData DecodePdbChecksumDebugDirectoryDat /// The stream returned from doesn't support read and seek operations. /// No matching PDB file is found due to an error: The PE image or the PDB is invalid. /// No matching PDB file is found due to an error: An IO error occurred while reading the PE image or the PDB. - public bool TryOpenAssociatedPortablePdb(string peImagePath, Func pdbFileStreamProvider, out MetadataReaderProvider? pdbReaderProvider, out string? pdbPath) + public bool TryOpenAssociatedPortablePdb(string peImagePath!!, Func pdbFileStreamProvider!!, out MetadataReaderProvider? pdbReaderProvider, out string? pdbPath) { - if (peImagePath == null) - { - Throw.ArgumentNull(nameof(peImagePath)); - } - - if (pdbFileStreamProvider == null) - { - Throw.ArgumentNull(nameof(pdbFileStreamProvider)); - } - pdbReaderProvider = null; pdbPath = null; diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/DefaultBinder.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/DefaultBinder.cs index 4c0ec188cbfe01..c76a7cb88fdd8c 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/DefaultBinder.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/DefaultBinder.cs @@ -269,11 +269,8 @@ public sealed override MethodBase BindToMethod( // Return any exact bindings that may exist. (This method is not defined on the // Binder and is used by RuntimeType.) - public static MethodBase? ExactBinding(MethodBase[] match, Type[] types, ParameterModifier[]? modifiers) + public static MethodBase? ExactBinding(MethodBase[] match!!, Type[] types, ParameterModifier[]? modifiers) { - if (match == null) - throw new ArgumentNullException(nameof(match)); - MethodBase[] aExactMatches = new MethodBase[match.Length]; int cExactMatches = 0; @@ -312,11 +309,8 @@ public sealed override MethodBase BindToMethod( // Return any exact bindings that may exist. (This method is not defined on the // Binder and is used by RuntimeType.) - public static PropertyInfo? ExactPropertyBinding(PropertyInfo[] match, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) + public static PropertyInfo? ExactPropertyBinding(PropertyInfo[] match!!, Type? returnType, Type[]? types, ParameterModifier[]? modifiers) { - if (match == null) - throw new ArgumentNullException(nameof(match)); - PropertyInfo? bestMatch = null; int typesLength = (types != null) ? types.Length : 0; for (int i = 0; i < match.Length; i++) diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/MetadataLoadContext.Apis.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/MetadataLoadContext.Apis.cs index cd766198a65208..897ce6890a6545 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/MetadataLoadContext.Apis.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/MetadataLoadContext.Apis.cs @@ -103,11 +103,8 @@ public sealed partial class MetadataLoadContext : IDisposable /// /// The name of the assembly that contains the core types such as System.Object. Typically, this would be "mscorlib". /// - public MetadataLoadContext(MetadataAssemblyResolver resolver, string? coreAssemblyName = null) + public MetadataLoadContext(MetadataAssemblyResolver resolver!!, string? coreAssemblyName = null) { - if (resolver == null) - throw new ArgumentNullException(nameof(resolver)); - this.resolver = resolver; if (coreAssemblyName != null) @@ -125,14 +122,10 @@ public MetadataLoadContext(MetadataAssemblyResolver resolver, string? coreAssemb /// assembly with the same name was already loaded into the MetadataLoadContext, the prior assembly will be returned. If the /// two assemblies do not have the same Mvid, this method throws a FileLoadException. /// - public Assembly LoadFromAssemblyPath(string assemblyPath) + public Assembly LoadFromAssemblyPath(string assemblyPath!!) { if (IsDisposed) throw new ObjectDisposedException(nameof(MetadataLoadContext)); - - if (assemblyPath == null) - throw new ArgumentNullException(nameof(assemblyPath)); - return LoadFromStreamCore(File.OpenRead(assemblyPath)); } @@ -141,14 +134,10 @@ public Assembly LoadFromAssemblyPath(string assemblyPath) /// assembly with the same name was already loaded into the MetadataLoadContext, the prior assembly will be returned. If the /// two assemblies do not have the same Mvid, this method throws a FileLoadException. /// - public Assembly LoadFromByteArray(byte[] assembly) + public Assembly LoadFromByteArray(byte[] assembly!!) { if (IsDisposed) throw new ObjectDisposedException(nameof(MetadataLoadContext)); - - if (assembly == null) - throw new ArgumentNullException(nameof(assembly)); - return LoadFromStreamCore(new MemoryStream(assembly)); } @@ -160,14 +149,10 @@ public Assembly LoadFromByteArray(byte[] assembly) /// The MetadataLoadContext takes ownership of the Stream passed into this method. The original owner must not mutate its position, dispose the Stream or /// assume that its position will stay unchanged. /// - public Assembly LoadFromStream(Stream assembly) + public Assembly LoadFromStream(Stream assembly!!) { if (IsDisposed) throw new ObjectDisposedException(nameof(MetadataLoadContext)); - - if (assembly == null) - throw new ArgumentNullException(nameof(assembly)); - assembly.Position = 0; return LoadFromStreamCore(assembly); } @@ -179,14 +164,10 @@ public Assembly LoadFromStream(Stream assembly) /// Note that this behavior matches the behavior of AssemblyLoadContext.LoadFromAssemblyName() but does not match the behavior of /// Assembly.ReflectionOnlyLoad(). (the latter gives up without raising its resolve event.) /// - public Assembly LoadFromAssemblyName(string assemblyName) + public Assembly LoadFromAssemblyName(string assemblyName!!) { if (IsDisposed) throw new ObjectDisposedException(nameof(MetadataLoadContext)); - - if (assemblyName == null) - throw new ArgumentNullException(nameof(assemblyName)); - AssemblyName assemblyNameObject = new AssemblyName(assemblyName); RoAssemblyName refName = assemblyNameObject.ToRoAssemblyName(); return ResolveAssembly(refName); @@ -199,14 +180,10 @@ public Assembly LoadFromAssemblyName(string assemblyName) /// Note that this behavior matches the behavior of AssemblyLoadContext.LoadFromAssemblyName() resolve event but does not match the behavior of /// Assembly.ReflectionOnlyLoad(). (the latter gives up without raising its resolve event.) /// - public Assembly LoadFromAssemblyName(AssemblyName assemblyName) + public Assembly LoadFromAssemblyName(AssemblyName assemblyName!!) { if (IsDisposed) throw new ObjectDisposedException(nameof(MetadataLoadContext)); - - if (assemblyName == null) - throw new ArgumentNullException(nameof(assemblyName)); - RoAssemblyName refName = assemblyName.ToRoAssemblyName(); return ResolveAssembly(refName); } diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/PathAssemblyResolver.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/PathAssemblyResolver.cs index acae80432247cf..65cbcba0372f63 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/PathAssemblyResolver.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/PathAssemblyResolver.cs @@ -29,11 +29,8 @@ public class PathAssemblyResolver : MetadataAssemblyResolver /// /// Thrown when assemblyPaths is null. /// Thrown when a path is invalid. - public PathAssemblyResolver(IEnumerable assemblyPaths) + public PathAssemblyResolver(IEnumerable assemblyPaths!!) { - if (assemblyPaths == null) - throw new ArgumentNullException(nameof(assemblyPaths)); - foreach (string path in assemblyPaths) { if (string.IsNullOrEmpty(path)) diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/Ecma/EcmaAssembly.ManifestResources.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/Ecma/EcmaAssembly.ManifestResources.cs index 9cfdf5b19d9354..c105c220588336 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/Ecma/EcmaAssembly.ManifestResources.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/Ecma/EcmaAssembly.ManifestResources.cs @@ -12,10 +12,8 @@ namespace System.Reflection.TypeLoading.Ecma /// internal sealed partial class EcmaAssembly { - public sealed override ManifestResourceInfo? GetManifestResourceInfo(string resourceName) + public sealed override ManifestResourceInfo? GetManifestResourceInfo(string resourceName!!) { - if (resourceName == null) - throw new ArgumentNullException(nameof(resourceName)); if (resourceName.Length == 0) throw new ArgumentException(nameof(resourceName)); @@ -59,10 +57,8 @@ public sealed override string[] GetManifestResourceNames() [UnconditionalSuppressMessage("SingleFile", "IL3002:RequiresAssemblyFiles on Module.GetFile", Justification = "ResourceLocation should never be ContainedInAnotherAssembly if embedded in a single-file")] - public sealed override Stream? GetManifestResourceStream(string name) + public sealed override Stream? GetManifestResourceStream(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); if (name.Length == 0) throw new ArgumentException(nameof(name)); diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.Modules.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.Modules.cs index d141c710af2e84..6034180e54a1ed 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.Modules.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.Modules.cs @@ -59,11 +59,8 @@ public sealed override Module[] GetLoadedModules(bool getResourceModules) public abstract override event ModuleResolveEventHandler? ModuleResolve; - internal RoModule? GetRoModule(string name) + internal RoModule? GetRoModule(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (!TryGetAssemblyFileInfo(name, includeManifestModule: true, out AssemblyFileInfo afi)) return null; @@ -96,13 +93,10 @@ internal RoModule[] ComputeRoModules(bool getResourceModules) return modules.ToArray(); } - public sealed override Module LoadModule(string moduleName, byte[]? rawModule, byte[]? rawSymbolStore) +#pragma warning disable CS8995 // Nullable type is null-checked and will throw if null. + public sealed override Module LoadModule(string moduleName!!, byte[]? rawModule!!, byte[]? rawSymbolStore) +#pragma warning restore CS8995 { - if (moduleName == null) - throw new ArgumentNullException(nameof(moduleName)); - if (rawModule == null) - throw new ArgumentNullException(nameof(rawModule)); - if (!TryGetAssemblyFileInfo(moduleName, includeManifestModule: false, out AssemblyFileInfo afi)) throw new ArgumentException(SR.Format(SR.SpecifiedFileNameInvalid, moduleName)); // Name not in manifest. diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.cs index 43609a2f3eb869..57fd648bbe12d2 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Assemblies/RoAssembly.cs @@ -96,11 +96,8 @@ public sealed override IEnumerable ExportedTypes } // Api to retrieve types by name. Retrieves both types physically defined in this module and types this assembly forwards from another assembly. - public sealed override Type? GetType(string name, bool throwOnError, bool ignoreCase) + public sealed override Type? GetType(string name!!, bool throwOnError, bool ignoreCase) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - // Known compat disagreement: This api is supposed to throw an ArgumentException if the name has an assembly qualification // (though the intended meaning seems clear.) This is difficult for us to implement as we don't have our own type name parser. // (We can't just throw in the assemblyResolve delegate because assembly qualifications are permitted inside generic arguments, diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/General/Helpers.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/General/Helpers.cs index 1cd472bb203f87..8a7f7ce7b7ae78 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/General/Helpers.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/General/Helpers.cs @@ -239,11 +239,8 @@ public static string ToString(this IRoMethodBase roMethodBase, MethodSig return sb.ToString(); } - public static bool HasSameMetadataDefinitionAsCore(this M thisMember, MemberInfo other) where M : MemberInfo + public static bool HasSameMetadataDefinitionAsCore(this M thisMember, MemberInfo other!!) where M : MemberInfo { - if (other == null) - throw new ArgumentNullException(nameof(other)); - // Ensure that "other" is one of our MemberInfo objects. Do this check before calling any methods on it! if (!(other is M)) return false; diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Methods/RoDefinitionMethod.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Methods/RoDefinitionMethod.cs index d8cbb517045618..0d0f122a35bd5b 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Methods/RoDefinitionMethod.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Methods/RoDefinitionMethod.cs @@ -100,11 +100,8 @@ public sealed override bool Equals([NotNullWhen(true)] object? obj) public sealed override MethodInfo GetGenericMethodDefinition() => IsGenericMethodDefinition ? this : throw new InvalidOperationException(); // Very uninformative but compatible exception [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public sealed override MethodInfo MakeGenericMethod(params Type[] typeArguments) + public sealed override MethodInfo MakeGenericMethod(params Type[] typeArguments!!) { - if (typeArguments == null) - throw new ArgumentNullException(nameof(typeArguments)); - if (!IsGenericMethodDefinition) throw new InvalidOperationException(SR.Format(SR.Arg_NotGenericMethodDefinition, this)); diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.BindingFlags.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.BindingFlags.cs index 8d1be59255ed71..bd6cef84f36262 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.BindingFlags.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.BindingFlags.cs @@ -169,10 +169,8 @@ private QueryResult Query(BindingFlags bindingAttr) where M : MemberInfo return Query(null, bindingAttr, null); } - private QueryResult Query(string name, BindingFlags bindingAttr) where M : MemberInfo + private QueryResult Query(string name!!, BindingFlags bindingAttr) where M : MemberInfo { - if (name == null) - throw new ArgumentNullException(nameof(name)); return Query(name, bindingAttr, null); } diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.GetMember.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.GetMember.cs index 316d25a6086cf3..52919a1315581a 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.GetMember.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/RuntimeTypeInfo.GetMember.cs @@ -9,17 +9,13 @@ namespace System.Reflection.TypeLoading internal abstract partial class RoType { public sealed override MemberInfo[] GetMembers(BindingFlags bindingAttr) => GetMemberImpl(null, MemberTypes.All, bindingAttr); - public sealed override MemberInfo[] GetMember(string name, BindingFlags bindingAttr) + public sealed override MemberInfo[] GetMember(string name!!, BindingFlags bindingAttr) { - if (name == null) - throw new ArgumentNullException(nameof(name)); return GetMemberImpl(name, MemberTypes.All, bindingAttr); } - public sealed override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) + public sealed override MemberInfo[] GetMember(string name!!, MemberTypes type, BindingFlags bindingAttr) { - if (name == null) - throw new ArgumentNullException(nameof(name)); return GetMemberImpl(name, type, bindingAttr); } diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs index 94837cbfa2476c..f7ddc728ba12fa 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoDefinitionType.cs @@ -85,11 +85,8 @@ public sealed override IEnumerable CustomAttributes internal abstract IEnumerable SpecializeInterfaces(RoType[] instantiation); [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public sealed override Type MakeGenericType(params Type[] typeArguments) + public sealed override Type MakeGenericType(params Type[] typeArguments!!) { - if (typeArguments == null) - throw new ArgumentNullException(nameof(typeArguments)); - if (!IsGenericTypeDefinition) throw new InvalidOperationException(SR.Format(SR.Arg_NotGenericTypeDefinition, this)); @@ -146,8 +143,6 @@ public sealed override StructLayoutAttribute? StructLayoutAttribute { get { - const int DefaultPackingSize = 8; - // Note: CoreClr checks HasElementType and IsGenericParameter in addition to IsInterface but those properties cannot be true here as this // RoType subclass is solely for TypeDef types.) if (IsInterface) @@ -170,12 +165,6 @@ public sealed override StructLayoutAttribute? StructLayoutAttribute }; GetPackSizeAndSize(out int pack, out int size); - // Metadata parameter checking should not have allowed 0 for packing size. - // The runtime later converts a packing size of 0 to 8 so do the same here - // because it's more useful from a user perspective. - if (pack == 0) - pack = DefaultPackingSize; - return new StructLayoutAttribute(layoutKind) { CharSet = charSet, diff --git a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoType.GetInterface.cs b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoType.GetInterface.cs index d7d3d8474d1da9..6f83b51797a64b 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoType.GetInterface.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/src/System/Reflection/TypeLoading/Types/RoType.GetInterface.cs @@ -8,11 +8,8 @@ namespace System.Reflection.TypeLoading /// internal abstract partial class RoType { - public sealed override Type? GetInterface(string name, bool ignoreCase) + public sealed override Type? GetInterface(string name!!, bool ignoreCase) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - name.SplitTypeName(out string ns, out string simpleName); Type? match = null; diff --git a/src/libraries/System.Reflection.MetadataLoadContext/tests/src/Tests/Type/TypeTests.StructLayoutAttribute.cs b/src/libraries/System.Reflection.MetadataLoadContext/tests/src/Tests/Type/TypeTests.StructLayoutAttribute.cs index 865e51f8fbc162..ec138772fcc6eb 100644 --- a/src/libraries/System.Reflection.MetadataLoadContext/tests/src/Tests/Type/TypeTests.StructLayoutAttribute.cs +++ b/src/libraries/System.Reflection.MetadataLoadContext/tests/src/Tests/Type/TypeTests.StructLayoutAttribute.cs @@ -15,7 +15,7 @@ public static void Test_UndecoratedClass() StructLayoutAttribute s = t.StructLayoutAttribute; Assert.Equal(LayoutKind.Auto, s.Value); Assert.Equal(CharSet.Ansi, s.CharSet); - Assert.Equal(8, s.Pack); + Assert.Equal(0, s.Pack); Assert.Equal(0, s.Size); } @@ -71,7 +71,7 @@ public static void TestSequentialAutoZeroZero() StructLayoutAttribute s = t.StructLayoutAttribute; Assert.Equal(LayoutKind.Sequential, s.Value); Assert.Equal(CharSet.Auto, s.CharSet); - Assert.Equal(8, s.Pack); // Not an error: Pack=0 is treated as if it were Pack=8. + Assert.Equal(0, s.Pack); Assert.Equal(0, s.Size); } @@ -149,7 +149,7 @@ public static void Test_Derived() StructLayoutAttribute s = t.StructLayoutAttribute; Assert.Equal(LayoutKind.Auto, s.Value); Assert.Equal(CharSet.Ansi, s.CharSet); - Assert.Equal(8, s.Pack); + Assert.Equal(0, s.Pack); Assert.Equal(0, s.Size); } diff --git a/src/libraries/System.Reflection.TypeExtensions/src/System/Reflection/TypeExtensions.cs b/src/libraries/System.Reflection.TypeExtensions/src/System/Reflection/TypeExtensions.cs index f931cbe364b539..49e722736dd4a7 100644 --- a/src/libraries/System.Reflection.TypeExtensions/src/System/Reflection/TypeExtensions.cs +++ b/src/libraries/System.Reflection.TypeExtensions/src/System/Reflection/TypeExtensions.cs @@ -8,25 +8,22 @@ namespace System.Reflection public static class TypeExtensions { public static ConstructorInfo? GetConstructor( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] this Type type!!, Type[] types) { - ArgumentNullException.ThrowIfNull(type); return type.GetConstructor(types); } public static ConstructorInfo[] GetConstructors( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetConstructors(); } public static ConstructorInfo[] GetConstructors( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetConstructors(bindingAttr); } @@ -37,86 +34,75 @@ public static MemberInfo[] GetDefaultMembers( | DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicConstructors - | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type) + | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetDefaultMembers(); } public static EventInfo? GetEvent( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] this Type type!!, string name) { - ArgumentNullException.ThrowIfNull(type); return type.GetEvent(name); } public static EventInfo? GetEvent( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetEvent(name, bindingAttr); } public static EventInfo[] GetEvents( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetEvents(); } public static EventInfo[] GetEvents( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetEvents(bindingAttr); } public static FieldInfo? GetField( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] this Type type!!, string name) { - ArgumentNullException.ThrowIfNull(type); return type.GetField(name); } public static FieldInfo? GetField( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetField(name, bindingAttr); } public static FieldInfo[] GetFields( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetFields(); } public static FieldInfo[] GetFields( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetFields(bindingAttr); } - public static Type[] GetGenericArguments(this Type type) + public static Type[] GetGenericArguments(this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetGenericArguments(); } public static Type[] GetInterfaces( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetInterfaces(); } @@ -127,19 +113,17 @@ public static MemberInfo[] GetMember( | DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicConstructors - | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type, + | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type!!, string name) { - ArgumentNullException.ThrowIfNull(type); return type.GetMember(name); } public static MemberInfo[] GetMember( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetMember(name, bindingAttr); } @@ -150,138 +134,121 @@ public static MemberInfo[] GetMembers( | DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicConstructors - | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type) + | DynamicallyAccessedMemberTypes.PublicNestedTypes)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetMembers(); } public static MemberInfo[] GetMembers( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetMembers(bindingAttr); } public static MethodInfo? GetMethod( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type!!, string name) { - ArgumentNullException.ThrowIfNull(type); return type.GetMethod(name); } public static MethodInfo? GetMethod( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetMethod(name, bindingAttr); } public static MethodInfo? GetMethod( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type!!, string name, Type[] types) { - ArgumentNullException.ThrowIfNull(type); return type.GetMethod(name, types); } public static MethodInfo[] GetMethods( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetMethods(); } public static MethodInfo[] GetMethods( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetMethods(bindingAttr); } public static Type? GetNestedType( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetNestedType(name, bindingAttr); } public static Type[] GetNestedTypes( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetNestedTypes(bindingAttr); } public static PropertyInfo[] GetProperties( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type) + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type!!) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperties(); } public static PropertyInfo[] GetProperties( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] this Type type!!, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperties(bindingAttr); } public static PropertyInfo? GetProperty( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type!!, string name) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperty(name); } public static PropertyInfo? GetProperty( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] this Type type!!, string name, BindingFlags bindingAttr) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperty(name, bindingAttr); } public static PropertyInfo? GetProperty( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type!!, string name, Type? returnType) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperty(name, returnType); } public static PropertyInfo? GetProperty( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] this Type type!!, string name, Type? returnType, Type[] types) { - ArgumentNullException.ThrowIfNull(type); return type.GetProperty(name, returnType, types); } - public static bool IsAssignableFrom(this Type type, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] Type? c) + public static bool IsAssignableFrom(this Type type!!, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] Type? c) { - ArgumentNullException.ThrowIfNull(type); return type.IsAssignableFrom(c); } - public static bool IsInstanceOfType(this Type type, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] object? o) + public static bool IsInstanceOfType(this Type type!!, [System.Diagnostics.CodeAnalysis.NotNullWhen(true)] object? o) { - ArgumentNullException.ThrowIfNull(type); return type.IsInstanceOfType(o); } } @@ -289,61 +256,52 @@ public static bool IsInstanceOfType(this Type type, [System.Diagnostics.CodeAnal public static class AssemblyExtensions { [RequiresUnreferencedCode("Types might be removed")] - public static Type[] GetExportedTypes(this Assembly assembly) + public static Type[] GetExportedTypes(this Assembly assembly!!) { - ArgumentNullException.ThrowIfNull(assembly); return assembly.GetExportedTypes(); } - public static Module[] GetModules(this Assembly assembly) + public static Module[] GetModules(this Assembly assembly!!) { - ArgumentNullException.ThrowIfNull(assembly); return assembly.GetModules(); } [RequiresUnreferencedCode("Types might be removed")] - public static Type[] GetTypes(this Assembly assembly) + public static Type[] GetTypes(this Assembly assembly!!) { - ArgumentNullException.ThrowIfNull(assembly); return assembly.GetTypes(); } } public static class EventInfoExtensions { - public static MethodInfo? GetAddMethod(this EventInfo eventInfo) + public static MethodInfo? GetAddMethod(this EventInfo eventInfo!!) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetAddMethod(); } - public static MethodInfo? GetAddMethod(this EventInfo eventInfo, bool nonPublic) + public static MethodInfo? GetAddMethod(this EventInfo eventInfo!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetAddMethod(nonPublic); } - public static MethodInfo? GetRaiseMethod(this EventInfo eventInfo) + public static MethodInfo? GetRaiseMethod(this EventInfo eventInfo!!) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetRaiseMethod(); } - public static MethodInfo? GetRaiseMethod(this EventInfo eventInfo, bool nonPublic) + public static MethodInfo? GetRaiseMethod(this EventInfo eventInfo!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetRaiseMethod(nonPublic); } - public static MethodInfo? GetRemoveMethod(this EventInfo eventInfo) + public static MethodInfo? GetRemoveMethod(this EventInfo eventInfo!!) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetRemoveMethod(); } - public static MethodInfo? GetRemoveMethod(this EventInfo eventInfo, bool nonPublic) + public static MethodInfo? GetRemoveMethod(this EventInfo eventInfo!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(eventInfo); return eventInfo.GetRemoveMethod(nonPublic); } } @@ -356,10 +314,8 @@ public static class MemberInfoExtensions /// throws otherwise. /// /// This maybe - public static bool HasMetadataToken(this MemberInfo member) + public static bool HasMetadataToken(this MemberInfo member!!) { - ArgumentNullException.ThrowIfNull(member); - try { return GetMetadataTokenOrZeroOrThrow(member) != 0; @@ -378,10 +334,8 @@ public static bool HasMetadataToken(this MemberInfo member) /// /// There is no metadata token available. returns false in this case. /// - public static int GetMetadataToken(this MemberInfo member) + public static int GetMetadataToken(this MemberInfo member!!) { - ArgumentNullException.ThrowIfNull(member); - int token = GetMetadataTokenOrZeroOrThrow(member); if (token == 0) @@ -411,63 +365,54 @@ private static int GetMetadataTokenOrZeroOrThrow(this MemberInfo member) public static class MethodInfoExtensions { - public static MethodInfo GetBaseDefinition(this MethodInfo method) + public static MethodInfo GetBaseDefinition(this MethodInfo method!!) { - ArgumentNullException.ThrowIfNull(method); return method.GetBaseDefinition(); } } public static class ModuleExtensions { - public static bool HasModuleVersionId(this Module module) + public static bool HasModuleVersionId(this Module module!!) { - ArgumentNullException.ThrowIfNull(module); return true; // not expected to fail on platforms with Module.ModuleVersionId built-in. } - public static Guid GetModuleVersionId(this Module module) + public static Guid GetModuleVersionId(this Module module!!) { - ArgumentNullException.ThrowIfNull(module); return module.ModuleVersionId; } } public static class PropertyInfoExtensions { - public static MethodInfo[] GetAccessors(this PropertyInfo property) + public static MethodInfo[] GetAccessors(this PropertyInfo property!!) { - ArgumentNullException.ThrowIfNull(property); return property.GetAccessors(); } - public static MethodInfo[] GetAccessors(this PropertyInfo property, bool nonPublic) + public static MethodInfo[] GetAccessors(this PropertyInfo property!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(property); return property.GetAccessors(nonPublic); } - public static MethodInfo? GetGetMethod(this PropertyInfo property) + public static MethodInfo? GetGetMethod(this PropertyInfo property!!) { - ArgumentNullException.ThrowIfNull(property); return property.GetGetMethod(); } - public static MethodInfo? GetGetMethod(this PropertyInfo property, bool nonPublic) + public static MethodInfo? GetGetMethod(this PropertyInfo property!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(property); return property.GetGetMethod(nonPublic); } - public static MethodInfo? GetSetMethod(this PropertyInfo property) + public static MethodInfo? GetSetMethod(this PropertyInfo property!!) { - ArgumentNullException.ThrowIfNull(property); return property.GetSetMethod(); } - public static MethodInfo? GetSetMethod(this PropertyInfo property, bool nonPublic) + public static MethodInfo? GetSetMethod(this PropertyInfo property!!, bool nonPublic) { - ArgumentNullException.ThrowIfNull(property); return property.GetSetMethod(nonPublic); } } diff --git a/src/libraries/System.Reflection/tests/AssemblyTests.cs b/src/libraries/System.Reflection/tests/AssemblyTests.cs index 1a85f648f83641..2ce8843eb3373d 100644 --- a/src/libraries/System.Reflection/tests/AssemblyTests.cs +++ b/src/libraries/System.Reflection/tests/AssemblyTests.cs @@ -693,10 +693,10 @@ public void AssemblyLoadFromString() public void AssemblyLoadFromStringNeg() { Assert.Throws(() => Assembly.Load((string)null)); - AssertExtensions.Throws(null, () => Assembly.Load(string.Empty)); + AssertExtensions.Throws("assemblyName", () => Assembly.Load(string.Empty)); string emptyCName = new string('\0', 1); - AssertExtensions.Throws(null, () => Assembly.Load(emptyCName)); + Assert.Throws(() => Assembly.Load(emptyCName)); Assert.Throws(() => Assembly.Load("no such assembly")); // No such assembly } diff --git a/src/libraries/System.Reflection/tests/TypeInfoTests.cs b/src/libraries/System.Reflection/tests/TypeInfoTests.cs index f3b9240505c69b..a9b4292c2fb4bb 100644 --- a/src/libraries/System.Reflection/tests/TypeInfoTests.cs +++ b/src/libraries/System.Reflection/tests/TypeInfoTests.cs @@ -1490,9 +1490,9 @@ public void IsNestedFamORAssem(Type type, bool expected) } [Theory] - [InlineData(typeof(StructWithoutExplicitStructLayout), LayoutKind.Sequential, CharSet.Ansi, 8)] + [InlineData(typeof(StructWithoutExplicitStructLayout), LayoutKind.Sequential, CharSet.Ansi, 0)] [InlineData(typeof(StructWithExplicitStructLayout), LayoutKind.Explicit, CharSet.Ansi, 1)] - [InlineData(typeof(ClassWithoutExplicitStructLayout), LayoutKind.Auto, CharSet.Ansi, 8)] + [InlineData(typeof(ClassWithoutExplicitStructLayout), LayoutKind.Auto, CharSet.Ansi, 0)] [InlineData(typeof(ClassWithExplicitStructLayout), LayoutKind.Explicit, CharSet.Unicode, 2)] public void StructLayoutAttribute(Type type, LayoutKind kind, CharSet charset, int pack) { diff --git a/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/PreserializedResourceWriter.cs b/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/PreserializedResourceWriter.cs index e251455cbfdac6..178ad1d94e0f97 100644 --- a/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/PreserializedResourceWriter.cs +++ b/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/PreserializedResourceWriter.cs @@ -68,15 +68,8 @@ public partial class PreserializedResourceWriter /// Resource name /// Value of the resource in string form understood by the type's TypeConverter /// Assembly qualified type name of the resource - public void AddResource(string name, string value, string typeName) + public void AddResource(string name!!, string value!!, string typeName!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); - // determine if the type is a primitive type if (s_primitiveTypes.TryGetValue(typeName, out Type? primitiveType)) { @@ -119,15 +112,8 @@ public void AddResource(string name, string value, string typeName) /// Resource name /// Value of the resource in byte[] form understood by the type's TypeConverter /// Assembly qualified type name of the resource - public void AddTypeConverterResource(string name, byte[] value, string typeName) + public void AddTypeConverterResource(string name!!, byte[] value!!, string typeName!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); - AddResourceData(name, typeName, new ResourceDataRecord(SerializationFormat.TypeConverterByteArray, value)); _requiresDeserializingResourceReader = true; @@ -140,12 +126,8 @@ public void AddTypeConverterResource(string name, byte[] value, string typeName) /// Resource name /// Value of the resource in byte[] form understood by BinaryFormatter /// Assembly qualified type name of the resource - public void AddBinaryFormattedResource(string name, byte[] value, string? typeName = null) + public void AddBinaryFormattedResource(string name!!, byte[] value!!, string? typeName = null) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (value == null) - throw new ArgumentNullException(nameof(value)); if (typeName == null) { // Some resx-files are missing type information for binary-formatted resources. @@ -171,15 +153,8 @@ public void AddBinaryFormattedResource(string name, byte[] value, string? typeNa /// Value of the resource in Stream form understood by the types constructor /// Assembly qualified type name of the resource /// Indicates that the stream should be closed after resources have been written - public void AddActivatorResource(string name, Stream value, string typeName, bool closeAfterWrite = false) + public void AddActivatorResource(string name!!, Stream value!!, string typeName!!, bool closeAfterWrite = false) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); - if (!value.CanSeek) throw new ArgumentException(SR.NotSupported_UnseekableStream); diff --git a/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/TypeNameComparer.cs b/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/TypeNameComparer.cs index e0f5acbc8a5522..ce1758976ef665 100644 --- a/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/TypeNameComparer.cs +++ b/src/libraries/System.Resources.Extensions/src/System/Resources/Extensions/TypeNameComparer.cs @@ -52,14 +52,9 @@ private static bool IsMscorlib(ReadOnlySpan assemblyName) // If a type name is missing assembly, we assume it came from mscorlib // since this is what Type.GetType will do. #pragma warning disable CS8767 // This API member has [AllowNull] implemented interface, but we don't want to accept nulls here. - public bool Equals(string assemblyQualifiedTypeName1, string assemblyQualifiedTypeName2) + public bool Equals(string assemblyQualifiedTypeName1!!, string assemblyQualifiedTypeName2!!) #pragma warning restore CS8767 { - if (assemblyQualifiedTypeName1 == null) - throw new ArgumentNullException(nameof(assemblyQualifiedTypeName1)); - if (assemblyQualifiedTypeName2 == null) - throw new ArgumentNullException(nameof(assemblyQualifiedTypeName2)); - if (ReferenceEquals(assemblyQualifiedTypeName1, assemblyQualifiedTypeName2)) return true; diff --git a/src/libraries/System.Resources.Writer/src/System/Resources/ResourceWriter.core.cs b/src/libraries/System.Resources.Writer/src/System/Resources/ResourceWriter.core.cs index 6d87f6a0964231..1bb99eb30ed9b5 100644 --- a/src/libraries/System.Resources.Writer/src/System/Resources/ResourceWriter.core.cs +++ b/src/libraries/System.Resources.Writer/src/System/Resources/ResourceWriter.core.cs @@ -22,26 +22,16 @@ public partial class ResourceWriter // Adds a resource of type Stream to the list of resources to be // written to a file. They aren't written until Generate() is called. // Doesn't close the Stream when done. - public void AddResource(string name, Stream? value) + public void AddResource(string name!!, Stream? value) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (_resourceList == null) throw new InvalidOperationException(SR.InvalidOperation_ResourceWriterSaved); AddResourceInternal(name, value, false); } - public void AddResourceData(string name, string typeName, byte[] serializedData) + public void AddResourceData(string name!!, string typeName!!, byte[] serializedData!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (typeName == null) - throw new ArgumentNullException(nameof(typeName)); - if (serializedData == null) - throw new ArgumentNullException(nameof(serializedData)); - AddResourceData(name, typeName, (object)serializedData); } diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryRemovedArguments.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryRemovedArguments.cs index 803ca895074000..734cdea637908d 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryRemovedArguments.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryRemovedArguments.cs @@ -24,16 +24,8 @@ public ObjectCache Source get { return _source; } } - public CacheEntryRemovedArguments(ObjectCache source, CacheEntryRemovedReason reason, CacheItem cacheItem) + public CacheEntryRemovedArguments(ObjectCache source!!, CacheEntryRemovedReason reason, CacheItem cacheItem!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (cacheItem == null) - { - throw new ArgumentNullException(nameof(cacheItem)); - } _source = source; _reason = reason; _cacheItem = cacheItem; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryUpdateArguments.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryUpdateArguments.cs index a7711b77266b98..d660879abdd5de 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryUpdateArguments.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/CacheEntryUpdateArguments.cs @@ -46,16 +46,8 @@ public CacheItemPolicy UpdatedCacheItemPolicy set { _updatedCacheItemPolicy = value; } } - public CacheEntryUpdateArguments(ObjectCache source, CacheEntryRemovedReason reason, string key, string regionName) + public CacheEntryUpdateArguments(ObjectCache source!!, CacheEntryRemovedReason reason, string key!!, string regionName) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } _source = source; _reason = reason; _key = key; diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs index df6d6ea0a309d7..596a33e77942bb 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/ChangeMonitor.cs @@ -219,13 +219,8 @@ public void Dispose() // on subsequent calls. The OnChangedCallback is guaranteed to be called exactly once. // It will be called when the dependency changes, or if it has already changed, it will // be called immediately (on the same thread??). - public void NotifyOnChanged(OnChangedCallback onChangedCallback) + public void NotifyOnChanged(OnChangedCallback onChangedCallback!!) { - if (onChangedCallback == null) - { - throw new ArgumentNullException(nameof(onChangedCallback)); - } - if (Interlocked.CompareExchange(ref _onChangedCallback, onChangedCallback, null) != null) { throw new InvalidOperationException(SR.Method_already_invoked); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Counters.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Counters.cs index b49d9e138090e9..f89fede21f848e 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Counters.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Counters.cs @@ -21,13 +21,8 @@ internal sealed class Counters : EventSource private DiagnosticCounter[] _counters; private long[] _counterValues; - internal Counters(string cacheName) : base(EVENT_SOURCE_NAME_ROOT + cacheName) + internal Counters(string cacheName!!) : base(EVENT_SOURCE_NAME_ROOT + cacheName) { - if (cacheName == null) - { - throw new ArgumentNullException(nameof(cacheName)); - } - InitDisposableMembers(cacheName); } diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/FileChangeNotificationSystem.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/FileChangeNotificationSystem.cs index 750a0e037493b7..3bfa7ec6bda683 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/FileChangeNotificationSystem.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/FileChangeNotificationSystem.cs @@ -93,16 +93,8 @@ internal FileChangeNotificationSystem() _lock = new object(); } - void IFileChangeNotificationSystem.StartMonitoring(string filePath, OnChangedCallback onChangedCallback, out object state, out DateTimeOffset lastWriteTime, out long fileSize) + void IFileChangeNotificationSystem.StartMonitoring(string filePath!!, OnChangedCallback onChangedCallback!!, out object state, out DateTimeOffset lastWriteTime, out long fileSize) { - if (filePath == null) - { - throw new ArgumentNullException(nameof(filePath)); - } - if (onChangedCallback == null) - { - throw new ArgumentNullException(nameof(onChangedCallback)); - } FileInfo fileInfo = new FileInfo(filePath); string dir = Path.GetDirectoryName(filePath); DirectoryMonitor dirMon = _dirMonitors[dir] as DirectoryMonitor; @@ -143,16 +135,8 @@ void IFileChangeNotificationSystem.StartMonitoring(string filePath, OnChangedCal fileSize = (fileInfo.Exists) ? fileInfo.Length : -1; } - void IFileChangeNotificationSystem.StopMonitoring(string filePath, object state) + void IFileChangeNotificationSystem.StopMonitoring(string filePath!!, object state!!) { - if (filePath == null) - { - throw new ArgumentNullException(nameof(filePath)); - } - if (state == null) - { - throw new ArgumentNullException(nameof(state)); - } FileChangeEventTarget target = state as FileChangeEventTarget; if (target == null) { diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/HostFileChangeMonitor.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/HostFileChangeMonitor.cs index ecd228c35d5ba4..997477657ae022 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/HostFileChangeMonitor.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/HostFileChangeMonitor.cs @@ -155,12 +155,8 @@ protected override void Dispose(bool disposing) public override string UniqueId { get { return _uniqueId; } } public override DateTimeOffset LastModified { get { return _lastModified; } } - public HostFileChangeMonitor(IList filePaths) + public HostFileChangeMonitor(IList filePaths!!) { - if (filePaths == null) - { - throw new ArgumentNullException(nameof(filePaths)); - } if (filePaths.Count == 0) { throw new ArgumentException(RH.Format(SR.Empty_collection, nameof(filePaths))); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs index 1a11c5f7cdc2ac..8515bbe795437f 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs @@ -348,12 +348,8 @@ private MemoryCache() Init(null); } - public MemoryCache(string name, NameValueCollection config = null) + public MemoryCache(string name!!, NameValueCollection config = null) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Empty_string_invalid, nameof(name)); @@ -368,12 +364,8 @@ public MemoryCache(string name, NameValueCollection config = null) // ignoreConfigSection is used when redirecting ASP.NET cache into the MemoryCache. This avoids infinite recursion // due to the fact that the (ASP.NET) config system uses the cache, and the cache uses the config system. - public MemoryCache(string name, NameValueCollection config, bool ignoreConfigSection) + public MemoryCache(string name!!, NameValueCollection config, bool ignoreConfigSection) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Empty_string_invalid, nameof(name)); @@ -399,12 +391,8 @@ private void Init(NameValueCollection config) InitDisposableMembers(config); } - private object AddOrGetExistingInternal(string key, object value, CacheItemPolicy policy) + private object AddOrGetExistingInternal(string key!!, object value, CacheItemPolicy policy) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } DateTimeOffset absExp = ObjectCache.InfiniteAbsoluteExpiration; TimeSpan slidingExp = ObjectCache.NoSlidingExpiration; CacheItemPriority priority = CacheItemPriority.Default; @@ -632,12 +620,8 @@ public override object AddOrGetExisting(string key, object value, DateTimeOffset return AddOrGetExistingInternal(key, value, policy); } - public override CacheItem AddOrGetExisting(CacheItem item, CacheItemPolicy policy) + public override CacheItem AddOrGetExisting(CacheItem item!!, CacheItemPolicy policy) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } return new CacheItem(item.Key, AddOrGetExistingInternal(item.Key, item.Value, policy)); } @@ -672,12 +656,8 @@ public override void Set(string key, object value, DateTimeOffset absoluteExpira Set(key, value, policy); } - public override void Set(CacheItem item, CacheItemPolicy policy) + public override void Set(CacheItem item!!, CacheItemPolicy policy) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } Set(item.Key, item.Value, policy); } @@ -732,17 +712,13 @@ public override void Set(string key, object value, CacheItemPolicy policy, strin store.Set(cacheKey, new MemoryCacheEntry(key, value, absExp, slidingExp, priority, changeMonitors, removedCallback, this)); } - internal void Set(string key, + internal void Set(string key!!, object value, Collection changeMonitors, DateTimeOffset absoluteExpiration, TimeSpan slidingExpiration, CacheEntryUpdateCallback onUpdateCallback) { - if (key == null) - { - throw new ArgumentNullException(nameof(key)); - } if (changeMonitors == null && absoluteExpiration == ObjectCache.InfiniteAbsoluteExpiration && slidingExpiration == ObjectCache.NoSlidingExpiration) @@ -897,12 +873,8 @@ public override IDictionary GetValues(IEnumerable keys, // used when redirecting ASP.NET cache into the MemoryCache. This avoids infinite recursion // due to the fact that the (ASP.NET) config system uses the cache, and the cache uses the // config system. - internal void UpdateConfig(NameValueCollection config) + internal void UpdateConfig(NameValueCollection config!!) { - if (config == null) - { - throw new ArgumentNullException(nameof(config)); - } if (!IsDisposed) { _stats.UpdateConfig(config); diff --git a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs index 792a2da188348c..eb027e99ec7fc8 100644 --- a/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs +++ b/src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheEntry.cs @@ -104,7 +104,7 @@ internal DateTime UtcLastUpdateUsage } internal MemoryCacheEntry(string key, - object value, + object value!!, DateTimeOffset absExp, TimeSpan slidingExp, CacheItemPriority priority, @@ -112,10 +112,6 @@ internal MemoryCacheEntry(string key, CacheEntryRemovedCallback removedCallback, MemoryCache cache) : base(key) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } _utcCreated = DateTime.UtcNow; _value = value; diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Analyzers/ManualTypeMarshallingAnalyzer.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Analyzers/ManualTypeMarshallingAnalyzer.cs index 9a3c33326d44bf..00abe866653b7e 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Analyzers/ManualTypeMarshallingAnalyzer.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Analyzers/ManualTypeMarshallingAnalyzer.cs @@ -206,14 +206,12 @@ public override void Initialize(AnalysisContext context) private void PrepareForAnalysis(CompilationStartAnalysisContext context) { INamedTypeSymbol? generatedMarshallingAttribute = context.Compilation.GetTypeByMetadataName(TypeNames.GeneratedMarshallingAttribute); - INamedTypeSymbol? blittableTypeAttribute = context.Compilation.GetTypeByMetadataName(TypeNames.BlittableTypeAttribute); INamedTypeSymbol? nativeMarshallingAttribute = context.Compilation.GetTypeByMetadataName(TypeNames.NativeMarshallingAttribute); INamedTypeSymbol? marshalUsingAttribute = context.Compilation.GetTypeByMetadataName(TypeNames.MarshalUsingAttribute); INamedTypeSymbol? genericContiguousCollectionMarshallerAttribute = context.Compilation.GetTypeByMetadataName(TypeNames.GenericContiguousCollectionMarshallerAttribute); INamedTypeSymbol? spanOfByte = context.Compilation.GetTypeByMetadataName(TypeNames.System_Span_Metadata)!.Construct(context.Compilation.GetSpecialType(SpecialType.System_Byte)); if (generatedMarshallingAttribute is not null - && blittableTypeAttribute is not null && nativeMarshallingAttribute is not null && marshalUsingAttribute is not null && genericContiguousCollectionMarshallerAttribute is not null @@ -221,7 +219,6 @@ private void PrepareForAnalysis(CompilationStartAnalysisContext context) { var perCompilationAnalyzer = new PerCompilationAnalyzer( generatedMarshallingAttribute, - blittableTypeAttribute, nativeMarshallingAttribute, marshalUsingAttribute, genericContiguousCollectionMarshallerAttribute, @@ -236,7 +233,6 @@ private void PrepareForAnalysis(CompilationStartAnalysisContext context) private class PerCompilationAnalyzer { private readonly INamedTypeSymbol _generatedMarshallingAttribute; - private readonly INamedTypeSymbol _blittableTypeAttribute; private readonly INamedTypeSymbol _nativeMarshallingAttribute; private readonly INamedTypeSymbol _marshalUsingAttribute; private readonly INamedTypeSymbol _genericContiguousCollectionMarshallerAttribute; @@ -244,7 +240,6 @@ private class PerCompilationAnalyzer private readonly INamedTypeSymbol _structLayoutAttribute; public PerCompilationAnalyzer(INamedTypeSymbol generatedMarshallingAttribute, - INamedTypeSymbol blittableTypeAttribute, INamedTypeSymbol nativeMarshallingAttribute, INamedTypeSymbol marshalUsingAttribute, INamedTypeSymbol genericContiguousCollectionMarshallerAttribute, @@ -252,7 +247,6 @@ public PerCompilationAnalyzer(INamedTypeSymbol generatedMarshallingAttribute, INamedTypeSymbol structLayoutAttribute) { _generatedMarshallingAttribute = generatedMarshallingAttribute; - _blittableTypeAttribute = blittableTypeAttribute; _nativeMarshallingAttribute = nativeMarshallingAttribute; _marshalUsingAttribute = marshalUsingAttribute; _genericContiguousCollectionMarshallerAttribute = genericContiguousCollectionMarshallerAttribute; @@ -264,8 +258,6 @@ public void AnalyzeTypeDefinition(SymbolAnalysisContext context) { INamedTypeSymbol type = (INamedTypeSymbol)context.Symbol; - AttributeData? blittableTypeAttributeData = null; - AttributeData? nativeMarshallingAttributeData = null; foreach (AttributeData attr in type.GetAttributes()) { if (SymbolEqualityComparer.Default.Equals(attr.AttributeClass, _generatedMarshallingAttribute)) @@ -274,45 +266,12 @@ public void AnalyzeTypeDefinition(SymbolAnalysisContext context) // we let the source generator handle error checking. return; } - else if (SymbolEqualityComparer.Default.Equals(attr.AttributeClass, _blittableTypeAttribute)) - { - blittableTypeAttributeData = attr; - } else if (SymbolEqualityComparer.Default.Equals(attr.AttributeClass, _nativeMarshallingAttribute)) { - nativeMarshallingAttributeData = attr; + AnalyzeNativeMarshalerType(context, type, attr, isNativeMarshallingAttribute: true); + return; } } - - if (HasMultipleMarshallingAttributes(blittableTypeAttributeData, nativeMarshallingAttributeData)) - { - context.ReportDiagnostic( - blittableTypeAttributeData!.CreateDiagnostic( - CannotHaveMultipleMarshallingAttributesRule, - type.ToDisplayString())); - } - else if (blittableTypeAttributeData is not null && (!type.HasOnlyBlittableFields() || type.IsAutoLayout(_structLayoutAttribute))) - { - context.ReportDiagnostic( - blittableTypeAttributeData.CreateDiagnostic( - BlittableTypeMustBeBlittableRule, - type.ToDisplayString())); - } - else if (nativeMarshallingAttributeData is not null) - { - AnalyzeNativeMarshalerType(context, type, nativeMarshallingAttributeData, isNativeMarshallingAttribute: true); - } - } - - private bool HasMultipleMarshallingAttributes(AttributeData? blittableTypeAttributeData, AttributeData? nativeMarshallingAttributeData) - { - return (blittableTypeAttributeData, nativeMarshallingAttributeData) switch - { - (null, null) => false, - (not null, null) => false, - (null, not null) => false, - _ => true - }; } public void AnalyzeElement(SymbolAnalysisContext context) @@ -545,7 +504,7 @@ private void AnalyzeNativeMarshalerType(SymbolAnalysisContext context, ITypeSymb // This ensures that marshalling via pinning the managed value and marshalling via the default marshaller will have the same ABI. if (!valuePropertyIsRefReturn // Ref returns are already reported above as invalid, so don't issue another warning here about them && nativeType is not ( - IPointerTypeSymbol _ or + IPointerTypeSymbol or { SpecialType: SpecialType.System_IntPtr } or { SpecialType: SpecialType.System_UIntPtr })) { diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.cs index 2987b174a564a7..7d03fd93b12bee 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.cs @@ -21,9 +21,6 @@ namespace Microsoft.Interop [Generator] public sealed class DllImportGenerator : IIncrementalGenerator { - private const string GeneratedDllImport = nameof(GeneratedDllImport); - private const string GeneratedDllImportAttribute = nameof(GeneratedDllImportAttribute); - internal sealed record IncrementalStubGenerationContext( StubEnvironment Environment, DllImportStubContext StubContext, @@ -351,7 +348,6 @@ private static GeneratedDllImportData ProcessGeneratedDllImportAttribute(Attribu CharSet charSet = CharSet.Ansi; string? entryPoint = null; bool exactSpelling = false; // VB has different and unusual default behavior here. - bool preserveSig = true; bool setLastError = false; // All other data on attribute is defined as NamedArguments. @@ -360,7 +356,7 @@ private static GeneratedDllImportData ProcessGeneratedDllImportAttribute(Attribu switch (namedArg.Key) { default: - Debug.Fail($"An unknown member was found on {GeneratedDllImport}"); + Debug.Fail($"An unknown member was found on {attrData.AttributeClass}"); continue; case nameof(GeneratedDllImportData.CharSet): userDefinedValues |= DllImportMember.CharSet; @@ -374,10 +370,6 @@ private static GeneratedDllImportData ProcessGeneratedDllImportAttribute(Attribu userDefinedValues |= DllImportMember.ExactSpelling; exactSpelling = (bool)namedArg.Value.Value!; break; - case nameof(GeneratedDllImportData.PreserveSig): - userDefinedValues |= DllImportMember.PreserveSig; - preserveSig = (bool)namedArg.Value.Value!; - break; case nameof(GeneratedDllImportData.SetLastError): userDefinedValues |= DllImportMember.SetLastError; setLastError = (bool)namedArg.Value.Value!; @@ -391,7 +383,6 @@ private static GeneratedDllImportData ProcessGeneratedDllImportAttribute(Attribu CharSet = charSet, EntryPoint = entryPoint, ExactSpelling = exactSpelling, - PreserveSig = preserveSig, SetLastError = setLastError, }; } @@ -464,7 +455,10 @@ private static IncrementalStubGenerationContext CalculateStubInformation(IMethod dllImportStub.Environment, dllImportStub.StubContext.ElementTypeInformation, dllImportStub.DllImportData.SetLastError && !options.GenerateForwarders, - (elementInfo, ex) => diagnostics.ReportMarshallingNotSupported(originalSyntax, elementInfo, ex.NotSupportedDetails), + (elementInfo, ex) => + { + diagnostics.ReportMarshallingNotSupported(originalSyntax, elementInfo, ex.NotSupportedDetails); + }, dllImportStub.StubContext.GeneratorFactory); // Check if the generator should produce a forwarder stub - regular DllImport. @@ -581,12 +575,6 @@ private static AttributeSyntax CreateDllImportAttributeForTarget(GeneratedDllImp ExpressionSyntax value = CreateBoolExpressionSyntax(targetDllImportData.ExactSpelling); newAttributeArgs.Add(AttributeArgument(name, null, value)); } - if (targetDllImportData.IsUserDefined.HasFlag(DllImportMember.PreserveSig)) - { - NameEqualsSyntax name = NameEquals(nameof(DllImportAttribute.PreserveSig)); - ExpressionSyntax value = CreateBoolExpressionSyntax(targetDllImportData.PreserveSig); - newAttributeArgs.Add(AttributeArgument(name, null, value)); - } if (targetDllImportData.IsUserDefined.HasFlag(DllImportMember.SetLastError)) { NameEqualsSyntax name = NameEquals(nameof(DllImportAttribute.SetLastError)); @@ -626,9 +614,6 @@ static ExpressionSyntax CreateEnumExpressionSyntax(T value) where T : Enum private static GeneratedDllImportData GetTargetDllImportDataFromStubData(GeneratedDllImportData dllImportData, string originalMethodName, bool forwardAll) { DllImportMember membersToForward = DllImportMember.All - // https://docs.microsoft.com/dotnet/api/system.runtime.interopservices.dllimportattribute.preservesig - // If PreserveSig=false (default is true), the P/Invoke stub checks/converts a returned HRESULT to an exception. - & ~DllImportMember.PreserveSig // https://docs.microsoft.com/dotnet/api/system.runtime.interopservices.dllimportattribute.setlasterror // If SetLastError=true (default is false), the P/Invoke stub gets/caches the last error after invoking the native function. & ~DllImportMember.SetLastError; @@ -643,7 +628,6 @@ private static GeneratedDllImportData GetTargetDllImportDataFromStubData(Generat EntryPoint = dllImportData.EntryPoint, ExactSpelling = dllImportData.ExactSpelling, SetLastError = dllImportData.SetLastError, - PreserveSig = dllImportData.PreserveSig, IsUserDefined = dllImportData.IsUserDefined & membersToForward }; diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.csproj b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.csproj index b3baca91121a99..8aeb91f565b2c8 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.csproj +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportGenerator.csproj @@ -1,68 +1,51 @@ - + Microsoft.Interop.DllImportGenerator - netstandard2.0 - false - true - True + netstandard2.0 true Preview enable Microsoft.Interop true true - - - Microsoft + + true + false + true https://github.com/dotnet/runtime/tree/main/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator - https://github.com/dotnet/runtime/ - false DllImportGenerator - Summary of changes made in this release of the package. - Copyright DllImportGenerator, analyzers - true + + true - - + - - + - + + - - True - True - Resources.resx - + + - - ResXFileCodeGenerator - Resources.Designer.cs - + - - - - - - - - - - diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportStubContext.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportStubContext.cs index 28136ba47c7b3e..1f6e7f16e09a9f 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportStubContext.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/DllImportStubContext.cs @@ -199,38 +199,27 @@ private static (ImmutableArray, IMarshallingGeneratorFactory) } else { - generatorFactory = new DefaultMarshallingGeneratorFactory(options); - IMarshallingGeneratorFactory elementFactory = new AttributedMarshallingModelGeneratorFactory(generatorFactory, options); - // We don't need to include the later generator factories for collection elements - // as the later generator factories only apply to parameters or to the synthetic return value for PreserveSig support. - generatorFactory = new AttributedMarshallingModelGeneratorFactory(generatorFactory, elementFactory, options); - if (!dllImportData.PreserveSig) + if (env.TargetFramework != TargetFramework.Net || env.TargetFrameworkVersion.Major < 7) { - // Create type info for native out param - if (!method.ReturnsVoid) - { - // Transform the managed return type info into an out parameter and add it as the last param - TypePositionInfo nativeOutInfo = retTypeInfo with - { - InstanceIdentifier = PInvokeStubCodeGenerator.ReturnIdentifier, - RefKind = RefKind.Out, - RefKindSyntax = SyntaxKind.OutKeyword, - ManagedIndex = TypePositionInfo.ReturnIndex, - NativeIndex = typeInfos.Count - }; - typeInfos.Add(nativeOutInfo); - } + // If we're using our downstream support, fall back to the Forwarder marshaller when the TypePositionInfo is unhandled. + generatorFactory = new ForwarderMarshallingGeneratorFactory(); + } + else + { + // If we're in a "supported" scenario, then emit a diagnostic as our final fallback. + generatorFactory = new UnsupportedMarshallingFactory(); + } - // Use a marshalling generator that supports the HRESULT return->exception marshalling. - generatorFactory = new NoPreserveSigMarshallingGeneratorFactory(generatorFactory); + generatorFactory = new MarshalAsMarshallingGeneratorFactory(options, generatorFactory); - // Create type info for native HRESULT return - retTypeInfo = new TypePositionInfo(SpecialTypeInfo.Int32, NoMarshallingInfo.Instance); - retTypeInfo = retTypeInfo with - { - NativeIndex = TypePositionInfo.ReturnIndex - }; - } + IAssemblySymbol coreLibraryAssembly = env.Compilation.GetSpecialType(SpecialType.System_Object).ContainingAssembly; + ITypeSymbol disabledRuntimeMarshallingAttributeType = coreLibraryAssembly.GetTypeByMetadataName(TypeNames.System_Runtime_CompilerServices_DisableRuntimeMarshallingAttribute); + bool runtimeMarshallingDisabled = env.Compilation.Assembly.GetAttributes().Any(attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, disabledRuntimeMarshallingAttributeType)); + + IMarshallingGeneratorFactory elementFactory = new AttributedMarshallingModelGeneratorFactory(generatorFactory, new AttributedMarshallingModelOptions(options, runtimeMarshallingDisabled)); + // We don't need to include the later generator factories for collection elements + // as the later generator factories only apply to parameters. + generatorFactory = new AttributedMarshallingModelGeneratorFactory(generatorFactory, elementFactory, new AttributedMarshallingModelOptions(options, runtimeMarshallingDisabled)); generatorFactory = new ByValueContentsMarshalKindValidator(generatorFactory); } diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/GeneratedDllImportData.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/GeneratedDllImportData.cs index 07d0ddeb1ab74b..bf1d5edc940630 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/GeneratedDllImportData.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/GeneratedDllImportData.cs @@ -18,8 +18,7 @@ public enum DllImportMember CharSet = 1 << 0, EntryPoint = 1 << 1, ExactSpelling = 1 << 2, - PreserveSig = 1 << 3, - SetLastError = 1 << 4, + SetLastError = 1 << 3, All = ~None } @@ -39,7 +38,6 @@ public sealed record GeneratedDllImportData(string ModuleName) public CharSet CharSet { get; init; } public string? EntryPoint { get; init; } public bool ExactSpelling { get; init; } - public bool PreserveSig { get; init; } public bool SetLastError { get; init; } } } diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/NoPreserveSigMarshallingGeneratorFactory.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/NoPreserveSigMarshallingGeneratorFactory.cs deleted file mode 100644 index d06e7db251cfd6..00000000000000 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/NoPreserveSigMarshallingGeneratorFactory.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Diagnostics; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.Interop -{ - internal class NoPreserveSigMarshallingGeneratorFactory : IMarshallingGeneratorFactory - { - private static readonly HResultExceptionMarshaller s_hResultException = new HResultExceptionMarshaller(); - private readonly IMarshallingGeneratorFactory _inner; - - public NoPreserveSigMarshallingGeneratorFactory(IMarshallingGeneratorFactory inner) - { - _inner = inner; - } - - public IMarshallingGenerator Create(TypePositionInfo info, StubCodeContext context) - { - if (info.IsNativeReturnPosition && !info.IsManagedReturnPosition) - { - // Use marshaller for native HRESULT return / exception throwing - System.Diagnostics.Debug.Assert(info.ManagedType.Equals(SpecialTypeInfo.Int32)); - return s_hResultException; - } - return _inner.Create(info, context); - } - } -} diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.Designer.cs b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.Designer.cs index 744f1b611be697..a8c33b93818ec0 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.Designer.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.Designer.cs @@ -510,6 +510,15 @@ internal static string RefValuePropertyUnsupportedMessage { } } + /// + /// Looks up a localized string similar to . + /// + internal static string RuntimeMarshallingMustBeDisabled { + get { + return ResourceManager.GetString("RuntimeMarshallingMustBeDisabled", resourceCulture); + } + } + /// /// Looks up a localized string similar to An abstract type derived from 'SafeHandle' cannot be marshalled by reference. The provided type must be concrete.. /// diff --git a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.resx b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.resx index c3f3d9694fc5a5..8a9d0f5b7e12e7 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.resx +++ b/src/libraries/System.Runtime.InteropServices/gen/DllImportGenerator/Resources.resx @@ -268,6 +268,9 @@ The 'Value' property on the native type '{0}' must not be a 'ref' or 'readonly ref' property. + + + An abstract type derived from 'SafeHandle' cannot be marshalled by reference. The provided type must be concrete. diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/InteropGenerationOptions.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/InteropGenerationOptions.cs index cb3f7dbe62ddb5..f0cd91ae0a01ce 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/InteropGenerationOptions.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/InteropGenerationOptions.cs @@ -7,5 +7,5 @@ namespace Microsoft.Interop { - public record InteropGenerationOptions(bool UseMarshalType, bool UseInternalUnsafeType); + public readonly record struct InteropGenerationOptions(bool UseMarshalType, bool UseInternalUnsafeType); } diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/AttributedMarshallingModelGeneratorFactory.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/AttributedMarshallingModelGeneratorFactory.cs index 844899ef7f247f..3484e427130155 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/AttributedMarshallingModelGeneratorFactory.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/AttributedMarshallingModelGeneratorFactory.cs @@ -9,6 +9,8 @@ namespace Microsoft.Interop { + public readonly record struct AttributedMarshallingModelOptions(InteropGenerationOptions InteropOptions, bool RuntimeMarshallingDisabled); + public class AttributedMarshallingModelGeneratorFactory : IMarshallingGeneratorFactory { private static readonly BlittableMarshaller s_blittable = new BlittableMarshaller(); @@ -19,7 +21,7 @@ public class AttributedMarshallingModelGeneratorFactory : IMarshallingGeneratorF public AttributedMarshallingModelGeneratorFactory( IMarshallingGeneratorFactory innerMarshallingGenerator, - InteropGenerationOptions options) + AttributedMarshallingModelOptions options) { Options = options; _innerMarshallingGenerator = innerMarshallingGenerator; @@ -30,7 +32,7 @@ public AttributedMarshallingModelGeneratorFactory( public AttributedMarshallingModelGeneratorFactory( IMarshallingGeneratorFactory innerMarshallingGenerator, IMarshallingGeneratorFactory elementMarshallingGenerator, - InteropGenerationOptions options) + AttributedMarshallingModelOptions options) { Options = options; _innerMarshallingGenerator = innerMarshallingGenerator; @@ -38,14 +40,21 @@ public AttributedMarshallingModelGeneratorFactory( _elementMarshallingGenerator = elementMarshallingGenerator; } - public InteropGenerationOptions Options { get; } + private AttributedMarshallingModelOptions Options { get; } public IMarshallingGenerator Create(TypePositionInfo info, StubCodeContext context) { return info.MarshallingAttributeInfo switch { - NativeMarshallingAttributeInfo marshalInfo => CreateCustomNativeTypeMarshaller(info, context, marshalInfo), - BlittableTypeAttributeInfo => s_blittable, + NativeMarshallingAttributeInfo marshalInfo when Options.RuntimeMarshallingDisabled => CreateCustomNativeTypeMarshaller(info, context, marshalInfo), + NativeMarshallingAttributeInfo { ValuePropertyType: SpecialTypeInfo specialType } marshalInfo when specialType.SpecialType.IsAlwaysBlittable() => CreateCustomNativeTypeMarshaller(info, context, marshalInfo), + NativeMarshallingAttributeInfo { ValuePropertyType: PointerTypeInfo } marshalInfo => CreateCustomNativeTypeMarshaller(info, context, marshalInfo), + UnmanagedBlittableMarshallingInfo when Options.RuntimeMarshallingDisabled => s_blittable, + UnmanagedBlittableMarshallingInfo or NativeMarshallingAttributeInfo when !Options.RuntimeMarshallingDisabled => + throw new MarshallingNotSupportedException(info, context) + { + NotSupportedDetails = Resources.RuntimeMarshallingMustBeDisabled + }, GeneratedNativeMarshallingAttributeInfo => s_forwarder, MissingSupportMarshallingInfo => s_forwarder, _ => _innerMarshallingGenerator.Create(info, context) @@ -286,7 +295,7 @@ private IMarshallingGenerator CreateNativeCollectionMarshaller( new CustomNativeTypeMarshallingGenerator(marshallingStrategy, enableByValueContentsMarshalling: true), elementType, isBlittable, - Options); + Options.InteropOptions); } IMarshallingGenerator marshallingGenerator = new CustomNativeTypeMarshallingGenerator(marshallingStrategy, enableByValueContentsMarshalling: false); diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/ByValueContentsMarshalKindValidator.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/ByValueContentsMarshalKindValidator.cs index 1d36a8789c9258..169911c3c92c35 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/ByValueContentsMarshalKindValidator.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/ByValueContentsMarshalKindValidator.cs @@ -26,6 +26,12 @@ public IMarshallingGenerator Create(TypePositionInfo info, StubCodeContext conte private static IMarshallingGenerator ValidateByValueMarshalKind(TypePositionInfo info, StubCodeContext context, IMarshallingGenerator generator) { + if (generator is Forwarder) + { + // Forwarder allows everything since it just forwards to a P/Invoke. + return generator; + } + if (info.IsByRef && info.ByValueContentsMarshalKind != ByValueContentsMarshalKind.Default) { throw new MarshallingNotSupportedException(info, context) diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/Forwarder.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/Forwarder.cs index 931fccaf1616ed..92533d720031e9 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/Forwarder.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/Forwarder.cs @@ -37,12 +37,35 @@ private bool TryRehydrateMarshalAsAttribute(TypePositionInfo info, out Attribute return true; } - if (info.MarshallingAttributeInfo is NativeContiguousCollectionMarshallingInfo collectionMarshalling - && collectionMarshalling.UseDefaultMarshalling - && collectionMarshalling.ElementCountInfo is NoCountInfo or SizeAndParamIndexInfo - && collectionMarshalling.ElementMarshallingInfo is NoMarshallingInfo or MarshalAsInfo { UnmanagedType: not UnmanagedType.CustomMarshaler } - && info.ManagedType is IArrayTypeSymbol) + if (info.ManagedType is SzArrayType) { + CountInfo countInfo; + MarshallingInfo elementMarshallingInfo; + if (info.MarshallingAttributeInfo is NativeContiguousCollectionMarshallingInfo collectionMarshalling + && collectionMarshalling.UseDefaultMarshalling + && collectionMarshalling.ElementCountInfo is NoCountInfo or SizeAndParamIndexInfo + && collectionMarshalling.ElementMarshallingInfo is NoMarshallingInfo or MarshalAsInfo { UnmanagedType: not UnmanagedType.CustomMarshaler } + ) + { + countInfo = collectionMarshalling.ElementCountInfo; + elementMarshallingInfo = collectionMarshalling.ElementMarshallingInfo; + } + else if (info.MarshallingAttributeInfo is MissingSupportCollectionMarshallingInfo missingSupport) + { + countInfo = missingSupport.CountInfo; + elementMarshallingInfo = missingSupport.ElementMarshallingInfo; + } + else + { + // This condition can be hit in two ways: + // 1. User uses the MarshalUsing attribute to provide count info or element marshalling information. + // Since the MarshalUsing attribute doesn't exist on downlevel platforms where we don't support arrays, + // this case is unlikely to come in supported scenarios, but could come up with a custom CoreLib implementation + // 2. User provides a MarsalAs attribute with the ArraySubType field set to UnmanagedType.CustomMarshaler + // As mentioned above, we don't support ICustomMarshaler in the generator so we fail to forward the attribute instead of partially fowarding it. + return false; + } + List marshalAsArguments = new List { AttributeArgument( @@ -51,17 +74,17 @@ private bool TryRehydrateMarshalAsAttribute(TypePositionInfo info, out Attribute Literal((int)UnmanagedType.LPArray)))) }; - if (collectionMarshalling.ElementCountInfo is SizeAndParamIndexInfo countInfo) + if (countInfo is SizeAndParamIndexInfo sizeParamIndex) { - if (countInfo.ConstSize != SizeAndParamIndexInfo.UnspecifiedConstSize) + if (sizeParamIndex.ConstSize != SizeAndParamIndexInfo.UnspecifiedConstSize) { marshalAsArguments.Add( AttributeArgument(NameEquals("SizeConst"), null, LiteralExpression(SyntaxKind.NumericLiteralExpression, - Literal(countInfo.ConstSize))) + Literal(sizeParamIndex.ConstSize))) ); } - if (countInfo.ParamAtIndex is { ManagedIndex: int paramIndex }) + if (sizeParamIndex.ParamAtIndex is { ManagedIndex: int paramIndex }) { marshalAsArguments.Add( AttributeArgument(NameEquals("SizeParamIndex"), null, @@ -71,7 +94,7 @@ private bool TryRehydrateMarshalAsAttribute(TypePositionInfo info, out Attribute } } - if (collectionMarshalling.ElementMarshallingInfo is MarshalAsInfo elementMarshalAs) + if (elementMarshallingInfo is MarshalAsInfo elementMarshalAs) { marshalAsArguments.Add( AttributeArgument(NameEquals("ArraySubType"), null, @@ -94,9 +117,23 @@ public ParameterSyntax AsParameter(TypePositionInfo info) .WithModifiers(TokenList(Token(info.RefKindSyntax))) .WithType(info.ManagedType.Syntax); + List rehydratedAttributes = new(); if (TryRehydrateMarshalAsAttribute(info, out AttributeSyntax marshalAsAttribute)) { - param = param.AddAttributeLists(AttributeList(SingletonSeparatedList(marshalAsAttribute))); + rehydratedAttributes.Add(marshalAsAttribute); + } + if (info.ByValueContentsMarshalKind.HasFlag(ByValueContentsMarshalKind.In)) + { + rehydratedAttributes.Add(Attribute(IdentifierName(TypeNames.System_Runtime_InteropServices_InAttribute))); + } + if (info.ByValueContentsMarshalKind.HasFlag(ByValueContentsMarshalKind.Out)) + { + rehydratedAttributes.Add(Attribute(IdentifierName(TypeNames.System_Runtime_InteropServices_OutAttribute))); + } + + if (rehydratedAttributes.Count > 0) + { + param = param.AddAttributeLists(AttributeList(SeparatedList(rehydratedAttributes))); } return param; diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/HResultExceptionMarshaller.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/HResultExceptionMarshaller.cs deleted file mode 100644 index cb32ee3b33cc70..00000000000000 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/HResultExceptionMarshaller.cs +++ /dev/null @@ -1,53 +0,0 @@ -// 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.Diagnostics; -using System.Collections.Generic; - -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; - -namespace Microsoft.Interop -{ - public sealed class HResultExceptionMarshaller : IMarshallingGenerator - { - private static readonly TypeSyntax s_nativeType = PredefinedType(Token(SyntaxKind.IntKeyword)); - - public bool IsSupported(TargetFramework target, Version version) => true; - - public TypeSyntax AsNativeType(TypePositionInfo info) - { - Debug.Assert(info.ManagedType is SpecialTypeInfo(_, _, SpecialType.System_Int32)); - return s_nativeType; - } - - // Should only be used for return value - public ParameterSyntax AsParameter(TypePositionInfo info) => throw new InvalidOperationException(); - public ArgumentSyntax AsArgument(TypePositionInfo info, StubCodeContext context) => throw new InvalidOperationException(); - - public IEnumerable Generate(TypePositionInfo info, StubCodeContext context) - { - if (context.CurrentStage != StubCodeContext.Stage.Unmarshal) - yield break; - - // Marshal.ThrowExceptionForHR() - string identifier = context.GetIdentifiers(info).managed; - yield return ExpressionStatement( - InvocationExpression( - MemberAccessExpression( - SyntaxKind.SimpleMemberAccessExpression, - MarshallerHelpers.InteropServicesMarshalType, - IdentifierName(nameof(System.Runtime.InteropServices.Marshal.ThrowExceptionForHR))), - ArgumentList(SingletonSeparatedList( - Argument(IdentifierName(identifier)))))); - } - - public bool UsesNativeIdentifier(TypePositionInfo info, StubCodeContext context) => false; - - public bool SupportsByValueMarshalKind(ByValueContentsMarshalKind marshalKind, StubCodeContext context) => false; - } - -} diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/IMarshallingGeneratorFactory.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/IMarshallingGeneratorFactory.cs new file mode 100644 index 00000000000000..faab7391260df1 --- /dev/null +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/IMarshallingGeneratorFactory.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Runtime.InteropServices; +using Microsoft.CodeAnalysis; + +namespace Microsoft.Interop +{ + public interface IMarshallingGeneratorFactory + { + /// + /// Create an instance for marshalling the supplied type in the given position. + /// + /// Type details + /// Metadata about the stub the type is associated with + /// A instance. + public IMarshallingGenerator Create( + TypePositionInfo info, + StubCodeContext context); + } +} diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshallingGeneratorFactory.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshalAsMarshallingGeneratorFactory.cs similarity index 93% rename from src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshallingGeneratorFactory.cs rename to src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshalAsMarshallingGeneratorFactory.cs index 2170b4978b9d16..ca61227661f00b 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshallingGeneratorFactory.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/MarshalAsMarshallingGeneratorFactory.cs @@ -6,20 +6,7 @@ namespace Microsoft.Interop { - public interface IMarshallingGeneratorFactory - { - /// - /// Create an instance for marshalling the supplied type in the given position. - /// - /// Type details - /// Metadata about the stub the type is associated with - /// A instance. - public IMarshallingGenerator Create( - TypePositionInfo info, - StubCodeContext context); - } - - public sealed class DefaultMarshallingGeneratorFactory : IMarshallingGeneratorFactory + public sealed class MarshalAsMarshallingGeneratorFactory : IMarshallingGeneratorFactory { private static readonly ByteBoolMarshaller s_byteBool = new(); private static readonly WinBoolMarshaller s_winBool = new(); @@ -36,10 +23,12 @@ public sealed class DefaultMarshallingGeneratorFactory : IMarshallingGeneratorFa private static readonly DelegateMarshaller s_delegate = new(); private static readonly SafeHandleMarshaller s_safeHandle = new(); private InteropGenerationOptions Options { get; } + private IMarshallingGeneratorFactory InnerFactory { get; } - public DefaultMarshallingGeneratorFactory(InteropGenerationOptions options) + public MarshalAsMarshallingGeneratorFactory(InteropGenerationOptions options, IMarshallingGeneratorFactory inner) { Options = options; + InnerFactory = inner; } /// @@ -123,7 +112,7 @@ public IMarshallingGenerator Create( return s_forwarder; default: - throw new MarshallingNotSupportedException(info, context); + return InnerFactory.Create(info, context); } } diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/UnsupportedMarshallingFactory.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/UnsupportedMarshallingFactory.cs new file mode 100644 index 00000000000000..a12f702e1f7f40 --- /dev/null +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Marshalling/UnsupportedMarshallingFactory.cs @@ -0,0 +1,18 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Runtime.InteropServices; +using Microsoft.CodeAnalysis; + +namespace Microsoft.Interop +{ + public sealed class UnsupportedMarshallingFactory : IMarshallingGeneratorFactory + { + public IMarshallingGenerator Create( + TypePositionInfo info, + StubCodeContext context) + { + throw new MarshallingNotSupportedException(info, context); + } + } +} diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/MarshallingAttributeInfo.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/MarshallingAttributeInfo.cs index d1f659d125bb88..c151607c9721d6 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/MarshallingAttributeInfo.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/MarshallingAttributeInfo.cs @@ -49,12 +49,7 @@ private NoMarshallingInfo() { } /// An indication of "missing support" will trigger the fallback logic, which is /// the forwarder marshaler. /// - public sealed record MissingSupportMarshallingInfo : MarshallingInfo - { - public static readonly MarshallingInfo Instance = new MissingSupportMarshallingInfo(); - - private MissingSupportMarshallingInfo() { } - } + public record MissingSupportMarshallingInfo : MarshallingInfo; /// /// Character encoding enumeration. @@ -85,11 +80,9 @@ public sealed record MarshalAsInfo( } /// - /// User-applied System.Runtime.InteropServices.BlittableTypeAttribute - /// or System.Runtime.InteropServices.GeneratedMarshallingAttribute on a blittable type - /// in source in this compilation. + /// The provided type was determined to be an "unmanaged" type that can be passed as-is to native code. /// - public sealed record BlittableTypeAttributeInfo : MarshallingInfo; + public sealed record UnmanagedBlittableMarshallingInfo : MarshallingInfo; [Flags] public enum CustomMarshallingFeatures @@ -170,6 +163,18 @@ public sealed record NativeContiguousCollectionMarshallingInfo( UseDefaultMarshalling ); + + /// + /// Marshalling information is lacking because of support not because it is + /// unknown or non-existent. Includes information about element types in case + /// we need to rehydrate the marshalling info into an attribute for the fallback marshaller. + /// + /// + /// An indication of "missing support" will trigger the fallback logic, which is + /// the forwarder marshaler. + /// + public sealed record MissingSupportCollectionMarshallingInfo(CountInfo CountInfo, MarshallingInfo ElementMarshallingInfo) : MissingSupportMarshallingInfo; + public sealed class MarshallingAttributeInfoParser { private readonly Compilation _compilation; @@ -288,16 +293,7 @@ private MarshallingInfo GetMarshallingInfo( { INamedTypeSymbol attributeClass = typeAttribute.AttributeClass!; - if (SymbolEqualityComparer.Default.Equals(_compilation.GetTypeByMetadataName(TypeNames.BlittableTypeAttribute), attributeClass)) - { - // If type is generic, then we need to re-evaluate that it is blittable at usage time. - if (type is INamedTypeSymbol { IsGenericType: false } || type.HasOnlyBlittableFields()) - { - return new BlittableTypeAttributeInfo(); - } - break; - } - else if (SymbolEqualityComparer.Default.Equals(_compilation.GetTypeByMetadataName(TypeNames.NativeMarshallingAttribute), attributeClass)) + if (attributeClass.ToDisplayString() == TypeNames.NativeMarshallingAttribute) { return CreateNativeMarshallingInfo( type, @@ -309,9 +305,9 @@ private MarshallingInfo GetMarshallingInfo( inspectedElements, ref maxIndirectionLevelUsed); } - else if (SymbolEqualityComparer.Default.Equals(_compilation.GetTypeByMetadataName(TypeNames.GeneratedMarshallingAttribute), attributeClass)) + else if (attributeClass.ToDisplayString() == TypeNames.GeneratedMarshallingAttribute) { - return type.IsConsideredBlittable() ? new BlittableTypeAttributeInfo() : new GeneratedNativeMarshallingAttributeInfo(null! /* TODO: determine naming convention */); + return type.IsConsideredBlittable() ? GetBlittableMarshallingInfo(type) : new GeneratedNativeMarshallingAttributeInfo(null! /* TODO: determine naming convention */); } } @@ -329,15 +325,6 @@ private MarshallingInfo GetMarshallingInfo( return infoMaybe; } - // No marshalling info was computed, but a character encoding was provided. - // If the type is a character or string then pass on these details. - if (_defaultInfo.CharEncoding != CharEncoding.Undefined - && (type.SpecialType == SpecialType.System_Char - || type.SpecialType == SpecialType.System_String)) - { - return new MarshallingInfoStringSupport(_defaultInfo.CharEncoding); - } - return NoMarshallingInfo.Instance; } @@ -563,7 +550,7 @@ private MarshallingInfo CreateInfoFromMarshalAs( if (arrayMarshaller is null) { // If the array marshaler type is not available, then we cannot marshal arrays but indicate it is missing. - return MissingSupportMarshallingInfo.Instance; + return new MissingSupportCollectionMarshallingInfo(arraySizeInfo, elementMarshallingInfo); } ITypeSymbol? valuePropertyType = ManualTypeMarshallingHelper.FindValueProperty(arrayMarshaller)?.Type; @@ -724,25 +711,30 @@ private bool TryCreateTypeBasedMarshallingInfo( out MarshallingInfo marshallingInfo) { // Check for an implicit SafeHandle conversion. - CodeAnalysis.Operations.CommonConversion conversion = _compilation.ClassifyCommonConversion(type, _compilation.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_SafeHandle)!); - if (conversion.Exists - && conversion.IsImplicit - && (conversion.IsReference || conversion.IsIdentity)) - { - bool hasAccessibleDefaultConstructor = false; - if (type is INamedTypeSymbol named && !named.IsAbstract && named.InstanceConstructors.Length > 0) + // The SafeHandle type might not be defined if we're using one of the test CoreLib implementations used for NativeAOT. + ITypeSymbol? safeHandleType = _compilation.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_SafeHandle); + if (safeHandleType is not null) + { + CodeAnalysis.Operations.CommonConversion conversion = _compilation.ClassifyCommonConversion(type, safeHandleType); + if (conversion.Exists + && conversion.IsImplicit + && (conversion.IsReference || conversion.IsIdentity)) { - foreach (IMethodSymbol ctor in named.InstanceConstructors) + bool hasAccessibleDefaultConstructor = false; + if (type is INamedTypeSymbol named && !named.IsAbstract && named.InstanceConstructors.Length > 0) { - if (ctor.Parameters.Length == 0) + foreach (IMethodSymbol ctor in named.InstanceConstructors) { - hasAccessibleDefaultConstructor = _compilation.IsSymbolAccessibleWithin(ctor, _contextSymbol.ContainingType); - break; + if (ctor.Parameters.Length == 0) + { + hasAccessibleDefaultConstructor = _compilation.IsSymbolAccessibleWithin(ctor, _contextSymbol.ContainingType); + break; + } } } + marshallingInfo = new SafeHandleMarshallingInfo(hasAccessibleDefaultConstructor, type.IsAbstract); + return true; } - marshallingInfo = new SafeHandleMarshallingInfo(hasAccessibleDefaultConstructor, type.IsAbstract); - return true; } if (type is IArrayTypeSymbol { ElementType: ITypeSymbol elementType }) @@ -761,7 +753,7 @@ private bool TryCreateTypeBasedMarshallingInfo( if (arrayMarshaller is null) { // If the array marshaler type is not available, then we cannot marshal arrays but indicate it is missing. - marshallingInfo = MissingSupportMarshallingInfo.Instance; + marshallingInfo = new MissingSupportCollectionMarshallingInfo(parsedCountInfo, GetMarshallingInfo(elementType, useSiteAttributes, indirectionLevel + 1, inspectedElements, ref maxIndirectionLevelUsed)); return true; } @@ -778,12 +770,20 @@ private bool TryCreateTypeBasedMarshallingInfo( return true; } - if (type is INamedTypeSymbol { IsValueType: true } valueType - && !valueType.IsExposedOutsideOfCurrentCompilation() - && valueType.IsConsideredBlittable()) + // No marshalling info was computed, but a character encoding was provided. + // If the type is a character or string then pass on these details. + if (_defaultInfo.CharEncoding != CharEncoding.Undefined + && (type.SpecialType == SpecialType.System_Char + || type.SpecialType == SpecialType.System_String)) + { + marshallingInfo = new MarshallingInfoStringSupport(_defaultInfo.CharEncoding); + return true; + } + + if (type is INamedTypeSymbol { IsUnmanagedType: true } unmanagedType + && unmanagedType.IsConsideredBlittable()) { - // Allow implicit [BlittableType] on internal value types. - marshallingInfo = new BlittableTypeAttributeInfo(); + marshallingInfo = GetBlittableMarshallingInfo(type); return true; } @@ -791,6 +791,28 @@ private bool TryCreateTypeBasedMarshallingInfo( return false; } + private MarshallingInfo GetBlittableMarshallingInfo(ITypeSymbol type) + { + if (type.TypeKind is TypeKind.Enum or TypeKind.Pointer or TypeKind.FunctionPointer + || type.SpecialType.IsAlwaysBlittable() + || type.SpecialType == SpecialType.System_Boolean) + { + // Treat primitive types and enums as having no marshalling info. + // They are supported in configurations where runtime marshalling is enabled. + return NoMarshallingInfo.Instance; + } + + else if (_compilation.GetTypeByMetadataName(TypeNames.System_Runtime_CompilerServices_DisableRuntimeMarshallingAttribute) is null) + { + // If runtime marshalling cannot be disabled, then treat this as a "missing support" scenario so we can gracefully fall back to using the fowarder downlevel. + return new MissingSupportMarshallingInfo(); + } + else + { + return new UnmanagedBlittableMarshallingInfo(); + } + } + private bool TryGetAttributeIndirectionLevel(AttributeData attrData, out int indirectionLevel) { if (SymbolEqualityComparer.Default.Equals(attrData.AttributeClass, _marshalAsAttribute)) diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Microsoft.Interop.SourceGeneration.csproj b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Microsoft.Interop.SourceGeneration.csproj index f5148d44941f1a..a542f34e721741 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Microsoft.Interop.SourceGeneration.csproj +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Microsoft.Interop.SourceGeneration.csproj @@ -1,31 +1,29 @@ - + - netstandard2.0 - false + netstandard2.0 enable Microsoft.Interop true - - + - - Resources.resx - True - True - + - - - Designer - Resources.Designer.cs - ResXFileCodeGenerator - + + + + diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.Designer.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.Designer.cs index 1d254e29a5c230..499ffc63bca17e 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.Designer.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.Designer.cs @@ -303,6 +303,15 @@ internal static string RefValuePropertyUnsupportedMessage { } } + /// + /// Looks up a localized string similar to Runtime marshalling must be disabled in this project by applying the 'System.Runtime.InteropServices.DisableRuntimeMarshallingAttribute' to the assembly to enable marshalling this type.. + /// + internal static string RuntimeMarshallingMustBeDisabled { + get { + return ResourceManager.GetString("RuntimeMarshallingMustBeDisabled", resourceCulture); + } + } + /// /// Looks up a localized string similar to An abstract type derived from 'SafeHandle' cannot be marshalled by reference. The provided type must be concrete.. /// diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.resx b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.resx index 544a1ea46a212a..3b0e3a125213a9 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.resx +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/Resources.resx @@ -219,4 +219,7 @@ Only one of 'ConstantElementCount' or 'ElementCountInfo' may be used in a 'MarshalUsingAttribute' for a given 'ElementIndirectionLevel' + + Runtime marshalling must be disabled in this project by applying the 'System.Runtime.InteropServices.DisableRuntimeMarshallingAttribute' to the assembly to enable marshalling this type. + \ No newline at end of file diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeNames.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeNames.cs index 1925d2ece51bbf..8111b0787bc88a 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeNames.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeNames.cs @@ -16,8 +16,6 @@ public static class TypeNames public const string GeneratedMarshallingAttribute = "System.Runtime.InteropServices.GeneratedMarshallingAttribute"; - public const string BlittableTypeAttribute = "System.Runtime.InteropServices.BlittableTypeAttribute"; - public const string NativeMarshallingAttribute = "System.Runtime.InteropServices.NativeMarshallingAttribute"; public const string MarshalUsingAttribute = "System.Runtime.InteropServices.MarshalUsingAttribute"; @@ -75,5 +73,7 @@ public static string Unsafe(InteropGenerationOptions options) { return options.UseInternalUnsafeType ? Internal_Runtime_CompilerServices_Unsafe : System_Runtime_CompilerServices_Unsafe; } + + public const string System_Runtime_CompilerServices_DisableRuntimeMarshallingAttribute = "System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute"; } } diff --git a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeSymbolExtensions.cs b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeSymbolExtensions.cs index 4f5aaf0cc7d7fc..c03e880f124b66 100644 --- a/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeSymbolExtensions.cs +++ b/src/libraries/System.Runtime.InteropServices/gen/Microsoft.Interop.SourceGeneration/TypeSymbolExtensions.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; +using System.Linq; using System.Runtime.InteropServices; using Microsoft.CodeAnalysis; @@ -18,9 +19,8 @@ private static bool HasOnlyBlittableFields(this ITypeSymbol type, ImmutableHashS { if (seenTypes.Contains(type)) { - // A recursive struct type isn't blittable. - // It's also illegal in C#, but I believe that source generators run - // before that is detected, so we check here to avoid a stack overflow. + // A recursive struct type is illegal in C#, but source generators run before that is detected, + // so we check here to avoid a stack overflow. return false; } @@ -30,14 +30,10 @@ private static bool HasOnlyBlittableFields(this ITypeSymbol type, ImmutableHashS { bool fieldBlittable = field switch { - { Type: { IsReferenceType: true } } => false, - { Type: IPointerTypeSymbol ptr } => true, - { Type: IFunctionPointerTypeSymbol } => true, - not { Type: { SpecialType: SpecialType.None } } => IsSpecialTypeBlittable(field.Type.SpecialType), // Assume that type parameters that can be blittable are blittable. // We'll re-evaluate blittability for generic fields of generic types at instantation time. - { Type: ITypeParameterSymbol } => true, - { Type: { IsValueType: false } } => false, + { Type: ITypeParameterSymbol { IsReferenceType: false } } => true, + { Type.IsUnmanagedType: false } => false, _ => IsConsideredBlittable(field.Type, seenTypes.Add(type)) }; @@ -51,107 +47,42 @@ private static bool HasOnlyBlittableFields(this ITypeSymbol type, ImmutableHashS return true; } - private static bool IsSpecialTypeBlittable(SpecialType specialType) - => specialType switch - { - SpecialType.System_Void - or SpecialType.System_SByte - or SpecialType.System_Byte - or SpecialType.System_Int16 - or SpecialType.System_UInt16 - or SpecialType.System_Int32 - or SpecialType.System_UInt32 - or SpecialType.System_Int64 - or SpecialType.System_UInt64 - or SpecialType.System_Single - or SpecialType.System_Double - or SpecialType.System_IntPtr - or SpecialType.System_UIntPtr => true, - _ => false - }; - public static bool IsConsideredBlittable(this ITypeSymbol type) => IsConsideredBlittable(type, ImmutableHashSet.Create(SymbolEqualityComparer.Default)); private static bool IsConsideredBlittable(this ITypeSymbol type, ImmutableHashSet seenTypes) { - if (type.SpecialType != SpecialType.None) - { - return IsSpecialTypeBlittable(type.SpecialType); - } - - if (type.TypeKind is TypeKind.FunctionPointer or TypeKind.Pointer) - { - return true; - } - - if (type.IsReferenceType) + if (!type.IsUnmanagedType || type.IsAutoLayout()) { return false; } - if (type is INamedTypeSymbol { TypeKind: TypeKind.Enum, EnumUnderlyingType: ITypeSymbol underlyingType }) - { - return underlyingType.IsConsideredBlittable(seenTypes); - } - - bool hasNativeMarshallingAttribute = false; - bool hasGeneratedMarshallingAttribute = false; - // [TODO]: Match attributes on full name or symbol, not just on type name. foreach (AttributeData attr in type.GetAttributes()) { if (attr.AttributeClass is null) { continue; } - if (attr.AttributeClass.Name == "BlittableTypeAttribute") + else if (attr.AttributeClass.ToDisplayString() == "System.Runtime.InteropServices.GeneratedMarshallingAttribute") { - if (type is INamedTypeSymbol { IsGenericType: true } generic) - { - // If the type is generic, we inspect the fields again - // to determine blittability of this instantiation - // since we are guaranteed that if a type has generic fields, - // they will be present in the contract assembly to ensure - // that recursive structs can be identified at build time. - return generic.HasOnlyBlittableFields(seenTypes); - } - return true; - } - else if (attr.AttributeClass.Name == "GeneratedMarshallingAttribute") - { - hasGeneratedMarshallingAttribute = true; + // If we have generated struct marshalling, + // then the generated marshalling will be non-blittable when one of the fields is not unmanaged. + return type.HasOnlyBlittableFields(seenTypes); } - else if (attr.AttributeClass.Name == "NativeMarshallingAttribute") + else if (attr.AttributeClass.ToDisplayString() == "System.Runtime.InteropServices.NativeMarshallingAttribute") { - hasNativeMarshallingAttribute = true; + return false; } } - - if (hasGeneratedMarshallingAttribute && !hasNativeMarshallingAttribute) - { - // The struct type has generated marshalling via a source generator. - // We can't guarantee that we can see the results of the struct source generator, - // so we re-calculate if the type is blittable here. - return type.HasOnlyBlittableFields(seenTypes); - } - - if (type is INamedTypeSymbol namedType - && namedType.DeclaringSyntaxReferences.Length != 0 - && !namedType.IsExposedOutsideOfCurrentCompilation()) - { - // If a type is declared in the current compilation and not exposed outside of it, - // we will allow it to be considered blittable if its fields are considered blittable. - return type.HasOnlyBlittableFields(seenTypes); - } - return false; + return true; } - public static bool IsAutoLayout(this INamedTypeSymbol type, ITypeSymbol structLayoutAttributeType) + public static bool IsAutoLayout(this ITypeSymbol type) { foreach (AttributeData attr in type.GetAttributes()) { - if (SymbolEqualityComparer.Default.Equals(structLayoutAttributeType, attr.AttributeClass)) + if (attr.AttributeClass.ToDisplayString() == "System.Runtime.InteropServices.StructLayoutAttribute") { - return (LayoutKind)(int)attr.ConstructorArguments[0].Value! == LayoutKind.Auto; + return attr.ConstructorArguments.Length == 1 && (LayoutKind)(int)attr.ConstructorArguments[0].Value! == LayoutKind.Auto; } } return type.IsReferenceType; @@ -164,9 +95,7 @@ public static TypeSyntax AsTypeSyntax(this ITypeSymbol type) public static bool IsIntegralType(this SpecialType type) { - return type switch - { - SpecialType.System_SByte + return type is SpecialType.System_SByte or SpecialType.System_Byte or SpecialType.System_Int16 or SpecialType.System_UInt16 @@ -175,23 +104,24 @@ or SpecialType.System_UInt32 or SpecialType.System_Int64 or SpecialType.System_UInt64 or SpecialType.System_IntPtr - or SpecialType.System_UIntPtr => true, - _ => false - }; + or SpecialType.System_UIntPtr; } - public static bool IsExposedOutsideOfCurrentCompilation(this INamedTypeSymbol type) + public static bool IsAlwaysBlittable(this SpecialType type) { - for (; type is not null; type = type.ContainingType) - { - Accessibility accessibility = type.DeclaredAccessibility; - - if (accessibility is Accessibility.Internal or Accessibility.ProtectedAndInternal or Accessibility.Private or Accessibility.Friend or Accessibility.ProtectedAndFriend) - { - return false; - } - } - return true; + return type is SpecialType.System_Void + or SpecialType.System_SByte + or SpecialType.System_Byte + or SpecialType.System_Int16 + or SpecialType.System_UInt16 + or SpecialType.System_Int32 + or SpecialType.System_UInt32 + or SpecialType.System_Int64 + or SpecialType.System_UInt64 + or SpecialType.System_IntPtr + or SpecialType.System_UIntPtr + or SpecialType.System_Single + or SpecialType.System_Double; } } } diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj index 94877b6888cce9..5fdc0af1b9630d 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/DllImportGenerator.Tests.csproj @@ -9,6 +9,11 @@ false + + + + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/PreserveSigTests.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/PreserveSigTests.cs deleted file mode 100644 index ee1f351e66f9fc..00000000000000 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/PreserveSigTests.cs +++ /dev/null @@ -1,267 +0,0 @@ -// 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.Runtime.InteropServices; - -using Xunit; - -namespace DllImportGenerator.IntegrationTests -{ - partial class NativeExportsNE - { - public partial class PreserveSig - { - public partial class False - { - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_return", PreserveSig = false)] - public static partial void NoReturnValue(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int", PreserveSig = false)] - public static partial void Int_Out(int i, out int ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int", PreserveSig = false)] - public static partial int Int_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int", PreserveSig = false)] - public static partial void Bool_Out(int i, [MarshalAs(UnmanagedType.U4)] out bool ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int", PreserveSig = false)] - [return: MarshalAs(UnmanagedType.U4)] - public static partial bool Bool_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort", PreserveSig = false)] - public static partial void Char_Out(int i, [MarshalAs(UnmanagedType.U2)] out char ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort", PreserveSig = false)] - [return: MarshalAs(UnmanagedType.U2)] - public static partial char Char_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort_string", PreserveSig = false)] - public static partial void String_Out(int i, [MarshalAs(UnmanagedType.LPWStr)] out string ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort_string", PreserveSig = false)] - [return: MarshalAs(UnmanagedType.LPWStr)] - public static partial string String_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int_array", PreserveSig = false)] - public static partial void IntArray_Out(int i, [MarshalAs(UnmanagedType.LPArray, SizeConst = sizeof(int))] out int[] ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int_array", PreserveSig = false)] - [return: MarshalAs(UnmanagedType.LPArray, SizeConst = sizeof(int))] - public static partial int[] IntArray_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort_string_array", PreserveSig = false)] - public static partial void StringArray_Out(int i, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeConst = sizeof(int))] out string[] ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_ushort_string_array", PreserveSig = false)] - [return: MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeConst = sizeof(int))] - public static partial string[] StringArray_AsReturn(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_handle", PreserveSig = false)] - public static partial void SafeHandle_Out(int hr, out DummySafeHandle ret); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_handle", PreserveSig = false)] - public static partial DummySafeHandle SafeHandle_AsReturn(int hr); - - } - - public class DummySafeHandle : Microsoft.Win32.SafeHandles.SafeHandleMinusOneIsInvalid - { - private DummySafeHandle() : base(ownsHandle: true) { } - protected override bool ReleaseHandle() => true; - } - - public partial class True - { - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_return", PreserveSig = true)] - public static partial int NoReturnValue(int i); - - [GeneratedDllImport(NativeExportsNE_Binary, EntryPoint = "hresult_out_int", PreserveSig = true)] - public static partial int Int_Out(int i, out int ret); - } - } - } - - public class PreserveSigTests - { - private const int E_INVALIDARG = unchecked((int)0x80070057); - private const int COR_E_NOTSUPPORTED = unchecked((int)0x80131515); - private const int S_OK = 0; - private const int S_FALSE = 1; - - [Theory] - [InlineData(E_INVALIDARG)] - [InlineData(COR_E_NOTSUPPORTED)] - [InlineData(-1)] - public void PreserveSigFalse_Error(int input) - { - Exception exception = Marshal.GetExceptionForHR(input); - Assert.NotNull(exception); - - int expectedHR = input; - var exceptionType = exception.GetType(); - Assert.Equal(expectedHR, exception.HResult); - Exception ex; - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.NoReturnValue(input)); - Assert.Equal(expectedHR, ex.HResult); - - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Int_Out(input, out int ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Int_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Bool_Out(input, out bool ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Bool_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Char_Out(input, out char ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.Char_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.String_Out(input, out string ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.String_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.IntArray_Out(input, out int[] ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.IntArray_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.StringArray_Out(input, out string[] ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.StringArray_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - { - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.SafeHandle_Out(input, out NativeExportsNE.PreserveSig.DummySafeHandle ret)); - Assert.Equal(expectedHR, ex.HResult); - - ex = Assert.Throws(exceptionType, () => NativeExportsNE.PreserveSig.False.SafeHandle_AsReturn(input)); - Assert.Equal(expectedHR, ex.HResult); - } - } - - [Theory] - [InlineData(S_OK)] - [InlineData(S_FALSE)] - [InlineData(10)] - public void PreserveSigFalse_Success(int input) - { - Assert.True(input >= 0); - - NativeExportsNE.PreserveSig.False.NoReturnValue(input); - - { - int expected = input; - - int ret; - NativeExportsNE.PreserveSig.False.Int_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.Int_AsReturn(input); - Assert.Equal(expected, ret); - } - { - bool expected = input != 0; - - bool ret; - NativeExportsNE.PreserveSig.False.Bool_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.Bool_AsReturn(input); - Assert.Equal(expected, ret); - } - { - char expected = (char)input; - - char ret; - NativeExportsNE.PreserveSig.False.Char_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.Char_AsReturn(input); - Assert.Equal(expected, ret); - } - { - string expected = input.ToString(); - - string ret; - NativeExportsNE.PreserveSig.False.String_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.String_AsReturn(input); - Assert.Equal(expected, ret); - } - { - int[] expected = new int[sizeof(int)]; - Array.Fill(expected, input); - - int[] ret; - NativeExportsNE.PreserveSig.False.IntArray_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.IntArray_AsReturn(input); - Assert.Equal(expected, ret); - } - { - string[] expected = new string[sizeof(int)]; - Array.Fill(expected, input.ToString()); - - string[] ret; - NativeExportsNE.PreserveSig.False.StringArray_Out(input, out ret); - Assert.Equal(expected, ret); - - ret = NativeExportsNE.PreserveSig.False.StringArray_AsReturn(input); - Assert.Equal(expected, ret); - } - { - nint expected = input; - - NativeExportsNE.PreserveSig.DummySafeHandle ret; - NativeExportsNE.PreserveSig.False.SafeHandle_Out(input, out ret); - Assert.Equal(expected, (nint)ret.DangerousGetHandle()); - ret.Dispose(); - - ret = NativeExportsNE.PreserveSig.False.SafeHandle_AsReturn(input); - Assert.Equal(expected, (nint)ret.DangerousGetHandle()); - ret.Dispose(); - } - } - - [Theory] - [InlineData(S_OK)] - [InlineData(S_FALSE)] - [InlineData(E_INVALIDARG)] - [InlineData(COR_E_NOTSUPPORTED)] - [InlineData(-1)] - public void PreserveSigTrue(int input) - { - int expected = input; - int hr; - - hr = NativeExportsNE.PreserveSig.True.NoReturnValue(input); - Assert.Equal(expected, hr); - - int ret; - hr = NativeExportsNE.PreserveSig.True.Int_Out(input, out ret); - Assert.Equal(expected, hr); - Assert.Equal(expected, ret); - } - } -} diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/SetLastErrorTests.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/SetLastErrorTests.cs index 4f05e0e568e88c..a12cdd2245a309 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/SetLastErrorTests.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.Tests/SetLastErrorTests.cs @@ -8,7 +8,6 @@ namespace DllImportGenerator.IntegrationTests { - [BlittableType] public struct SetLastErrorMarshaller { public int val; diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AdditionalAttributesOnStub.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AdditionalAttributesOnStub.cs index 803904a9f98818..640ee220f088bf 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AdditionalAttributesOnStub.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AdditionalAttributesOnStub.cs @@ -17,7 +17,9 @@ public class AdditionalAttributesOnStub public async Task SkipLocalsInitAdded() { string source = @" +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] partial class C { [GeneratedDllImportAttribute(""DoesNotExist"")] @@ -66,7 +68,7 @@ public static IEnumerable GetDownlevelTargetFrameworks() { yield return new object[] { TestTargetFramework.Net, true }; yield return new object[] { TestTargetFramework.Net6, true }; - yield return new object[] { TestTargetFramework.Net5, false }; + yield return new object[] { TestTargetFramework.Net5, true }; yield return new object[] { TestTargetFramework.Core, false }; yield return new object[] { TestTargetFramework.Standard, false }; yield return new object[] { TestTargetFramework.Framework, false }; @@ -79,28 +81,10 @@ public async Task SkipLocalsInitOnDownlevelTargetFrameworks(TestTargetFramework string source = $@" using System.Runtime.InteropServices; {CodeSnippets.GeneratedDllImportAttributeDeclaration} -namespace System.Runtime.InteropServices -{{ - sealed class NativeMarshallingAttribute : System.Attribute - {{ - public NativeMarshallingAttribute(System.Type nativeType) {{ }} - }} -}} partial class C {{ [GeneratedDllImportAttribute(""DoesNotExist"")] - public static partial S Method(); -}} - -[NativeMarshalling(typeof(Native))] -struct S -{{ -}} - -struct Native -{{ - public Native(S s) {{ }} - public S ToManaged() {{ return default; }} + public static partial bool Method(); }}"; Compilation comp = await TestUtils.CreateCompilation(source, targetFramework); diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AttributeForwarding.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AttributeForwarding.cs index 70090ee6dcbc95..978bf1c4ca8f79 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AttributeForwarding.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/AttributeForwarding.cs @@ -3,9 +3,12 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.Interop; using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Xunit; @@ -20,7 +23,9 @@ public class AttributeForwarding public async Task KnownParameterlessAttribute(string attributeSourceName, string attributeMetadataName) { string source = @$" +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] partial class C {{ [{attributeSourceName}] @@ -59,7 +64,9 @@ public async Task UnmanagedCallConvAttribute_EmptyCallConvArray() { string source = @" using System; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] partial class C { [UnmanagedCallConv(CallConvs = new Type[0])] @@ -102,6 +109,7 @@ public async Task UnmanagedCallConvAttribute_SingleCallConvType() string source = @" using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] partial class C { [UnmanagedCallConv(CallConvs = new[]{typeof(CallConvStdcall)})] @@ -148,6 +156,7 @@ public async Task UnmanagedCallConvAttribute_MultipleCallConvTypes() string source = @" using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] partial class C { [UnmanagedCallConv(CallConvs = new[]{typeof(CallConvStdcall), typeof(CallConvSuppressGCTransition)})] @@ -197,7 +206,9 @@ public async Task OtherAttributeType() { string source = @" using System; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +[assembly:DisableRuntimeMarshalling] class OtherAttribute : Attribute {} @@ -235,6 +246,108 @@ public Native(S s) { } attr => SymbolEqualityComparer.Default.Equals(attr.AttributeClass, attributeType)); } + [ConditionalFact] + public async Task InOutAttributes_Forwarded_To_ForwardedParameter() + { + string source = @" +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +partial class C +{ + [GeneratedDllImportAttribute(""DoesNotExist"")] + public static partial bool Method1([In, Out] int[] a); +} +" + CodeSnippets.GeneratedDllImportAttributeDeclaration; + Compilation origComp = await TestUtils.CreateCompilation(source, TestTargetFramework.Standard); + Compilation newComp = TestUtils.RunGenerators(origComp, out _, new Microsoft.Interop.DllImportGenerator()); + + IMethodSymbol targetMethod = GetGeneratedPInvokeTargetFromCompilation(newComp); + + INamedTypeSymbol marshalAsAttribute = newComp.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_MarshalAsAttribute)!; + INamedTypeSymbol inAttribute = newComp.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_InAttribute)!; + INamedTypeSymbol outAttribute = newComp.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_OutAttribute)!; + Assert.Collection(targetMethod.Parameters, + param => Assert.Collection(param.GetAttributes(), + attr => + { + Assert.Equal(marshalAsAttribute, attr.AttributeClass, SymbolEqualityComparer.Default); + Assert.Equal(UnmanagedType.LPArray, (UnmanagedType)attr.ConstructorArguments[0].Value!); + Assert.Empty(attr.NamedArguments); + }, + attr => + { + Assert.Equal(inAttribute, attr.AttributeClass, SymbolEqualityComparer.Default); + Assert.Empty(attr.ConstructorArguments); + Assert.Empty(attr.NamedArguments); + }, + attr => + { + Assert.Equal(outAttribute, attr.AttributeClass, SymbolEqualityComparer.Default); + Assert.Empty(attr.ConstructorArguments); + Assert.Empty(attr.NamedArguments); + })); + } + + [ConditionalFact] + public async Task MarshalAsAttribute_Forwarded_To_ForwardedParameter() + { + string source = @" +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +partial class C +{ + [GeneratedDllImportAttribute(""DoesNotExist"")] + public static partial bool Method1([MarshalAs(UnmanagedType.I2)] int a); +} +" + CodeSnippets.GeneratedDllImportAttributeDeclaration; + Compilation origComp = await TestUtils.CreateCompilation(source, TestTargetFramework.Standard); + Compilation newComp = TestUtils.RunGenerators(origComp, out _, new Microsoft.Interop.DllImportGenerator()); + + IMethodSymbol targetMethod = GetGeneratedPInvokeTargetFromCompilation(newComp); + + INamedTypeSymbol marshalAsAttribute = newComp.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_MarshalAsAttribute)!; + Assert.Collection(targetMethod.Parameters, + param => Assert.Collection(param.GetAttributes(), + attr => + { + Assert.Equal(marshalAsAttribute, attr.AttributeClass, SymbolEqualityComparer.Default); + Assert.Equal(UnmanagedType.I2, (UnmanagedType)attr.ConstructorArguments[0].Value!); + Assert.Empty(attr.NamedArguments); + })); + } + + [ConditionalFact] + public async Task MarshalAsAttribute_Forwarded_To_ForwardedParameter_Array() + { + string source = @" +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +partial class C +{ + [GeneratedDllImportAttribute(""DoesNotExist"")] + public static partial bool Method1([MarshalAs(UnmanagedType.LPArray, SizeConst = 10, SizeParamIndex = 1, ArraySubType = UnmanagedType.I4)] int[] a, int b); +} +" + CodeSnippets.GeneratedDllImportAttributeDeclaration; + Compilation origComp = await TestUtils.CreateCompilation(source, TestTargetFramework.Standard); + Compilation newComp = TestUtils.RunGenerators(origComp, out _, new Microsoft.Interop.DllImportGenerator()); + + IMethodSymbol targetMethod = GetGeneratedPInvokeTargetFromCompilation(newComp); + + INamedTypeSymbol marshalAsAttribute = newComp.GetTypeByMetadataName(TypeNames.System_Runtime_InteropServices_MarshalAsAttribute)!; + Assert.Collection(targetMethod.Parameters, + param => Assert.Collection(param.GetAttributes(), + attr => + { + Assert.Equal(marshalAsAttribute, attr.AttributeClass, SymbolEqualityComparer.Default); + Assert.Equal(UnmanagedType.LPArray, (UnmanagedType)attr.ConstructorArguments[0].Value!); + var namedArgs = attr.NamedArguments.ToImmutableDictionary(); + Assert.Equal(10, namedArgs["SizeConst"].Value); + Assert.Equal((short)1, namedArgs["SizeParamIndex"].Value); + Assert.Equal(UnmanagedType.I4, (UnmanagedType)namedArgs["ArraySubType"].Value!); + }), + param => Assert.Equal(SpecialType.System_Int32, param.Type.SpecialType)); + } + private static IMethodSymbol GetGeneratedPInvokeTargetFromCompilation(Compilation newComp) { // The last syntax tree is the generated code diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CodeSnippets.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CodeSnippets.cs index 79fb731628f6f8..535000d886f872 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CodeSnippets.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CodeSnippets.cs @@ -194,7 +194,6 @@ partial class Test CharSet = CharSet.Unicode, EntryPoint = ""UserDefinedEntryPoint"", ExactSpelling = true, - PreserveSig = false, SetLastError = true)] public static partial void Method(); } @@ -217,7 +216,6 @@ partial class Test CharSet = (CharSet)2, EntryPoint = EntryPointName, ExactSpelling = 0 != 1, - PreserveSig = IsTrue, SetLastError = IsFalse)] public static partial void Method1(); @@ -225,7 +223,6 @@ partial class Test CharSet = (CharSet)Two, EntryPoint = EntryPointName, ExactSpelling = One != Two, - PreserveSig = !IsFalse, SetLastError = !IsTrue)] public static partial void Method2(); } @@ -327,6 +324,8 @@ partial class Test } "; + public static readonly string DisableRuntimeMarshalling = "[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling]"; + /// /// Declaration with parameters with set. /// @@ -366,8 +365,9 @@ partial class Test /// /// Declaration with parameters. /// - public static string BasicParametersAndModifiersNoRef(string typeName) => @$" + public static string BasicParametersAndModifiersNoRef(string typeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -380,8 +380,9 @@ partial class Test /// /// Declaration with parameters and unsafe. /// - public static string BasicParametersAndModifiersUnsafe(string typeName) => @$" + public static string BasicParametersAndModifiersUnsafe(string typeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -397,8 +398,9 @@ partial class Test /// /// Declaration with [In, Out] style attributes on a by-value parameter. /// - public static string ByValueParameterWithModifier(string typeName, string attributeName) => @$" + public static string ByValueParameterWithModifier(string typeName, string attributeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -406,7 +408,7 @@ public static partial void Method( [{attributeName}] {typeName} p); }}"; - public static string ByValueParameterWithModifier(string attributeName) => ByValueParameterWithModifier(typeof(T).ToString(), attributeName); + public static string ByValueParameterWithModifier(string attributeName, string preDeclaration = "") => ByValueParameterWithModifier(typeof(T).ToString(), attributeName, preDeclaration); /// /// Declaration with by-value parameter with custom name. @@ -486,29 +488,15 @@ public static partial MyEnum Method( /// /// Declaration with PreserveSig = false. /// - public static string PreserveSigFalse(string typeName) => @$" + public static string SetLastErrorTrue(string typeName) => @$" using System.Runtime.InteropServices; partial class Test {{ - [GeneratedDllImport(""DoesNotExist"", PreserveSig = false)] - public static partial {typeName} Method1(); - - [GeneratedDllImport(""DoesNotExist"", PreserveSig = false)] - public static partial {typeName} Method2({typeName} p); + [GeneratedDllImport(""DoesNotExist"", SetLastError = true)] + public static partial {typeName} Method({typeName} p); }}"; - public static string PreserveSigFalse() => PreserveSigFalse(typeof(T).ToString()); - - /// - /// Declaration with PreserveSig = false and void return. - /// - public static readonly string PreserveSigFalseVoidReturn = @$" -using System.Runtime.InteropServices; -partial class Test -{{ - [GeneratedDllImport(""DoesNotExist"", PreserveSig = false)] - public static partial void Method(); -}}"; + public static string SetLastErrorTrue() => SetLastErrorTrue(typeof(T).ToString()); public static string DelegateParametersAndModifiers = BasicParametersAndModifiers("MyDelegate") + @" delegate int MyDelegate(int a);"; @@ -529,13 +517,13 @@ private static string BlittableMyStruct(string modifier = "") => $@"#pragma warn private void* vptr; }}"; - public static string BlittableStructParametersAndModifiers = BasicParametersAndModifiers("MyStruct") + $@" -[BlittableType] + public static string BlittableStructParametersAndModifiers = BasicParametersAndModifiers("MyStruct", DisableRuntimeMarshalling) + $@" {BlittableMyStruct()} "; - public static string MarshalAsArrayParametersAndModifiers(string elementType) => $@" + public static string MarshalAsArrayParametersAndModifiers(string elementType, string preDeclaration = "") => $@" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -550,10 +538,11 @@ out int pOutSize ); }}"; - public static string MarshalAsArrayParametersAndModifiers() => MarshalAsArrayParametersAndModifiers(typeof(T).ToString()); + public static string MarshalAsArrayParametersAndModifiers(string preDeclaration = "") => MarshalAsArrayParametersAndModifiers(typeof(T).ToString(), preDeclaration); public static string MarshalAsArrayParameterWithSizeParam(string sizeParamType, bool isByRef) => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -566,8 +555,9 @@ public static partial void Method( public static string MarshalAsArrayParameterWithSizeParam(bool isByRef) => MarshalAsArrayParameterWithSizeParam(typeof(T).ToString(), isByRef); - public static string MarshalAsArrayParameterWithNestedMarshalInfo(string elementType, UnmanagedType nestedMarshalInfo) => $@" + public static string MarshalAsArrayParameterWithNestedMarshalInfo(string elementType, UnmanagedType nestedMarshalInfo, string preDeclaration = "") => $@" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -576,28 +566,14 @@ public static partial void Method( ); }}"; - public static string MarshalAsArrayParameterWithNestedMarshalInfo(UnmanagedType nestedMarshalType) => MarshalAsArrayParameterWithNestedMarshalInfo(typeof(T).ToString(), nestedMarshalType); - - public static string ArrayPreserveSigFalse(string elementType) => $@" -using System.Runtime.InteropServices; -partial class Test -{{ - [GeneratedDllImport(""DoesNotExist"", PreserveSig = false)] - [return:MarshalAs(UnmanagedType.LPArray, SizeConst=10)] - public static partial {elementType}[] Method1(); - - [GeneratedDllImport(""DoesNotExist"", PreserveSig = false)] - [return:MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] - public static partial {elementType}[] Method2(int i); -}}"; - - public static string ArrayPreserveSigFalse() => ArrayPreserveSigFalse(typeof(T).ToString()); + public static string MarshalAsArrayParameterWithNestedMarshalInfo(UnmanagedType nestedMarshalType, string preDeclaration = "") => MarshalAsArrayParameterWithNestedMarshalInfo(typeof(T).ToString(), nestedMarshalType, preDeclaration); /// /// Declaration with parameters with MarshalAs. /// - public static string MarshalUsingParametersAndModifiers(string typeName, string nativeTypeName) => @$" + public static string MarshalUsingParametersAndModifiers(string typeName, string nativeTypeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -610,7 +586,7 @@ partial class Test }} "; - public static string CustomStructMarshallingParametersAndModifiers = BasicParametersAndModifiers("S") + @" + public static string CustomStructMarshallingParametersAndModifiers = BasicParametersAndModifiers("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -629,7 +605,7 @@ public Native(S s) } "; - public static string CustomStructMarshallingMarshalUsingParametersAndModifiers = MarshalUsingParametersAndModifiers("S", "Native") + @" + public static string CustomStructMarshallingMarshalUsingParametersAndModifiers = MarshalUsingParametersAndModifiers("S", "Native", DisableRuntimeMarshalling) + @" struct S { public bool b; @@ -647,7 +623,7 @@ public Native(S s) } "; - public static string CustomStructMarshallingStackallocParametersAndModifiersNoRef = BasicParametersAndModifiersNoRef("S") + @" + public static string CustomStructMarshallingStackallocParametersAndModifiersNoRef = BasicParametersAndModifiersNoRef("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -667,7 +643,7 @@ public Native(S s, System.Span b) public const int BufferSize = 1; } "; - public static string CustomStructMarshallingStackallocOnlyRefParameter = BasicParameterWithByRefModifier("ref", "S") + @" + public static string CustomStructMarshallingStackallocOnlyRefParameter = BasicParameterWithByRefModifier("ref", "S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -688,7 +664,7 @@ public Native(S s, System.Span b) public const bool RequiresStackBuffer = false; } "; - public static string CustomStructMarshallingOptionalStackallocParametersAndModifiers = BasicParametersAndModifiers("S") + @" + public static string CustomStructMarshallingOptionalStackallocParametersAndModifiers = BasicParametersAndModifiers("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -714,7 +690,7 @@ public Native(S s) } "; - public static string CustomStructMarshallingStackallocValuePropertyParametersAndModifiersNoRef = BasicParametersAndModifiersNoRef("S") + @" + public static string CustomStructMarshallingStackallocValuePropertyParametersAndModifiersNoRef = BasicParametersAndModifiersNoRef("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -735,7 +711,7 @@ public Native(S s, System.Span b) public const int BufferSize = 1; } "; - public static string CustomStructMarshallingValuePropertyParametersAndModifiers = BasicParametersAndModifiers("S") + @" + public static string CustomStructMarshallingValuePropertyParametersAndModifiers = BasicParametersAndModifiers("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -754,7 +730,7 @@ public Native(S s) public int Value { get; set; } } "; - public static string CustomStructMarshallingPinnableParametersAndModifiers = BasicParametersAndModifiers("S") + @" + public static string CustomStructMarshallingPinnableParametersAndModifiers = BasicParametersAndModifiers("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] class S { @@ -786,6 +762,8 @@ public nint Value using System.Runtime.InteropServices; using System; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] + [NativeMarshalling(typeof(Native))] class S { @@ -842,7 +820,7 @@ public static partial void Method( } "; - public static string CustomStructMarshallingByRefValueProperty = BasicParametersAndModifiers("S") + @" + public static string CustomStructMarshallingByRefValueProperty = BasicParametersAndModifiers("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] class S { @@ -862,8 +840,9 @@ public Native(S s) : this() } "; - public static string BasicParameterWithByRefModifier(string byRefKind, string typeName) => @$" + public static string BasicParameterWithByRefModifier(string byRefKind, string typeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -871,8 +850,9 @@ public static partial void Method( {byRefKind} {typeName} p); }}"; - public static string BasicParameterByValue(string typeName) => @$" + public static string BasicParameterByValue(string typeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -880,15 +860,16 @@ public static partial void Method( {typeName} p); }}"; - public static string BasicReturnType(string typeName) => @$" + public static string BasicReturnType(string typeName, string preDeclaration = "") => @$" using System.Runtime.InteropServices; +{preDeclaration} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] public static partial {typeName} Method(); }}"; - public static string CustomStructMarshallingManagedToNativeOnlyOutParameter => BasicParameterWithByRefModifier("out", "S") + @" + public static string CustomStructMarshallingManagedToNativeOnlyOutParameter => BasicParameterWithByRefModifier("out", "S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] [StructLayout(LayoutKind.Sequential)] struct S @@ -906,7 +887,7 @@ public Native(S s) } "; - public static string CustomStructMarshallingManagedToNativeOnlyReturnValue => BasicReturnType("S") + @" + public static string CustomStructMarshallingManagedToNativeOnlyReturnValue => BasicReturnType("S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] [StructLayout(LayoutKind.Sequential)] struct S @@ -924,7 +905,7 @@ public Native(S s) } "; - public static string CustomStructMarshallingNativeToManagedOnlyInParameter => BasicParameterWithByRefModifier("in", "S") + @" + public static string CustomStructMarshallingNativeToManagedOnlyInParameter => BasicParameterWithByRefModifier("in", "S", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Native))] struct S { @@ -939,7 +920,7 @@ struct Native } "; - public static string ArrayMarshallingWithCustomStructElementWithValueProperty => MarshalAsArrayParametersAndModifiers("IntStructWrapper") + @" + public static string ArrayMarshallingWithCustomStructElementWithValueProperty => MarshalAsArrayParametersAndModifiers("IntStructWrapper", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(IntStructWrapperNative))] public struct IntStructWrapper { @@ -959,7 +940,7 @@ public IntStructWrapperNative(IntStructWrapper managed) } "; - public static string ArrayMarshallingWithCustomStructElement => MarshalAsArrayParametersAndModifiers("IntStructWrapper") + @" + public static string ArrayMarshallingWithCustomStructElement => MarshalAsArrayParametersAndModifiers("IntStructWrapper", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(IntStructWrapperNative))] public struct IntStructWrapper { @@ -1057,8 +1038,7 @@ public static partial int Method2( public static int Foo() => throw null; }}"; - public static string MaybeBlittableGenericTypeParametersAndModifiers(string typeArgument) => BasicParametersAndModifiers($"Generic<{typeArgument}>") + @" -[BlittableType] + public static string MaybeBlittableGenericTypeParametersAndModifiers(string typeArgument) => BasicParametersAndModifiers($"Generic<{typeArgument}>", DisableRuntimeMarshalling) + @" struct Generic { #pragma warning disable CS0649 @@ -1069,30 +1049,13 @@ struct Generic public static string MaybeBlittableGenericTypeParametersAndModifiers() => MaybeBlittableGenericTypeParametersAndModifiers(typeof(T).ToString()); - public static string ImplicitlyBlittableStructParametersAndModifiers(string visibility = "") => BasicParametersAndModifiers("MyStruct") + $@" -// Implicitly blittable -{BlittableMyStruct(visibility)} -"; - - public static string ImplicitlyBlittableGenericTypeParametersAndModifiers(string typeArgument, string visibility = "") => BasicParametersAndModifiers($"Generic<{typeArgument}>") + $@" -{visibility} struct Generic -{{ -#pragma warning disable CS0649 -#pragma warning disable CS0169 - public T field; -}} -"; - - public static string ImplicitlyBlittableGenericTypeParametersAndModifiers(string visibility = "") => - ImplicitlyBlittableGenericTypeParametersAndModifiers(typeof(T).ToString(), visibility); - - public static string RecursiveImplicitlyBlittableStruct => BasicParametersAndModifiers("RecursiveStruct") + @" + public static string RecursiveImplicitlyBlittableStruct => BasicParametersAndModifiers("RecursiveStruct", DisableRuntimeMarshalling) + @" struct RecursiveStruct { RecursiveStruct s; int i; }"; - public static string MutuallyRecursiveImplicitlyBlittableStruct => BasicParametersAndModifiers("RecursiveStruct1") + @" + public static string MutuallyRecursiveImplicitlyBlittableStruct => BasicParametersAndModifiers("RecursiveStruct1", DisableRuntimeMarshalling) + @" struct RecursiveStruct1 { RecursiveStruct2 s; @@ -1105,7 +1068,7 @@ struct RecursiveStruct2 int i; }"; - public static string CollectionByValue(string elementType) => BasicParameterByValue($"TestCollection<{elementType}>") + @" + public static string CollectionByValue(string elementType) => BasicParameterByValue($"TestCollection<{elementType}>", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Marshaller<>))] class TestCollection {} @@ -1123,6 +1086,7 @@ public Marshaller(TestCollection managed, int nativeElementSize) : this() {} public static string MarshalUsingCollectionCountInfoParametersAndModifiers(string collectionType) => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1136,7 +1100,7 @@ partial class Test out int pOutSize ); }}"; - + public static string CustomCollectionWithMarshaller(bool enableDefaultMarshalling) { string nativeMarshallingAttribute = enableDefaultMarshalling ? "[NativeMarshalling(typeof(Marshaller<>))]" : string.Empty; @@ -1163,6 +1127,7 @@ public void SetUnmarshalledCollectionLength(int length) {} public static string MarshalUsingCollectionParametersAndModifiers(string collectionType, string marshallerType) => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1183,6 +1148,7 @@ out int pOutSize public static string MarshalUsingCollectionReturnValueLength(string collectionType, string marshallerType) => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1197,6 +1163,7 @@ public static partial int Method( public static string MarshalUsingArrayParameterWithSizeParam(string sizeParamType, bool isByRef) => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1210,6 +1177,7 @@ public static partial void Method( public static string MarshalUsingCollectionWithConstantAndElementCount => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1221,6 +1189,7 @@ public static partial void Method( public static string MarshalUsingCollectionWithNullElementName => $@" using System.Runtime.InteropServices; +{DisableRuntimeMarshalling} partial class Test {{ [GeneratedDllImport(""DoesNotExist"")] @@ -1230,7 +1199,7 @@ public static partial void Method( ); }}"; - public static string GenericCollectionMarshallingArityMismatch => BasicParameterByValue("TestCollection") + @" + public static string GenericCollectionMarshallingArityMismatch => BasicParameterByValue("TestCollection", DisableRuntimeMarshalling) + @" [NativeMarshalling(typeof(Marshaller<,>))] class TestCollection {} @@ -1246,6 +1215,7 @@ public Marshaller(TestCollection managed, int nativeElementSize) : this() {} public static string GenericCollectionWithCustomElementMarshalling => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1271,6 +1241,7 @@ public IntWrapper(int i){} public static string GenericCollectionWithCustomElementMarshallingDuplicateElementIndirectionLevel => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1288,6 +1259,7 @@ public IntWrapper(int i){} public static string GenericCollectionWithCustomElementMarshallingUnusedElementIndirectionLevel => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1305,6 +1277,7 @@ public IntWrapper(int i){} public static string MarshalAsAndMarshalUsingOnReturnValue => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1316,6 +1289,7 @@ partial class Test public static string RecursiveCountElementNameOnReturnValue => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1326,6 +1300,7 @@ partial class Test public static string RecursiveCountElementNameOnParameter => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1336,6 +1311,7 @@ public static partial void Method( "; public static string MutuallyRecursiveCountElementNameOnParameter => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1347,6 +1323,7 @@ public static partial void Method( "; public static string MutuallyRecursiveSizeParamIndexOnParameter => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] @@ -1359,6 +1336,7 @@ public static partial void Method( public static string CollectionsOfCollectionsStress => @" using System.Runtime.InteropServices; +[assembly:System.Runtime.CompilerServices.DisableRuntimeMarshalling] partial class Test { [GeneratedDllImport(""DoesNotExist"")] diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CompileFails.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CompileFails.cs index a69af4566275bf..1d64e741882c95 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CompileFails.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/CompileFails.cs @@ -24,8 +24,6 @@ public static IEnumerable CodeSnippetsToCompile() yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 5, 0 }; yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 5, 0 }; yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 5, 0 }; - yield return new object[] { CodeSnippets.PreserveSigFalse(), 3, 0 }; - yield return new object[] { CodeSnippets.PreserveSigFalse(), 3, 0 }; // Unsupported CharSet yield return new object[] { CodeSnippets.BasicParametersAndModifiersWithCharSet(CharSet.Auto), 5, 0 }; @@ -63,19 +61,19 @@ public static IEnumerable CodeSnippetsToCompile() // No size information for array marshalling from unmanaged to managed // * return, out, ref - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; - yield return new object[] { CodeSnippets.BasicParametersAndModifiers(), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; + yield return new object[] { CodeSnippets.BasicParametersAndModifiers(CodeSnippets.DisableRuntimeMarshalling), 3, 0 }; // Collection with non-integer size param yield return new object[] { CodeSnippets.MarshalAsArrayParameterWithSizeParam(isByRef: false), 1, 0 }; @@ -96,15 +94,6 @@ public static IEnumerable CodeSnippetsToCompile() // Abstract SafeHandle type by reference yield return new object[] { CodeSnippets.BasicParameterWithByRefModifier("ref", "System.Runtime.InteropServices.SafeHandle"), 1, 0 }; - // Non-blittable instantiation of generic type - yield return new object[] { CodeSnippets.MaybeBlittableGenericTypeParametersAndModifiers(), 5, 0 }; - - // No marshalling annotations - - yield return new object[] { CodeSnippets.ImplicitlyBlittableStructParametersAndModifiers("public"), 5, 0 }; - yield return new object[] { CodeSnippets.ImplicitlyBlittableGenericTypeParametersAndModifiers(), 5, 0 }; - yield return new object[] { CodeSnippets.ImplicitlyBlittableGenericTypeParametersAndModifiers("public"), 5, 0 }; - // Collection with constant and element size parameter yield return new object[] { CodeSnippets.MarshalUsingCollectionWithConstantAndElementCount, 2, 0 }; @@ -145,8 +134,8 @@ public async Task ValidateSnippets(string source, int expectedGeneratorErrors, i public static IEnumerable CodeSnippetsToCompile_InvalidCode() { - yield return new object[] { CodeSnippets.RecursiveImplicitlyBlittableStruct, 5, 1 }; - yield return new object[] { CodeSnippets.MutuallyRecursiveImplicitlyBlittableStruct, 5, 2 }; + yield return new object[] { CodeSnippets.RecursiveImplicitlyBlittableStruct, 0, 1 }; + yield return new object[] { CodeSnippets.MutuallyRecursiveImplicitlyBlittableStruct, 0, 2 }; } [ConditionalTheory] diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Compiles.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Compiles.cs index 0572d1dd207619..edde539be5c36b 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Compiles.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Compiles.cs @@ -102,8 +102,8 @@ public static IEnumerable CodeSnippetsToCompile() // [In, Out] attributes // By value non-blittable array - yield return new[] { CodeSnippets.ByValueParameterWithModifier("Out") }; - yield return new[] { CodeSnippets.ByValueParameterWithModifier("In, Out") }; + yield return new[] { CodeSnippets.ByValueParameterWithModifier("Out", CodeSnippets.DisableRuntimeMarshalling) }; + yield return new[] { CodeSnippets.ByValueParameterWithModifier("In, Out", CodeSnippets.DisableRuntimeMarshalling) }; // Enums yield return new[] { CodeSnippets.EnumParameters }; @@ -145,36 +145,6 @@ public static IEnumerable CodeSnippetsToCompile() yield return new[] { CodeSnippets.SafeHandleWithCustomDefaultConstructorAccessibility(privateCtor: false) }; yield return new[] { CodeSnippets.SafeHandleWithCustomDefaultConstructorAccessibility(privateCtor: true) }; - // PreserveSig - yield return new[] { CodeSnippets.PreserveSigFalseVoidReturn }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; - yield return new[] { CodeSnippets.PreserveSigFalse("Microsoft.Win32.SafeHandles.SafeFileHandle") }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - yield return new[] { CodeSnippets.ArrayPreserveSigFalse() }; - // Custom type marshalling yield return new[] { CodeSnippets.CustomStructMarshallingParametersAndModifiers }; yield return new[] { CodeSnippets.CustomStructMarshallingStackallocParametersAndModifiersNoRef }; @@ -206,12 +176,6 @@ public static IEnumerable CodeSnippetsToCompile() yield return new[] { CodeSnippets.MaybeBlittableGenericTypeParametersAndModifiers() }; yield return new[] { CodeSnippets.MaybeBlittableGenericTypeParametersAndModifiers() }; - // Implicit blittable types - yield return new[] { CodeSnippets.ImplicitlyBlittableStructParametersAndModifiers() }; - yield return new[] { CodeSnippets.ImplicitlyBlittableStructParametersAndModifiers("internal") }; - yield return new[] { CodeSnippets.ImplicitlyBlittableGenericTypeParametersAndModifiers() }; - yield return new[] { CodeSnippets.ImplicitlyBlittableGenericTypeParametersAndModifiers("internal") }; - // Custom collection marshalling yield return new[] { CodeSnippets.CollectionByValue() }; yield return new[] { CodeSnippets.CollectionByValue() }; @@ -410,7 +374,7 @@ public static IEnumerable SnippetsWithBlittableTypesButNonBlittableDat { yield return new[] { CodeSnippets.AllGeneratedDllImportNamedArguments }; yield return new[] { CodeSnippets.BasicParametersAndModifiers() }; - yield return new[] { CodeSnippets.PreserveSigFalse() }; + yield return new[] { CodeSnippets.SetLastErrorTrue() }; } [ConditionalTheory] @@ -480,7 +444,7 @@ public static IEnumerable CodeSnippetsToCompileMultipleSources() { yield return new object[] { new[] { CodeSnippets.BasicParametersAndModifiers(), CodeSnippets.MarshalAsParametersAndModifiers(UnmanagedType.Bool) } }; yield return new object[] { new[] { CodeSnippets.BasicParametersAndModifiersWithCharSet(CharSet.Unicode), CodeSnippets.MarshalAsParametersAndModifiers(UnmanagedType.Bool) } }; - yield return new object[] { new[] { CodeSnippets.BasicParameterByValue("int[]"), CodeSnippets.BasicParameterWithByRefModifier("ref", "int") } }; + yield return new object[] { new[] { CodeSnippets.BasicParameterByValue("int[]", CodeSnippets.DisableRuntimeMarshalling), CodeSnippets.BasicParameterWithByRefModifier("ref", "int") } }; } [ConditionalTheory] diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ConvertToGeneratedDllImportAnalyzerTests.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ConvertToGeneratedDllImportAnalyzerTests.cs index 9eb49b66edddd9..cffb7c46bb2684 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ConvertToGeneratedDllImportAnalyzerTests.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ConvertToGeneratedDllImportAnalyzerTests.cs @@ -6,7 +6,6 @@ using System.Runtime.InteropServices; using System.Threading.Tasks; -using Microsoft.CodeAnalysis; using Xunit; using static Microsoft.Interop.Analyzers.ConvertToGeneratedDllImportAnalyzer; @@ -98,30 +97,6 @@ await VerifyCS.VerifyAnalyzerAsync( .WithArguments("Method_Ref")); } - [ConditionalFact] - public async Task PreserveSigFalse_ReportsDiagnostic() - { - string source = @$" -using System.Runtime.InteropServices; -partial class Test -{{ - [DllImport(""DoesNotExist"", PreserveSig = false)] - public static extern void {{|#0:Method1|}}(); - - [DllImport(""DoesNotExist"", PreserveSig = true)] - public static extern void {{|#1:Method2|}}(); -}} -"; - await VerifyCS.VerifyAnalyzerAsync( - source, - VerifyCS.Diagnostic(ConvertToGeneratedDllImport) - .WithLocation(0) - .WithArguments("Method1"), - VerifyCS.Diagnostic(ConvertToGeneratedDllImport) - .WithLocation(1) - .WithArguments("Method2")); - } - [ConditionalFact] public async Task SetLastErrorTrue_ReportsDiagnostic() { diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/DllImportGenerator.Unit.Tests.csproj b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/DllImportGenerator.Unit.Tests.csproj index 1220cd23315100..8c11a8c5bdd05e 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/DllImportGenerator.Unit.Tests.csproj +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/DllImportGenerator.Unit.Tests.csproj @@ -1,4 +1,4 @@ - + $(NetCoreAppCurrent) diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ManualTypeMarshallingAnalyzerTests.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ManualTypeMarshallingAnalyzerTests.cs index 240805071a1285..793629f99a2e9f 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ManualTypeMarshallingAnalyzerTests.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/ManualTypeMarshallingAnalyzerTests.cs @@ -15,172 +15,6 @@ namespace DllImportGenerator.UnitTests [ActiveIssue("https://github.com/dotnet/runtime/issues/60650", TestRuntimes.Mono)] public class ManualTypeMarshallingAnalyzerTests { - public static IEnumerable NonBlittableTypeMarkedBlittable_ReportsDiagnostic_TestData { - get - { - yield return new object[] - { - @" -using System.Runtime.InteropServices; - -[{|#0:BlittableType|}] -struct S -{ - public bool field; -} -" - }; - yield return new object[] - { - @" -using System.Runtime.InteropServices; - -[{|#0:BlittableType|}] -struct S -{ - public char field; -} -" - }; - yield return new object[] - { - -@" -using System.Runtime.InteropServices; - -[{|#0:BlittableType|}] -struct S -{ - public string field; -} -" - }; - } - } - - [MemberData(nameof(NonBlittableTypeMarkedBlittable_ReportsDiagnostic_TestData))] - [ConditionalTheory] - public async Task NonBlittableTypeMarkedBlittable_ReportsDiagnostic(string source) - { - var diagnostic = VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("S"); - await VerifyCS.VerifyAnalyzerAsync(source, diagnostic); - } - - [ConditionalFact] - public async Task BlittablePrimitiveFields_MarkedBlittable_NoDiagnostic() - { - - string source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ - public int field; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableEnumFields_MarkedBlittable_NoDiagnostic() - { - - string source = @" -using System.Runtime.InteropServices; - -enum E { Zero, One, Two } - -[BlittableType] -struct S -{ - public E field; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableStructFields_MarkedBlittable_NoDiagnostic() - { - string source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ - public T field; -} - -[BlittableType] -struct T -{ - public int field; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task NonBlittableFields_MarkedBlittable_ReportDiagnosticOnFieldTypeDefinition() - { - string source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ - public T field; -} - -[{|#0:BlittableType|}] -struct T -{ - public bool field; -} -"; - var diagnostic = VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("T"); - await VerifyCS.VerifyAnalyzerAsync(source, diagnostic); - } - - [ConditionalFact] - public async Task NonUnmanagedTypeMarkedBlittable_ReportsDiagnosticOnStructType() - { - string source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ - public T field; -} - -[{|#0:BlittableType|}] -struct T -{ - public string field; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source, - VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("T")); - } - - [ConditionalFact] - public async Task BlittableTypeWithNonBlittableStaticField_DoesNotReportDiagnostic() - { - string source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ - public static string Static; - public int instance; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - [ConditionalFact] public async Task NullNativeType_ReportsDiagnostic() { @@ -280,7 +114,6 @@ struct S public string s; } -[BlittableType] struct Native { private IntPtr value; @@ -309,7 +142,6 @@ struct S public string s; } -[BlittableType] struct Native { private IntPtr value; @@ -399,9 +231,9 @@ public async Task NonBlittableGetPinnableReferenceReturnType_ReportsDiagnostic() [NativeMarshalling(typeof(Native))] class S { - public char c; + public string s; - public ref char {|#0:GetPinnableReference|}() => ref c; + public ref string {|#0:GetPinnableReference|}() => ref s; } unsafe struct Native @@ -658,7 +490,6 @@ class S public byte c; } -[BlittableType] unsafe struct Native { private byte value; @@ -688,7 +519,6 @@ class S public byte c; } -[BlittableType] unsafe struct Native { private byte value; @@ -706,21 +536,6 @@ public Native(S s) : this() await VerifyCS.VerifyAnalyzerAsync(source); } - [ConditionalFact] - public async Task BlittableValueTypeWithNoFields_DoesNotReportDiagnostic() - { - string source = @" -using System; -using System.Runtime.InteropServices; - -[BlittableType] -struct S -{ -}"; - - await VerifyCS.VerifyAnalyzerAsync(source); - } - [ConditionalFact] public async Task NativeTypeWithNoMarshallingMethods_ReportsDiagnostic() { @@ -734,7 +549,6 @@ class S public byte c; } -[BlittableType] struct {|#0:Native|} { }"; @@ -947,7 +761,6 @@ class S public byte c; } -[BlittableType] struct Native { public Native(S s) {} @@ -969,7 +782,6 @@ class S public byte c; } -[BlittableType] struct Native { public S ToManaged() => new S(); @@ -991,7 +803,6 @@ class S public byte c; } -[BlittableType] struct {|#0:Native|} { public Native(S s, Span buffer) {} @@ -1091,7 +902,6 @@ struct S public string s; } -[BlittableType] struct Native { private IntPtr value; @@ -1404,201 +1214,6 @@ public Native(S s) await VerifyCS.VerifyAnalyzerAsync(source); } - [ConditionalFact] - public async Task ValueTypeContainingPointers_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -unsafe struct S -{ - private int* intPtr; - private bool* boolPtr; -}"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableValueTypeContainingPointerToSelf_DoesNotReportDiagnostic() - { - - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -unsafe struct S -{ - private int fld; - private S* ptr; -}"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task NonBlittableValueTypeContainingPointerToSelf_ReportsDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[{|#0:BlittableType|}] -unsafe struct S -{ - private bool fld; - private S* ptr; -}"; - await VerifyCS.VerifyAnalyzerAsync(source, - VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("S")); - } - - [ConditionalFact] - public async Task BlittableTypeContainingFunctionPointer_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -unsafe struct S -{ - private delegate* ptr; -}"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableGenericTypeInBlittableType_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct G -{ - T fld; -} - -[BlittableType] -unsafe struct S -{ - private G field; -}"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task NonBlittableGenericTypeInBlittableType_ReportsDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct G -{ - T fld; -} - -[{|#0:BlittableType|}] -unsafe struct S -{ - private G field; -}"; - await VerifyCS.VerifyAnalyzerAsync(source, - VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("S")); - } - - [ConditionalFact] - public async Task BlittableGenericTypeTypeParameterReferenceType_ReportsDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[{|#0:BlittableType|}] -struct G where T : class -{ - T fld; -}"; - await VerifyCS.VerifyAnalyzerAsync(source, - VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("G")); - } - - [ConditionalFact] - public async Task BlittableGenericTypeContainingGenericType_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct G -{ - T fld; -} - -[BlittableType] -struct F -{ - G fld; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableNestedGenericType_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -struct C -{ - [BlittableType] - public struct G - { - T fld; - } -} - -[BlittableType] -struct S -{ - C.G g; -} -"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - - [ConditionalFact] - public async Task BlittableNestedGenericTypeWithReferenceTypeGenericParameter_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -struct C where T : class -{ - [{|#0:BlittableType|}] - struct G - { - T fld; - } -} -"; - await VerifyCS.VerifyAnalyzerAsync(source, - VerifyCS.Diagnostic(BlittableTypeMustBeBlittableRule).WithLocation(0).WithArguments("C.G")); - } - - [ConditionalFact] - public async Task BlittableGenericTypeWithReferenceTypeParameterNotUsedInFieldType_DoesNotReportDiagnostic() - { - var source = @" -using System.Runtime.InteropServices; - -[BlittableType] -struct G where U : class -{ - T fld; -}"; - await VerifyCS.VerifyAnalyzerAsync(source); - } - [ConditionalFact] public async Task NativeTypeWithStackallocConstructorWithoutBufferSize_ReportsDiagnostic() { @@ -1612,7 +1227,6 @@ class S public byte c; } -[BlittableType] struct Native { public Native(S s) {} diff --git a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Verifiers/CSharpCodeFixVerifier.cs b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Verifiers/CSharpCodeFixVerifier.cs index ae7fd8940100bb..e8737161562da2 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Verifiers/CSharpCodeFixVerifier.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/DllImportGenerator.UnitTests/Verifiers/CSharpCodeFixVerifier.cs @@ -1,6 +1,7 @@ // 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.Immutable; using System.Threading; using System.Threading.Tasks; @@ -115,6 +116,33 @@ public Test() }); } + protected override CompilationWithAnalyzers CreateCompilationWithAnalyzers(Compilation compilation, ImmutableArray analyzers, AnalyzerOptions options, CancellationToken cancellationToken) + { + return new CompilationWithAnalyzers( + compilation, + analyzers, + new CompilationWithAnalyzersOptions( + options, + onAnalyzerException: null, + concurrentAnalysis: true, + logAnalyzerExecutionTime: true, + reportSuppressedDiagnostics: false, + analyzerExceptionFilter: ex => + { + // We're hunting down a intermittent issue that causes NullReferenceExceptions deep in Roslyn. To ensure that we get an actionable dump, we're going to FailFast here to force a process dump. + if (ex is NullReferenceException) + { + // Break a debugger here so there's a chance to investigate if someone is already attached. + if (System.Diagnostics.Debugger.IsAttached) + { + System.Diagnostics.Debugger.Break(); + } + Environment.FailFast($"Encountered a NullReferenceException while running an analyzer. Taking the process down to get an actionable crash dump. Exception information:{ex.ToString()}"); + } + return true; + })); + } + protected override async Task RunImplAsync(CancellationToken cancellationToken) { try diff --git a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/Marshal/OffsetOfTests.cs b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/Marshal/OffsetOfTests.cs index 4d1353ffd6546b..2221e887354eee 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/Marshal/OffsetOfTests.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/Marshal/OffsetOfTests.cs @@ -194,15 +194,15 @@ public void OffsetOf_NullType_ThrowsArgumentNullException() [Fact] public void OffsetOf_NullFieldName_ThrowsArgumentNullException() { - AssertExtensions.Throws(null, () => Marshal.OffsetOf(new object().GetType(), null)); - AssertExtensions.Throws(null, () => Marshal.OffsetOf(null)); + Assert.Throws(() => Marshal.OffsetOf(new object().GetType(), null)); + Assert.Throws(() => Marshal.OffsetOf(null)); } [Fact] public void OffsetOf_NoSuchFieldName_ThrowsArgumentException() { - AssertExtensions.Throws("fieldName", () => Marshal.OffsetOf(typeof(NonExistField), "NonExistField")); - AssertExtensions.Throws("fieldName", () => Marshal.OffsetOf("NonExistField")); + Assert.Throws(() => Marshal.OffsetOf(typeof(NonExistField), "NonExistField")); + Assert.Throws(() => Marshal.OffsetOf("NonExistField")); } [Fact] diff --git a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/PosixSignalRegistrationTests.Unix.cs b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/PosixSignalRegistrationTests.Unix.cs index f844b4d160a884..3ae21b3552f8af 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/PosixSignalRegistrationTests.Unix.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/System.Runtime.InteropServices.UnitTests/System/Runtime/InteropServices/PosixSignalRegistrationTests.Unix.cs @@ -159,13 +159,20 @@ void CreateDanglingRegistration() } } + [ConditionalFact(nameof(NotMobileAndRemoteExecutable))] + [OuterLoop("SIGQUIT will generate a coredump")] + [ActiveIssue("https://github.com/dotnet/runtime/issues/65000", TestPlatforms.OSX)] // large (~6 GB) coredump on OSX leads to timeout on upload + public void SignalCanCancelTermination_ExpectedCrash() + { + SignalCanCancelTermination(PosixSignal.SIGQUIT, false, 131); + } + [ConditionalTheory(nameof(NotMobileAndRemoteExecutable))] [InlineData(PosixSignal.SIGINT, true, 0)] [InlineData(PosixSignal.SIGINT, false, 130)] [InlineData(PosixSignal.SIGTERM, true, 0)] [InlineData(PosixSignal.SIGTERM, false, 143)] [InlineData(PosixSignal.SIGQUIT, true, 0)] - [InlineData(PosixSignal.SIGQUIT, false, 131)] public void SignalCanCancelTermination(PosixSignal signal, bool cancel, int expectedExitCode) { // Mono doesn't restore and call SIG_DFL on SIGQUIT. diff --git a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/Blittable.cs b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/Blittable.cs index fc25816928f6f1..5a1f08b17f7256 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/Blittable.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/Blittable.cs @@ -6,7 +6,6 @@ namespace SharedTypes { - [BlittableType] public struct IntFields { public int a; @@ -14,7 +13,6 @@ public struct IntFields public int c; } - [BlittableType] public unsafe struct PointerFields { public int* i; diff --git a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/NonBlittable.cs b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/NonBlittable.cs index 94d35ace34aa85..3f8e4747c2f37e 100644 --- a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/NonBlittable.cs +++ b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/SharedTypes/NonBlittable.cs @@ -16,7 +16,6 @@ public struct StringContainer public string str2; } - [BlittableType] public struct StringContainerNative { public IntPtr str1; @@ -70,7 +69,6 @@ public struct BoolStruct public bool b3; } - [BlittableType] public struct BoolStructNative { public byte b1; diff --git a/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs b/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs index 68f2b6005d5f54..ca118e1935384b 100644 --- a/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs +++ b/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs @@ -2663,6 +2663,52 @@ internal Arm64() { } public unsafe static System.Runtime.Intrinsics.Vector128 LoadAndReplicateToVector128(double* address) { throw null; } public unsafe static System.Runtime.Intrinsics.Vector128 LoadAndReplicateToVector128(long* address) { throw null; } public unsafe static System.Runtime.Intrinsics.Vector128 LoadAndReplicateToVector128(ulong* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64NonTemporal(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64NonTemporal(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairScalarVector64NonTemporal(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(byte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(double* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(short* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(long* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(sbyte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(ushort* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128(ulong* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(byte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(double* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(short* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(long* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(sbyte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(ushort* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector128 Value1, System.Runtime.Intrinsics.Vector128 Value2) LoadPairVector128NonTemporal(ulong* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(byte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(double* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(short* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(long* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(sbyte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(ushort* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64(ulong* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(byte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(double* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(short* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(int* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(long* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(sbyte* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(float* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(ushort* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(uint* address) { throw null; } + public unsafe static (System.Runtime.Intrinsics.Vector64 Value1, System.Runtime.Intrinsics.Vector64 Value2) LoadPairVector64NonTemporal(ulong* address) { throw null; } public static System.Runtime.Intrinsics.Vector128 Max(System.Runtime.Intrinsics.Vector128 left, System.Runtime.Intrinsics.Vector128 right) { throw null; } public static System.Runtime.Intrinsics.Vector64 MaxAcross(System.Runtime.Intrinsics.Vector128 value) { throw null; } public static System.Runtime.Intrinsics.Vector64 MaxAcross(System.Runtime.Intrinsics.Vector128 value) { throw null; } 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 881028308dff3f..1546c4efbc65f8 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs @@ -249,8 +249,8 @@ public BigInteger(decimal value) /// /// [CLSCompliant(false)] - public BigInteger(byte[] value) : - this(new ReadOnlySpan(value ?? throw new ArgumentNullException(nameof(value)))) + public BigInteger(byte[] value!!) : + this(new ReadOnlySpan(value)) { } @@ -2779,4 +2779,4 @@ private void AssertValid() } } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.Utils.cs b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.Utils.cs index 37d4ae7596568f..30433dabf80494 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.Utils.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigIntegerCalculator.Utils.cs @@ -58,4 +58,4 @@ private static int Reduce(Span bits, ReadOnlySpan modulus) return bits.Length; } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigNumber.cs b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigNumber.cs index 984bde00e7cb27..d9ae36628b47eb 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigNumber.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigNumber.cs @@ -360,13 +360,8 @@ internal static bool TryParseBigInteger(ReadOnlySpan value, NumberStyles s } } - internal static BigInteger ParseBigInteger(string value, NumberStyles style, NumberFormatInfo info) + internal static BigInteger ParseBigInteger(string value!!, NumberStyles style, NumberFormatInfo info) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - return ParseBigInteger(value.AsSpan(), style, info); } diff --git a/src/libraries/System.Runtime.Numerics/src/System/Numerics/Complex.cs b/src/libraries/System.Runtime.Numerics/src/System/Numerics/Complex.cs index d2f207229e3131..094fb28d9ff110 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/Complex.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/Complex.cs @@ -850,4 +850,4 @@ public static explicit operator Complex(decimal value) return new Complex((double)value, 0.0); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterConverter.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterConverter.cs index ed0fbd11fe65da..2b8963c0ad07fc 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterConverter.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterConverter.cs @@ -1,124 +1,99 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics.CodeAnalysis; using System.Globalization; -using System.Runtime.CompilerServices; namespace System.Runtime.Serialization { public class FormatterConverter : IFormatterConverter { - public object Convert(object value, Type type) + public object Convert(object value!!, Type type) { - if (value == null) ThrowValueNullException(); return System.Convert.ChangeType(value, type, CultureInfo.InvariantCulture); } - public object Convert(object value, TypeCode typeCode) + public object Convert(object value!!, TypeCode typeCode) { - if (value == null) ThrowValueNullException(); return System.Convert.ChangeType(value, typeCode, CultureInfo.InvariantCulture); } - public bool ToBoolean(object value) + public bool ToBoolean(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToBoolean(value, CultureInfo.InvariantCulture); } - public char ToChar(object value) + public char ToChar(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToChar(value, CultureInfo.InvariantCulture); } [CLSCompliant(false)] - public sbyte ToSByte(object value) + public sbyte ToSByte(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToSByte(value, CultureInfo.InvariantCulture); } - public byte ToByte(object value) + public byte ToByte(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToByte(value, CultureInfo.InvariantCulture); } - public short ToInt16(object value) + public short ToInt16(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToInt16(value, CultureInfo.InvariantCulture); } [CLSCompliant(false)] - public ushort ToUInt16(object value) + public ushort ToUInt16(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToUInt16(value, CultureInfo.InvariantCulture); } - public int ToInt32(object value) + public int ToInt32(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToInt32(value, CultureInfo.InvariantCulture); } [CLSCompliant(false)] - public uint ToUInt32(object value) + public uint ToUInt32(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToUInt32(value, CultureInfo.InvariantCulture); } - public long ToInt64(object value) + public long ToInt64(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToInt64(value, CultureInfo.InvariantCulture); } [CLSCompliant(false)] - public ulong ToUInt64(object value) + public ulong ToUInt64(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToUInt64(value, CultureInfo.InvariantCulture); } - public float ToSingle(object value) + public float ToSingle(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToSingle(value, CultureInfo.InvariantCulture); } - public double ToDouble(object value) + public double ToDouble(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToDouble(value, CultureInfo.InvariantCulture); } - public decimal ToDecimal(object value) + public decimal ToDecimal(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToDecimal(value, CultureInfo.InvariantCulture); } - public DateTime ToDateTime(object value) + public DateTime ToDateTime(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToDateTime(value, CultureInfo.InvariantCulture); } - public string? ToString(object value) + public string? ToString(object value!!) { - if (value == null) ThrowValueNullException(); return System.Convert.ToString(value, CultureInfo.InvariantCulture); } - - [DoesNotReturn] - private static void ThrowValueNullException() - { - throw new ArgumentNullException("value"); - } } } diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterServices.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterServices.cs index b3f94a260d7c53..37526aa85f5a58 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterServices.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/FormatterServices.cs @@ -168,14 +168,9 @@ public static MemberInfo[] GetSerializableMembers( } public static MemberInfo[] GetSerializableMembers( - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type!!, StreamingContext context) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - // If we've already gathered the members for this type, just return them. // Otherwise, get them and add them. return s_memberInfoTable.GetOrAdd( @@ -214,20 +209,8 @@ internal static void SerializationSetValue(MemberInfo fi, object? target, object throw new ArgumentException(SR.Argument_InvalidFieldInfo); } - public static object PopulateObjectMembers(object obj, MemberInfo[] members, object?[] data) + public static object PopulateObjectMembers(object obj!!, MemberInfo[] members!!, object?[] data!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - if (members == null) - { - throw new ArgumentNullException(nameof(members)); - } - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } if (members.Length != data.Length) { throw new ArgumentException(SR.Argument_DataLengthDifferent); @@ -264,17 +247,8 @@ public static object PopulateObjectMembers(object obj, MemberInfo[] members, obj return obj; } - public static object?[] GetObjectData(object obj, MemberInfo[] members) + public static object?[] GetObjectData(object obj!!, MemberInfo[] members!!) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - if (members == null) - { - throw new ArgumentNullException(nameof(members)); - } - object?[] data = new object[members.Length]; for (int i = 0; i < members.Length; i++) { @@ -295,22 +269,14 @@ public static object PopulateObjectMembers(object obj, MemberInfo[] members, obj return data; } - public static ISerializationSurrogate GetSurrogateForCyclicalReference(ISerializationSurrogate innerSurrogate) + public static ISerializationSurrogate GetSurrogateForCyclicalReference(ISerializationSurrogate innerSurrogate!!) { - if (innerSurrogate == null) - { - throw new ArgumentNullException(nameof(innerSurrogate)); - } return new SurrogateForCyclicalReference(innerSurrogate); } [RequiresUnreferencedCode("Types might be removed")] - public static Type? GetTypeFromAssembly(Assembly assem, string name) + public static Type? GetTypeFromAssembly(Assembly assem!!, string name) { - if (assem == null) - { - throw new ArgumentNullException(nameof(assem)); - } return assem.GetType(name, throwOnError: false, ignoreCase: false); } @@ -329,13 +295,8 @@ internal static Assembly LoadAssemblyFromString(string assemblyName) return null; } - internal static string GetClrAssemblyName(Type type, out bool hasTypeForwardedFrom) + internal static string GetClrAssemblyName(Type type!!, out bool hasTypeForwardedFrom) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - // Special case types like arrays Type attributedType = type; while (attributedType.HasElementType) diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.Core.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.Core.cs index 8d3e437a0b5c5c..5021aaa157c942 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.Core.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryFormatter.Core.cs @@ -18,10 +18,8 @@ public object Deserialize(Stream serializationStream) throw new NotSupportedException(SR.BinaryFormatter_SerializationDisallowed); } - if (serializationStream == null) - { - throw new ArgumentNullException(nameof(serializationStream)); - } + ArgumentNullException.ThrowIfNull(serializationStream); + if (serializationStream.CanSeek && (serializationStream.Length == 0)) { throw new SerializationException(SR.Serialization_Stream); @@ -69,10 +67,7 @@ public void Serialize(Stream serializationStream, object graph) throw new NotSupportedException(SR.BinaryFormatter_SerializationDisallowed); } - if (serializationStream == null) - { - throw new ArgumentNullException(nameof(serializationStream)); - } + ArgumentNullException.ThrowIfNull(serializationStream); var formatterEnums = new InternalFE() { diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs index de852ca9400075..c5986bc8edb399 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectReader.cs @@ -63,13 +63,8 @@ internal object? TopObject } } - internal ObjectReader(Stream stream, ISurrogateSelector? selector, StreamingContext context, InternalFE formatterEnums, SerializationBinder? binder) + internal ObjectReader(Stream stream!!, ISurrogateSelector? selector, StreamingContext context, InternalFE formatterEnums, SerializationBinder? binder) { - if (stream == null) - { - throw new ArgumentNullException(nameof(stream)); - } - _stream = stream; _surrogates = selector; _context = context; @@ -78,13 +73,8 @@ internal ObjectReader(Stream stream, ISurrogateSelector? selector, StreamingCont } [RequiresUnreferencedCode("Types might be removed")] - internal object Deserialize(BinaryParser serParser) + internal object Deserialize(BinaryParser serParser!!) { - if (serParser == null) - { - throw new ArgumentNullException(nameof(serParser)); - } - _fullDeserialization = false; TopObject = null; _topId = 0; diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectWriter.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectWriter.cs index 26a6a41c7c7e92..b7c3e57ac6d6df 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectWriter.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/Formatters/Binary/BinaryObjectWriter.cs @@ -50,17 +50,8 @@ internal ObjectWriter(ISurrogateSelector? selector, StreamingContext context, In } [RequiresUnreferencedCode(ObjectWriterUnreferencedCodeMessage)] - internal void Serialize(object graph, BinaryFormatterWriter serWriter) + internal void Serialize(object graph!!, BinaryFormatterWriter serWriter!!) { - if (graph == null) - { - throw new ArgumentNullException(nameof(graph)); - } - if (serWriter == null) - { - throw new ArgumentNullException(nameof(serWriter)); - } - _serWriter = serWriter; serWriter.WriteBegin(); diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectIDGenerator.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectIDGenerator.cs index 704cbe4aafcc85..c19f422bf33e14 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectIDGenerator.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectIDGenerator.cs @@ -61,13 +61,8 @@ private int FindElement(object obj, out bool found) // find the element, we generate an object id for it and insert the pair into the // table. We return an Int64 for the object id. The out parameter firstTime // is set to true if this is the first time that we have seen this object. - public virtual long GetId(object obj, out bool firstTime) + public virtual long GetId(object obj!!, out bool firstTime) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - bool found; int pos = FindElement(obj, out found); @@ -96,13 +91,8 @@ public virtual long GetId(object obj, out bool firstTime) // Checks to see if obj has already been assigned an id. If it has, // we return that id, otherwise we return 0. - public virtual long HasId(object obj, out bool firstTime) + public virtual long HasId(object obj!!, out bool firstTime) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } - bool found; int pos = FindElement(obj, out found); if (found) diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectManager.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectManager.cs index a3b058fc00bd9e..6a3ef39fb0deb8 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectManager.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/ObjectManager.cs @@ -658,12 +658,8 @@ internal void RegisterString(string? obj, long objectID, SerializationInfo? info } [RequiresUnreferencedCode(ObjectManagerUnreferencedCodeMessage)] - public void RegisterObject(object obj, long objectID, SerializationInfo? info, long idOfContainingObj, MemberInfo? member, int[]? arrayIndex) + public void RegisterObject(object obj!!, long objectID, SerializationInfo? info, long idOfContainingObj, MemberInfo? member, int[]? arrayIndex) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } if (objectID <= 0) { throw new ArgumentOutOfRangeException(nameof(objectID), SR.ArgumentOutOfRange_ObjectID); @@ -771,12 +767,8 @@ public void RegisterObject(object obj, long objectID, SerializationInfo? info, l /// The SerializationInfo containing all info for obj. /// The streaming context in which the serialization is taking place. [RequiresUnreferencedCode(ObjectManagerUnreferencedCodeMessage)] - internal void CompleteISerializableObject(object obj, SerializationInfo? info, StreamingContext context) + internal void CompleteISerializableObject(object obj!!, SerializationInfo? info, StreamingContext context) { - if (obj == null) - { - throw new ArgumentNullException(nameof(obj)); - } if (!(obj is ISerializable)) { throw new ArgumentException(SR.Serialization_NotISer); @@ -931,10 +923,7 @@ public virtual void RecordFixup(long objectToBeFixed, MemberInfo member, long ob { throw new ArgumentOutOfRangeException(objectToBeFixed <= 0 ? nameof(objectToBeFixed) : nameof(objectRequired), SR.Serialization_IdTooSmall); } - if (member == null) - { - throw new ArgumentNullException(nameof(member)); - } + ArgumentNullException.ThrowIfNull(member); if (!(member is FieldInfo)) // .NET Framework checks specifically for RuntimeFieldInfo and SerializationFieldInfo, but the former is an implementation detail in corelib { throw new SerializationException(SR.Format(SR.Serialization_InvalidType, member.GetType())); @@ -952,10 +941,7 @@ public virtual void RecordDelayedFixup(long objectToBeFixed, string memberName, { throw new ArgumentOutOfRangeException(objectToBeFixed <= 0 ? nameof(objectToBeFixed) : nameof(objectRequired), SR.Serialization_IdTooSmall); } - if (memberName == null) - { - throw new ArgumentNullException(nameof(memberName)); - } + ArgumentNullException.ThrowIfNull(memberName); //Create a new fixup holder FixupHolder fixup = new FixupHolder(objectRequired, memberName, FixupHolder.DelayedFixup); @@ -976,10 +962,7 @@ public virtual void RecordArrayElementFixup(long arrayToBeFixed, int[] indices, { throw new ArgumentOutOfRangeException(arrayToBeFixed <= 0 ? nameof(arrayToBeFixed) : nameof(objectRequired), SR.Serialization_IdTooSmall); } - if (indices == null) - { - throw new ArgumentNullException(nameof(indices)); - } + ArgumentNullException.ThrowIfNull(indices); FixupHolder fixup = new FixupHolder(objectRequired, indices, FixupHolder.ArrayFixup); RegisterFixup(fixup, arrayToBeFixed, objectRequired); diff --git a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/SurrogateSelector.cs b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/SurrogateSelector.cs index 39bb23890fdee1..17703be74d3b29 100644 --- a/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/SurrogateSelector.cs +++ b/src/libraries/System.Runtime.Serialization.Formatters/src/System/Runtime/Serialization/SurrogateSelector.cs @@ -11,17 +11,8 @@ public class SurrogateSelector : ISurrogateSelector internal readonly SurrogateHashtable _surrogates = new SurrogateHashtable(32); internal ISurrogateSelector? _nextSelector; - public virtual void AddSurrogate(Type type, StreamingContext context, ISerializationSurrogate surrogate) + public virtual void AddSurrogate(Type type!!, StreamingContext context, ISerializationSurrogate surrogate!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - if (surrogate == null) - { - throw new ArgumentNullException(nameof(surrogate)); - } - var key = new SurrogateKey(type, context); _surrogates.Add(key, surrogate); // Hashtable does duplicate checking. } @@ -56,13 +47,8 @@ private static bool HasCycle(ISurrogateSelector selector) // Adds another selector to check if we don't have match within this selector. // The logic is:"Add this onto the list as the first thing that you check after yourself." - public virtual void ChainSelector(ISurrogateSelector selector) + public virtual void ChainSelector(ISurrogateSelector selector!!) { - if (selector == null) - { - throw new ArgumentNullException(nameof(selector)); - } - // Verify that we don't try and add ourself twice. if (selector == this) { @@ -150,13 +136,8 @@ public virtual void ChainSelector(ISurrogateSelector selector) // Gets the surrogate for a particular type. If this selector can't // provide a surrogate, it checks with all of it's children before returning null. - public virtual ISerializationSurrogate? GetSurrogate(Type type, StreamingContext context, out ISurrogateSelector selector) + public virtual ISerializationSurrogate? GetSurrogate(Type type!!, StreamingContext context, out ISurrogateSelector selector) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - selector = this; SurrogateKey key = new SurrogateKey(type, context); @@ -174,13 +155,8 @@ public virtual void ChainSelector(ISurrogateSelector selector) // Removes the surrogate associated with a given type. Does not // check chained surrogates. - public virtual void RemoveSurrogate(Type type, StreamingContext context) + public virtual void RemoveSurrogate(Type type!!, StreamingContext context) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - SurrogateKey key = new SurrogateKey(type, context); _surrogates.Remove(key); } diff --git a/src/libraries/System.Security.AccessControl/src/System.Security.AccessControl.csproj b/src/libraries/System.Security.AccessControl/src/System.Security.AccessControl.csproj index 2b95d0edcd4449..98ab4777d2f60a 100644 --- a/src/libraries/System.Security.AccessControl/src/System.Security.AccessControl.csproj +++ b/src/libraries/System.Security.AccessControl/src/System.Security.AccessControl.csproj @@ -25,6 +25,8 @@ + MaxBinaryLength) { throw new OverflowException(SR.AccessControl_AclTooLong); @@ -1857,14 +1833,9 @@ internal CommonAcl(bool isContainer, bool isDS, byte revision, int capacity) // copy of the ACL passed in // - internal CommonAcl(bool isContainer, bool isDS, RawAcl rawAcl, bool trusted, bool isDacl) + internal CommonAcl(bool isContainer, bool isDS, RawAcl rawAcl!!, bool trusted, bool isDacl) : base() { - if (rawAcl == null) - { - throw new ArgumentNullException(nameof(rawAcl)); - } - _isContainer = isContainer; _isDS = isDS; @@ -1985,13 +1956,8 @@ internal void CheckFlags(InheritanceFlags inheritanceFlags, PropagationFlags pro // Helper function behind all the AddXXX methods for qualified aces // - internal void AddQualifiedAce(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType) + internal void AddQualifiedAce(SecurityIdentifier sid!!, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType) { - if (sid == null) - { - throw new ArgumentNullException(nameof(sid)); - } - ThrowIfNotCanonical(); bool aceMerged = false; // if still false after all attempts to merge, create new entry @@ -2068,13 +2034,8 @@ internal void AddQualifiedAce(SecurityIdentifier sid, AceQualifier qualifier, in // Helper function behind all the SetXXX methods // - internal void SetQualifiedAce(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType) + internal void SetQualifiedAce(SecurityIdentifier sid!!, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType) { - if (sid == null) - { - throw new ArgumentNullException(nameof(sid)); - } - if (qualifier == AceQualifier.SystemAudit && ((flags & AceFlags.AuditFlags) == 0)) { @@ -2856,13 +2817,8 @@ public void RemoveInheritedAces() OnAclModificationTried(); } - public void Purge(SecurityIdentifier sid) + public void Purge(SecurityIdentifier sid!!) { - if (sid == null) - { - throw new ArgumentNullException(nameof(sid)); - } - ThrowIfNotCanonical(); for (int i = Count - 1; i >= 0; i--) diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/CommonObjectSecurity.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/CommonObjectSecurity.cs index 81fa5c2dab9980..1c60bdc45dbe2b 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/CommonObjectSecurity.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/CommonObjectSecurity.cs @@ -222,13 +222,8 @@ private bool AceNeedsTranslation([NotNullWhen(true)] CommonAce? ace, bool isAcce // // Modifies the DACL // - protected override bool ModifyAccess(AccessControlModification modification, AccessRule rule, out bool modified) + protected override bool ModifyAccess(AccessControlModification modification, AccessRule rule!!, out bool modified) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try { @@ -352,13 +347,8 @@ protected override bool ModifyAccess(AccessControlModification modification, Acc // Modifies the SACL // - protected override bool ModifyAudit(AccessControlModification modification, AuditRule rule, out bool modified) + protected override bool ModifyAudit(AccessControlModification modification, AuditRule rule!!, out bool modified) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try { @@ -435,13 +425,8 @@ protected override bool ModifyAudit(AccessControlModification modification, Audi #region Public Methods - protected void AddAccessRule(AccessRule rule) + protected void AddAccessRule(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -454,13 +439,8 @@ protected void AddAccessRule(AccessRule rule) } } - protected void SetAccessRule(AccessRule rule) + protected void SetAccessRule(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -473,13 +453,8 @@ protected void SetAccessRule(AccessRule rule) } } - protected void ResetAccessRule(AccessRule rule) + protected void ResetAccessRule(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -494,13 +469,8 @@ protected void ResetAccessRule(AccessRule rule) return; } - protected bool RemoveAccessRule(AccessRule rule) + protected bool RemoveAccessRule(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -518,13 +488,8 @@ protected bool RemoveAccessRule(AccessRule rule) } } - protected void RemoveAccessRuleAll(AccessRule rule) + protected void RemoveAccessRuleAll(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -544,13 +509,8 @@ protected void RemoveAccessRuleAll(AccessRule rule) return; } - protected void RemoveAccessRuleSpecific(AccessRule rule) + protected void RemoveAccessRuleSpecific(AccessRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -568,13 +528,8 @@ protected void RemoveAccessRuleSpecific(AccessRule rule) } } - protected void AddAuditRule(AuditRule rule) + protected void AddAuditRule(AuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -587,13 +542,8 @@ protected void AddAuditRule(AuditRule rule) } } - protected void SetAuditRule(AuditRule rule) + protected void SetAuditRule(AuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -606,13 +556,8 @@ protected void SetAuditRule(AuditRule rule) } } - protected bool RemoveAuditRule(AuditRule rule) + protected bool RemoveAuditRule(AuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -625,13 +570,8 @@ protected bool RemoveAuditRule(AuditRule rule) } } - protected void RemoveAuditRuleAll(AuditRule rule) + protected void RemoveAuditRuleAll(AuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try @@ -644,13 +584,8 @@ protected void RemoveAuditRuleAll(AuditRule rule) } } - protected void RemoveAuditRuleSpecific(AuditRule rule) + protected void RemoveAuditRuleSpecific(AuditRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - WriteLock(); try diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/NativeObjectSecurity.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/NativeObjectSecurity.cs index 6a50a775a1ea41..d375fde326d44d 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/NativeObjectSecurity.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/NativeObjectSecurity.cs @@ -343,13 +343,8 @@ protected sealed override void Persist(string name, AccessControlSections includ Persist(name, includeSections, _exceptionContext); } - protected void Persist(string name, AccessControlSections includeSections, object? exceptionContext) + protected void Persist(string name!!, AccessControlSections includeSections, object? exceptionContext) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } - Persist(name, null, includeSections, exceptionContext); } @@ -364,13 +359,8 @@ protected sealed override void Persist(SafeHandle handle, AccessControlSections Persist(handle, includeSections, _exceptionContext); } - protected void Persist(SafeHandle handle, AccessControlSections includeSections, object? exceptionContext) + protected void Persist(SafeHandle handle!!, AccessControlSections includeSections, object? exceptionContext) { - if (handle == null) - { - throw new ArgumentNullException(nameof(handle)); - } - Persist(null, handle, includeSections, exceptionContext); } #endregion diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/ObjectSecurity.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/ObjectSecurity.cs index b07608cc5e05ef..2edf3e0cc7dd85 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/ObjectSecurity.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/ObjectSecurity.cs @@ -71,14 +71,9 @@ protected ObjectSecurity(bool isContainer, bool isDS) _securityDescriptor = new CommonSecurityDescriptor(isContainer, isDS, ControlFlags.None, null, null, null, dacl); } - protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor) + protected ObjectSecurity(CommonSecurityDescriptor securityDescriptor!!) : this() { - if (securityDescriptor == null) - { - throw new ArgumentNullException(nameof(securityDescriptor)); - } - _securityDescriptor = securityDescriptor; } @@ -361,13 +356,8 @@ protected virtual void Persist(SafeHandle handle, AccessControlSections includeS } } - public void SetOwner(IdentityReference identity) + public void SetOwner(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - WriteLock(); try @@ -404,13 +394,8 @@ public void SetOwner(IdentityReference identity) } } - public void SetGroup(IdentityReference identity) + public void SetGroup(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - WriteLock(); try @@ -424,13 +409,8 @@ public void SetGroup(IdentityReference identity) } } - public virtual void PurgeAccessRules(IdentityReference identity) + public virtual void PurgeAccessRules(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - WriteLock(); try @@ -444,12 +424,8 @@ public virtual void PurgeAccessRules(IdentityReference identity) } } - public virtual void PurgeAuditRules(IdentityReference identity) + public virtual void PurgeAuditRules(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } WriteLock(); @@ -586,13 +562,8 @@ public void SetSecurityDescriptorSddlForm(string sddlForm) SetSecurityDescriptorSddlForm(sddlForm, AccessControlSections.All); } - public void SetSecurityDescriptorSddlForm(string sddlForm, AccessControlSections includeSections) + public void SetSecurityDescriptorSddlForm(string sddlForm!!, AccessControlSections includeSections) { - if (sddlForm == null) - { - throw new ArgumentNullException(nameof(sddlForm)); - } - if ((includeSections & AccessControlSections.All) == 0) { throw new ArgumentException( @@ -635,13 +606,8 @@ public void SetSecurityDescriptorBinaryForm(byte[] binaryForm) SetSecurityDescriptorBinaryForm(binaryForm, AccessControlSections.All); } - public void SetSecurityDescriptorBinaryForm(byte[] binaryForm, AccessControlSections includeSections) + public void SetSecurityDescriptorBinaryForm(byte[] binaryForm!!, AccessControlSections includeSections) { - if (binaryForm == null) - { - throw new ArgumentNullException(nameof(binaryForm)); - } - if ((includeSections & AccessControlSections.All) == 0) { throw new ArgumentException( @@ -668,13 +634,8 @@ public void SetSecurityDescriptorBinaryForm(byte[] binaryForm, AccessControlSect protected abstract bool ModifyAccess(AccessControlModification modification, AccessRule rule, out bool modified); protected abstract bool ModifyAudit(AccessControlModification modification, AuditRule rule, out bool modified); - public virtual bool ModifyAccessRule(AccessControlModification modification, AccessRule rule, out bool modified) + public virtual bool ModifyAccessRule(AccessControlModification modification, AccessRule rule!!, out bool modified) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - if (!this.AccessRuleType.IsAssignableFrom(rule.GetType())) { throw new ArgumentException( @@ -694,13 +655,8 @@ public virtual bool ModifyAccessRule(AccessControlModification modification, Acc } } - public virtual bool ModifyAuditRule(AccessControlModification modification, AuditRule rule, out bool modified) + public virtual bool ModifyAuditRule(AccessControlModification modification, AuditRule rule!!, out bool modified) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } - if (!this.AuditRuleType.IsAssignableFrom(rule.GetType())) { throw new ArgumentException( diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Privilege.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Privilege.cs index 49c2d23a33ff1f..c184a1ac9e15bc 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Privilege.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Privilege.cs @@ -361,13 +361,8 @@ public bool IsImpersonating #region Constructors - public Privilege(string privilegeName) + public Privilege(string privilegeName!!) { - if (privilegeName == null) - { - throw new ArgumentNullException(nameof(privilegeName)); - } - this.luid = LuidFromPrivilege(privilegeName); } #endregion diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Rules.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Rules.cs index 201acabc7a52ca..3121312f613f15 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Rules.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/Rules.cs @@ -31,17 +31,12 @@ public abstract class AuthorizationRule #region Constructors protected internal AuthorizationRule( - IdentityReference identity, + IdentityReference identity!!, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - if (accessMask == 0) { throw new ArgumentException(SR.Argument_ArgumentZero, nameof(accessMask)); diff --git a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs index 6c4a290db11dfe..8ce2a85e103ad7 100644 --- a/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs +++ b/src/libraries/System.Security.AccessControl/src/System/Security/AccessControl/SecurityDescriptor.cs @@ -257,13 +257,8 @@ public string GetSddlForm(AccessControlSections includeSections) // Converts the security descriptor to its binary form // - public void GetBinaryForm(byte[] binaryForm, int offset) + public void GetBinaryForm(byte[] binaryForm!!, int offset) { - if (binaryForm == null) - { - throw new ArgumentNullException(nameof(binaryForm)); - } - if (offset < 0) { throw new ArgumentOutOfRangeException(nameof(offset), @@ -466,18 +461,13 @@ public RawSecurityDescriptor(string sddlForm) // Important: the representation must be in self-relative format // - public RawSecurityDescriptor(byte[] binaryForm, int offset) + public RawSecurityDescriptor(byte[] binaryForm!!, int offset) : base() { // // The array passed in must be valid // - if (binaryForm == null) - { - throw new ArgumentNullException(nameof(binaryForm)); - } - if (offset < 0) { // @@ -621,13 +611,8 @@ public RawSecurityDescriptor(byte[] binaryForm, int offset) #region Static Methods - private static byte[] BinaryFormFromSddlForm(string sddlForm) + private static byte[] BinaryFormFromSddlForm(string sddlForm!!) { - if (sddlForm == null) - { - throw new ArgumentNullException(nameof(sddlForm)); - } - int error; IntPtr byteArray = IntPtr.Zero; uint byteArraySize = 0; @@ -939,13 +924,8 @@ public CommonSecurityDescriptor(bool isContainer, bool isDS, RawSecurityDescript { } - internal CommonSecurityDescriptor(bool isContainer, bool isDS, RawSecurityDescriptor rawSecurityDescriptor, bool trusted) + internal CommonSecurityDescriptor(bool isContainer, bool isDS, RawSecurityDescriptor rawSecurityDescriptor!!, bool trusted) { - if (rawSecurityDescriptor == null) - { - throw new ArgumentNullException(nameof(rawSecurityDescriptor)); - } - CreateFromParts( isContainer, isDS, @@ -1199,26 +1179,16 @@ public void SetDiscretionaryAclProtection(bool isProtected, bool preserveInherit } } - public void PurgeAccessControl(SecurityIdentifier sid) + public void PurgeAccessControl(SecurityIdentifier sid!!) { - if (sid == null) - { - throw new ArgumentNullException(nameof(sid)); - } - if (DiscretionaryAcl != null) { DiscretionaryAcl.Purge(sid); } } - public void PurgeAudit(SecurityIdentifier sid) + public void PurgeAudit(SecurityIdentifier sid!!) { - if (sid == null) - { - throw new ArgumentNullException(nameof(sid)); - } - if (SystemAcl != null) { SystemAcl.Purge(sid); diff --git a/src/libraries/System.Security.Claims/src/System/Security/Claims/Claim.cs b/src/libraries/System.Security.Claims/src/System/Security/Claims/Claim.cs index fbb764fb0d00f0..8e7e191416d0f7 100644 --- a/src/libraries/System.Security.Claims/src/System/Security/Claims/Claim.cs +++ b/src/libraries/System.Security.Claims/src/System/Security/Claims/Claim.cs @@ -56,13 +56,8 @@ public Claim(BinaryReader reader) /// a pointing to a . /// the value for , which is the that has these claims. /// if 'reader' is null. - public Claim(BinaryReader reader, ClaimsIdentity? subject) + public Claim(BinaryReader reader!!, ClaimsIdentity? subject) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - _subject = subject; SerializationMask mask = (SerializationMask)reader.ReadInt32(); @@ -251,18 +246,8 @@ public Claim(string type, string value, string? valueType, string? issuer, strin /// The subject that this claim describes. /// This allows adding a property when adding a Claim. /// The value associated with the property. - internal Claim(string type, string value, string? valueType, string? issuer, string? originalIssuer, ClaimsIdentity? subject, string? propertyKey, string? propertyValue) + internal Claim(string type!!, string value!!, string? valueType, string? issuer, string? originalIssuer, ClaimsIdentity? subject, string? propertyKey, string? propertyValue) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - _type = type; _value = value; _valueType = string.IsNullOrEmpty(valueType) ? ClaimValueTypes.String : valueType; @@ -295,11 +280,8 @@ protected Claim(Claim other) /// the to assign to . /// will be set to 'subject'. /// if 'other' is null. - protected Claim(Claim other, ClaimsIdentity? subject) + protected Claim(Claim other!!, ClaimsIdentity? subject) { - if (other == null) - throw new ArgumentNullException(nameof(other)); - _issuer = other._issuer; _originalIssuer = other._originalIssuer; _subject = subject; @@ -432,13 +414,8 @@ public virtual void WriteTo(BinaryWriter writer) /// the to use for data storage. /// additional data provided by derived type. /// if 'writer' is null. - protected virtual void WriteTo(BinaryWriter writer, byte[]? userData) + protected virtual void WriteTo(BinaryWriter writer!!, byte[]? userData) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - int numberOfPropertiesWritten = 1; SerializationMask mask = SerializationMask.None; if (string.Equals(_type, ClaimsIdentity.DefaultNameClaimType)) diff --git a/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs b/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs index 6da13d9a9bf80c..fa49abae75cb4f 100644 --- a/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs +++ b/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs @@ -195,11 +195,8 @@ public ClaimsIdentity(IIdentity? identity, IEnumerable? claims, string? a /// /// a pointing to a . /// if 'reader' is null. - public ClaimsIdentity(BinaryReader reader) + public ClaimsIdentity(BinaryReader reader!!) { - if (reader == null) - throw new ArgumentNullException(nameof(reader)); - Initialize(reader); } @@ -208,13 +205,8 @@ public ClaimsIdentity(BinaryReader reader) /// /// to copy. /// if 'other' is null. - protected ClaimsIdentity(ClaimsIdentity other) + protected ClaimsIdentity(ClaimsIdentity other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - if (other._actor != null) { _actor = other._actor.Clone(); @@ -417,13 +409,8 @@ public virtual ClaimsIdentity Clone() /// the add. /// If != this, then Claim.Clone(this) is called before the claim is added. /// if 'claim' is null. - public virtual void AddClaim(Claim claim) + public virtual void AddClaim(Claim claim!!) { - if (claim == null) - { - throw new ArgumentNullException(nameof(claim)); - } - if (object.ReferenceEquals(claim.Subject, this)) { _instanceClaims.Add(claim); @@ -440,13 +427,8 @@ public virtual void AddClaim(Claim claim) /// Enumeration of claims to add. /// Each claim is examined and if != this, then Claim.Clone(this) is called before the claim is added. /// if 'claims' is null. - public virtual void AddClaims(IEnumerable claims) + public virtual void AddClaims(IEnumerable claims!!) { - if (claims == null) - { - throw new ArgumentNullException(nameof(claims)); - } - foreach (Claim? claim in claims) { if (claim == null) @@ -557,13 +539,8 @@ private void SafeAddClaim(Claim? claim) /// The function that performs the matching logic. /// A of matched claims. /// if 'match' is null. - public virtual IEnumerable FindAll(Predicate match) + public virtual IEnumerable FindAll(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - foreach (Claim claim in Claims) { if (match(claim)) @@ -580,13 +557,8 @@ public virtual IEnumerable FindAll(Predicate match) /// A of matched claims. /// Comparison is: StringComparison.OrdinalIgnoreCase. /// if 'type' is null. - public virtual IEnumerable FindAll(string type) + public virtual IEnumerable FindAll(string type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - foreach (Claim claim in Claims) { if (claim != null) @@ -605,13 +577,8 @@ public virtual IEnumerable FindAll(string type) /// The function that performs the matching logic. /// A , null if nothing matches. /// if 'match' is null. - public virtual Claim? FindFirst(Predicate match) + public virtual Claim? FindFirst(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - foreach (Claim claim in Claims) { if (match(claim)) @@ -630,13 +597,8 @@ public virtual IEnumerable FindAll(string type) /// A , null if nothing matches. /// Comparison is: StringComparison.OrdinalIgnoreCase. /// if 'type' is null. - public virtual Claim? FindFirst(string type) + public virtual Claim? FindFirst(string type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - foreach (Claim claim in Claims) { if (claim != null) @@ -657,13 +619,8 @@ public virtual IEnumerable FindAll(string type) /// The function that performs the matching logic. /// true if a claim is found, false otherwise. /// if 'match' is null. - public virtual bool HasClaim(Predicate match) + public virtual bool HasClaim(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - foreach (Claim claim in Claims) { if (match(claim)) @@ -684,18 +641,8 @@ public virtual bool HasClaim(Predicate match) /// Comparison is: StringComparison.OrdinalIgnoreCase for Claim.Type, StringComparison.Ordinal for Claim.Value. /// if 'type' is null. /// if 'value' is null. - public virtual bool HasClaim(string type, string value) + public virtual bool HasClaim(string type!!, string value!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - foreach (Claim claim in Claims) { if (claim != null @@ -715,13 +662,8 @@ public virtual bool HasClaim(string type, string value) /// /// a pointing to a . /// if 'reader' is null. - private void Initialize(BinaryReader reader) + private void Initialize(BinaryReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - SerializationMask mask = (SerializationMask)reader.ReadInt32(); int numPropertiesRead = 0; int numPropertiesToRead = reader.ReadInt32(); @@ -798,13 +740,8 @@ private void Initialize(BinaryReader reader) /// /// the that points at the claim. /// a new . - protected virtual Claim CreateClaim(BinaryReader reader) + protected virtual Claim CreateClaim(BinaryReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return new Claim(reader, this); } @@ -824,13 +761,8 @@ public virtual void WriteTo(BinaryWriter writer) /// the to use for data storage. /// additional data provided by derived type. /// if 'writer' is null. - protected virtual void WriteTo(BinaryWriter writer, byte[]? userData) + protected virtual void WriteTo(BinaryWriter writer!!, byte[]? userData) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - int numberOfPropertiesWritten = 0; var mask = SerializationMask.None; if (_authenticationType != null) diff --git a/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsPrincipal.cs b/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsPrincipal.cs index 4e99666d326175..59d4b794abf131 100644 --- a/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsPrincipal.cs +++ b/src/libraries/System.Security.Claims/src/System/Security/Claims/ClaimsPrincipal.cs @@ -52,13 +52,8 @@ protected ClaimsPrincipal(SerializationInfo info, StreamingContext context) /// /// This method iterates through the collection of ClaimsIdentities and chooses an identity as the primary. /// - private static ClaimsIdentity? SelectPrimaryIdentity(IEnumerable identities) + private static ClaimsIdentity? SelectPrimaryIdentity(IEnumerable identities!!) { - if (identities == null) - { - throw new ArgumentNullException(nameof(identities)); - } - foreach (ClaimsIdentity identity in identities) { if (identity != null) @@ -106,13 +101,8 @@ public ClaimsPrincipal() /// /// the subjects in the principal. /// if 'identities' is null. - public ClaimsPrincipal(IEnumerable identities) + public ClaimsPrincipal(IEnumerable identities!!) { - if (identities == null) - { - throw new ArgumentNullException(nameof(identities)); - } - _identities.AddRange(identities); } @@ -121,13 +111,8 @@ public ClaimsPrincipal(IEnumerable identities) /// /// representing the subject in the principal. /// if 'identity' is null. - public ClaimsPrincipal(IIdentity identity) + public ClaimsPrincipal(IIdentity identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - if (identity is ClaimsIdentity ci) { _identities.Add(ci); @@ -143,13 +128,8 @@ public ClaimsPrincipal(IIdentity identity) /// /// used to form this instance. /// if 'principal' is null. - public ClaimsPrincipal(IPrincipal principal) + public ClaimsPrincipal(IPrincipal principal!!) { - if (null == principal) - { - throw new ArgumentNullException(nameof(principal)); - } - // // If IPrincipal is a ClaimsPrincipal add all of the identities // If IPrincipal is not a ClaimsPrincipal, create a new identity from IPrincipal.Identity @@ -174,13 +154,8 @@ public ClaimsPrincipal(IPrincipal principal) /// /// a pointing to a . /// if 'reader' is null. - public ClaimsPrincipal(BinaryReader reader) + public ClaimsPrincipal(BinaryReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - SerializationMask mask = (SerializationMask)reader.ReadInt32(); int numPropertiesToRead = reader.ReadInt32(); int numPropertiesRead = 0; @@ -213,13 +188,8 @@ public ClaimsPrincipal(BinaryReader reader) /// /// the add. /// if 'identity' is null. - public virtual void AddIdentity(ClaimsIdentity identity) + public virtual void AddIdentity(ClaimsIdentity identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - _identities.Add(identity); } @@ -228,13 +198,8 @@ public virtual void AddIdentity(ClaimsIdentity identity) /// /// Enumeration of ClaimsIdentities to add. /// if 'identities' is null. - public virtual void AddIdentities(IEnumerable identities) + public virtual void AddIdentities(IEnumerable identities!!) { - if (identities == null) - { - throw new ArgumentNullException(nameof(identities)); - } - _identities.AddRange(identities); } @@ -280,13 +245,8 @@ public virtual ClaimsPrincipal Clone() /// the that points at the claim. /// if 'reader' is null. /// a new . - protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader) + protected virtual ClaimsIdentity CreateClaimsIdentity(BinaryReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return new ClaimsIdentity(reader); } @@ -309,13 +269,8 @@ public static ClaimsPrincipal? Current /// A of matched claims. /// Each is called. . /// if 'match' is null. - public virtual IEnumerable FindAll(Predicate match) + public virtual IEnumerable FindAll(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - foreach (ClaimsIdentity identity in Identities) { if (identity != null) @@ -335,13 +290,8 @@ public virtual IEnumerable FindAll(Predicate match) /// A of matched claims. /// Each is called. . /// if 'type' is null. - public virtual IEnumerable FindAll(string type) + public virtual IEnumerable FindAll(string type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - foreach (ClaimsIdentity identity in Identities) { if (identity != null) @@ -361,13 +311,8 @@ public virtual IEnumerable FindAll(string type) /// A , null if nothing matches. /// Each is called. . /// if 'match' is null. - public virtual Claim? FindFirst(Predicate match) + public virtual Claim? FindFirst(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - Claim? claim = null; foreach (ClaimsIdentity identity in Identities) @@ -392,13 +337,8 @@ public virtual IEnumerable FindAll(string type) /// A , null if nothing matches. /// Each is called. . /// if 'type' is null. - public virtual Claim? FindFirst(string type) + public virtual Claim? FindFirst(string type!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - Claim? claim = null; for (int i = 0; i < _identities.Count; i++) @@ -423,13 +363,8 @@ public virtual IEnumerable FindAll(string type) /// true if a claim is found, false otherwise. /// Each is called. . /// if 'match' is null. - public virtual bool HasClaim(Predicate match) + public virtual bool HasClaim(Predicate match!!) { - if (match == null) - { - throw new ArgumentNullException(nameof(match)); - } - for (int i = 0; i < _identities.Count; i++) { if (_identities[i] != null) @@ -453,18 +388,8 @@ public virtual bool HasClaim(Predicate match) /// Each is called. . /// if 'type' is null. /// if 'value' is null. - public virtual bool HasClaim(string type, string value) + public virtual bool HasClaim(string type!!, string value!!) { - if (type == null) - { - throw new ArgumentNullException(nameof(type)); - } - - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - for (int i = 0; i < _identities.Count; i++) { if (_identities[i] != null) @@ -546,13 +471,8 @@ public virtual void WriteTo(BinaryWriter writer) /// the to use for data storage. /// additional data provided by derived type. /// if 'writer' is null. - protected virtual void WriteTo(BinaryWriter writer, byte[]? userData) + protected virtual void WriteTo(BinaryWriter writer!!, byte[]? userData) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - int numberOfPropertiesWritten = 0; var mask = SerializationMask.None; if (_identities.Count > 0) diff --git a/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericIdentity.cs b/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericIdentity.cs index bb222ee9c77af3..13e034120e47b3 100644 --- a/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericIdentity.cs +++ b/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericIdentity.cs @@ -11,24 +11,16 @@ public class GenericIdentity : ClaimsIdentity private readonly string m_name; private readonly string m_type; - public GenericIdentity(string name) + public GenericIdentity(string name!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - m_name = name; m_type = ""; AddNameClaim(); } - public GenericIdentity(string name, string type) + public GenericIdentity(string name!!, string type!!) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - if (type == null) - throw new ArgumentNullException(nameof(type)); - m_name = name; m_type = type; diff --git a/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs b/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs index ed11066aed5de9..1cfeabf5a5677a 100644 --- a/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs +++ b/src/libraries/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs @@ -12,11 +12,8 @@ public class GenericPrincipal : ClaimsPrincipal private readonly IIdentity m_identity; private readonly string[]? m_roles; - public GenericPrincipal(IIdentity identity, string[]? roles) + public GenericPrincipal(IIdentity identity!!, string[]? roles) { - if (identity == null) - throw new ArgumentNullException(nameof(identity)); - m_identity = identity; if (roles != null) { diff --git a/src/libraries/System.Security.Cryptography.Cose/Directory.Build.props b/src/libraries/System.Security.Cryptography.Cose/Directory.Build.props new file mode 100644 index 00000000000000..43dc3a2640bbae --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/Directory.Build.props @@ -0,0 +1,6 @@ + + + + true + + diff --git a/src/libraries/System.Security.Cryptography.Cose/System.Security.Cryptography.Cose.sln b/src/libraries/System.Security.Cryptography.Cose/System.Security.Cryptography.Cose.sln new file mode 100644 index 00000000000000..d237a90323ac76 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/System.Security.Cryptography.Cose.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.31914.37 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Security.Cryptography.Cose", "src\System.Security.Cryptography.Cose.csproj", "{CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{29B55087-85A2-4FCE-8303-8EE6B43B0094}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{9535F590-0F95-4174-BB1E-1A80193CAF55}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Security.Cryptography.Cose.Tests", "tests\System.Security.Cryptography.Cose.Tests.csproj", "{FFA43FB1-ED48-4105-A518-4D02CE72DB3F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{5F962CC3-0DD0-4428-9CF4-99035553DB85}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Security.Cryptography.Cose", "ref\System.Security.Cryptography.Cose.csproj", "{823EE247-FC47-444F-B9A0-32AF146D1789}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B}.Release|Any CPU.Build.0 = Release|Any CPU + {FFA43FB1-ED48-4105-A518-4D02CE72DB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFA43FB1-ED48-4105-A518-4D02CE72DB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFA43FB1-ED48-4105-A518-4D02CE72DB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFA43FB1-ED48-4105-A518-4D02CE72DB3F}.Release|Any CPU.Build.0 = Release|Any CPU + {823EE247-FC47-444F-B9A0-32AF146D1789}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {823EE247-FC47-444F-B9A0-32AF146D1789}.Debug|Any CPU.Build.0 = Debug|Any CPU + {823EE247-FC47-444F-B9A0-32AF146D1789}.Release|Any CPU.ActiveCfg = Release|Any CPU + {823EE247-FC47-444F-B9A0-32AF146D1789}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {CD19385A-1EDD-45DD-B4E4-BD1F2047BB2B} = {29B55087-85A2-4FCE-8303-8EE6B43B0094} + {FFA43FB1-ED48-4105-A518-4D02CE72DB3F} = {9535F590-0F95-4174-BB1E-1A80193CAF55} + {823EE247-FC47-444F-B9A0-32AF146D1789} = {5F962CC3-0DD0-4428-9CF4-99035553DB85} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {446B8AB2-9ED5-4475-A812-DE12AB4DE665} + EndGlobalSection +EndGlobal diff --git a/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.cs b/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.cs new file mode 100644 index 00000000000000..09b6afb8ad7441 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.cs @@ -0,0 +1,78 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// ------------------------------------------------------------------------------ +// Changes to this file must follow the https://aka.ms/api-review process. +// ------------------------------------------------------------------------------ + +namespace System.Security.Cryptography.Cose +{ + public readonly partial struct CoseHeaderLabel : System.IEquatable + { + public CoseHeaderLabel(int label) { throw null; } + public CoseHeaderLabel(string label) { throw null; } + public static System.Security.Cryptography.Cose.CoseHeaderLabel Algorithm { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel ContentType { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel CounterSignature { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel Critical { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel IV { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel KeyIdentifier { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseHeaderLabel PartialIV { get { throw null; } } + public override bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] object? obj) { throw null; } + public bool Equals(System.Security.Cryptography.Cose.CoseHeaderLabel other) { throw null; } + public override int GetHashCode() { throw null; } + public static bool operator ==(System.Security.Cryptography.Cose.CoseHeaderLabel left, System.Security.Cryptography.Cose.CoseHeaderLabel right) { throw null; } + public static bool operator !=(System.Security.Cryptography.Cose.CoseHeaderLabel left, System.Security.Cryptography.Cose.CoseHeaderLabel right) { throw null; } + } + public sealed partial class CoseHeaderMap : System.Collections.Generic.IEnumerable<(System.Security.Cryptography.Cose.CoseHeaderLabel Label, System.ReadOnlyMemory EncodedValue)>, System.Collections.IEnumerable + { + public CoseHeaderMap() { } + public bool IsReadOnly { get { throw null; } } + public System.ReadOnlyMemory GetEncodedValue(System.Security.Cryptography.Cose.CoseHeaderLabel label) { throw null; } + public System.Security.Cryptography.Cose.CoseHeaderMap.Enumerator GetEnumerator() { throw null; } + public System.ReadOnlySpan GetValueAsBytes(System.Security.Cryptography.Cose.CoseHeaderLabel label) { throw null; } + public int GetValueAsInt32(System.Security.Cryptography.Cose.CoseHeaderLabel label) { throw null; } + public string GetValueAsString(System.Security.Cryptography.Cose.CoseHeaderLabel label) { throw null; } + public void Remove(System.Security.Cryptography.Cose.CoseHeaderLabel label) { } + public void SetEncodedValue(System.Security.Cryptography.Cose.CoseHeaderLabel label, System.ReadOnlySpan encodedValue) { } + public void SetValue(System.Security.Cryptography.Cose.CoseHeaderLabel label, int value) { } + public void SetValue(System.Security.Cryptography.Cose.CoseHeaderLabel label, System.ReadOnlySpan value) { } + public void SetValue(System.Security.Cryptography.Cose.CoseHeaderLabel label, string value) { } + System.Collections.Generic.IEnumerator<(System.Security.Cryptography.Cose.CoseHeaderLabel Label, System.ReadOnlyMemory EncodedValue)> System.Collections.Generic.IEnumerable<(System.Security.Cryptography.Cose.CoseHeaderLabel Label, System.ReadOnlyMemory EncodedValue)>.GetEnumerator() { throw null; } + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } + public bool TryGetEncodedValue(System.Security.Cryptography.Cose.CoseHeaderLabel label, out System.ReadOnlyMemory encodedValue) { throw null; } + public partial struct Enumerator : System.Collections.Generic.IEnumerator<(System.Security.Cryptography.Cose.CoseHeaderLabel Label, System.ReadOnlyMemory EncodedValue)>, System.Collections.IEnumerator, System.IDisposable + { + public readonly (System.Security.Cryptography.Cose.CoseHeaderLabel Label, System.ReadOnlyMemory EncodedValue) Current { get { throw null; } } + object System.Collections.IEnumerator.Current { get { throw null; } } + public void Dispose() { } + public bool MoveNext() { throw null; } + public void Reset() { } + } + } + public abstract partial class CoseMessage + { + internal CoseMessage() { } + public System.ReadOnlyMemory? Content { get { throw null; } } + public System.Security.Cryptography.Cose.CoseHeaderMap ProtectedHeaders { get { throw null; } } + public System.Security.Cryptography.Cose.CoseHeaderMap UnprotectedHeaders { get { throw null; } } + public static System.Security.Cryptography.Cose.CoseSign1Message DecodeSign1(byte[] cborPayload) { throw null; } + } + public sealed partial class CoseSign1Message : System.Security.Cryptography.Cose.CoseMessage + { + internal CoseSign1Message() { } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public static byte[] Sign(byte[] content, System.Security.Cryptography.Cose.CoseHeaderMap protectedHeaders, System.Security.Cryptography.Cose.CoseHeaderMap unprotectedHeaders, System.Security.Cryptography.AsymmetricAlgorithm key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, bool isDetached = false) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public static byte[] Sign(byte[] content, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, bool isDetached = false) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public static byte[] Sign(byte[] content, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, bool isDetached = false) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public bool Verify(System.Security.Cryptography.ECDsa key) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public bool Verify(System.Security.Cryptography.ECDsa key, System.ReadOnlySpan content) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public bool Verify(System.Security.Cryptography.RSA key) { throw null; } + [System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")] + public bool Verify(System.Security.Cryptography.RSA key, System.ReadOnlySpan content) { throw null; } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.csproj b/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.csproj new file mode 100644 index 00000000000000..af6f2b9c57ba99 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/ref/System.Security.Cryptography.Cose.csproj @@ -0,0 +1,31 @@ + + + $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum) + enable + True + true + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libraries/System.Security.Cryptography.Cose/src/Resources/Strings.resx b/src/libraries/System.Security.Cryptography.Cose/src/Resources/Strings.resx new file mode 100644 index 00000000000000..6195fa302c171b --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/Resources/Strings.resx @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Not a valid CBOR encoded value, it must be a single value with no trailing data. + + + Decoded map is read only, headers cannot be added nor deleted. + + + Header '{0}' does not accept the specified value. + + + Label '{0}' does not exist is the map. + + + Array length for COSE_Sign1 must be four. + + + Protected map was incorrect. + + + Error while decoding COSE message. {0} + + + Error while decoding COSE message. See the inner exception for details. + + + Incorrect tag. Expected Sign1(18) or Untagged, Actual '{0}'. + + + Map label was incorrect. + + + CBOR payload contained trailing data after Sign1 message was complete. + + + Payload was incorrect. + + + COSE algorithm '{0}' doesn't match with the supported algorithms of '{1}'. + + + If specified, Algorithm (alg) must be a protected header. + + + COSE Algorithm '{0}' doesn't match with the specified Key '{1}' and Hash Algorithm '{2}'. + + + Protected and Unprotected buckets must not contain duplicate labels. + + + Unsuppoerted hash algorithm '{0}'. + + + Unsupported key '{0}'. + + + COSE algorithm '{0}' is unknown. + + + Algorithm header CBOR type was incorrect, expected int or tstr. + + + Algorithm (alg) header is required and it must be a protected header. + + + Algorithm (alg) header parameter was missing. + + + Content was not included in the message (detached message), provide a content to verify. + + + Content was included in the message (embedded message) and yet another content was provided for verification. + + + Critical and Counter Signature headers are currently not supported. + + \ No newline at end of file diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System.Security.Cryptography.Cose.csproj b/src/libraries/System.Security.Cryptography.Cose/src/System.Security.Cryptography.Cose.csproj new file mode 100644 index 00000000000000..e11459051691cb --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System.Security.Cryptography.Cose.csproj @@ -0,0 +1,42 @@ + + + $(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum) + enable + true + + true + True + true + Provides support for CBOR Object Signing and Encryption (COSE). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderLabel.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderLabel.cs new file mode 100644 index 00000000000000..7e78541511616f --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderLabel.cs @@ -0,0 +1,66 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.Versioning; + +namespace System.Security.Cryptography.Cose +{ + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public readonly struct CoseHeaderLabel : IEquatable + { + internal string LabelName => LabelAsString ?? LabelAsInt32.ToString(); + private string DebuggerDisplay => $"Label = {LabelName}, Type = {(LabelAsString != null ? typeof(string) : typeof(int))}"; + + // https://www.iana.org/assignments/cose/cose.xhtml#header-parameters + public static CoseHeaderLabel Algorithm => new CoseHeaderLabel(KnownHeaders.Alg); + public static CoseHeaderLabel Critical => new CoseHeaderLabel(KnownHeaders.Crit); + public static CoseHeaderLabel ContentType => new CoseHeaderLabel(KnownHeaders.ContentType); + public static CoseHeaderLabel KeyIdentifier => new CoseHeaderLabel(KnownHeaders.Kid); + public static CoseHeaderLabel IV => new CoseHeaderLabel(KnownHeaders.IV); + public static CoseHeaderLabel PartialIV => new CoseHeaderLabel(KnownHeaders.PartialIV); + public static CoseHeaderLabel CounterSignature => new CoseHeaderLabel(KnownHeaders.CounterSignature); + + internal int LabelAsInt32 { get; } + internal string? LabelAsString { get; } + + public CoseHeaderLabel(int label) + { + this = default; + LabelAsInt32 = label; + } + + public CoseHeaderLabel(string label) + { + if (label is null) + { + throw new ArgumentException(null, nameof(label)); + } + + this = default; + LabelAsString = label; + } + + public bool Equals(CoseHeaderLabel other) + { + return LabelAsString == other.LabelAsString && LabelAsInt32 == other.LabelAsInt32; + } + + public override bool Equals([NotNullWhen(true)] object? obj) => obj is CoseHeaderLabel otherObj && Equals(otherObj); + + public override int GetHashCode() + { + if (LabelAsString != null) + { + return LabelAsString.GetHashCode(); + } + + return LabelAsInt32.GetHashCode(); + } + + public static bool operator ==(CoseHeaderLabel left, CoseHeaderLabel right) => left.Equals(right); + + public static bool operator !=(CoseHeaderLabel left, CoseHeaderLabel right) => !left.Equals(right); + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderMap.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderMap.cs new file mode 100644 index 00000000000000..5c94ac7a23ae90 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseHeaderMap.cs @@ -0,0 +1,257 @@ +// 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; +using System.Collections.Generic; +using System.Diagnostics; +using System.Formats.Cbor; +using System.Runtime.Versioning; + +namespace System.Security.Cryptography.Cose +{ + public sealed class CoseHeaderMap : IEnumerable<(CoseHeaderLabel Label, ReadOnlyMemory EncodedValue)> + { + private static readonly byte[] s_emptyBstrEncoded = new byte[] { 0x40 }; + public bool IsReadOnly { get; internal set; } + + private readonly Dictionary> _headerParameters = new Dictionary>(); + + public CoseHeaderMap() : this (isReadOnly: false) { } + + internal CoseHeaderMap(bool isReadOnly) + { + IsReadOnly = isReadOnly; + } + + public bool TryGetEncodedValue(CoseHeaderLabel label, out ReadOnlyMemory encodedValue) + => _headerParameters.TryGetValue(label, out encodedValue); + + public ReadOnlyMemory GetEncodedValue(CoseHeaderLabel label) + { + if (TryGetEncodedValue(label, out ReadOnlyMemory encodedValue)) + { + return encodedValue; + } + + throw new InvalidOperationException(SR.Format(SR.CoseHeaderMapLabelDoeNotExist, label.LabelName)); + } + + public int GetValueAsInt32(CoseHeaderLabel label) + { + var reader = new CborReader(GetEncodedValue(label)); + int retVal = reader.ReadInt32(); + Debug.Assert(reader.BytesRemaining == 0); + return retVal; + } + + public string GetValueAsString(CoseHeaderLabel label) + { + var reader = new CborReader(GetEncodedValue(label)); + string retVal = reader.ReadTextString(); + Debug.Assert(reader.BytesRemaining == 0); + return retVal; + } + + public ReadOnlySpan GetValueAsBytes(CoseHeaderLabel label) + { + var reader = new CborReader(GetEncodedValue(label)); + ReadOnlySpan retVal = reader.ReadByteString(); + Debug.Assert(reader.BytesRemaining == 0); + return retVal; + } + + public void SetEncodedValue(CoseHeaderLabel label, ReadOnlySpan encodedValue) + => SetEncodedValue(label, new ReadOnlyMemory(encodedValue.ToArray())); + + internal void SetEncodedValue(CoseHeaderLabel label, ReadOnlyMemory encodedValue) + { + ValidateIsReadOnly(); + ValidateHeaderValue(label, null, encodedValue); + + _headerParameters[label] = encodedValue; + } + + public void SetValue(CoseHeaderLabel label, int value) + { + ValidateIsReadOnly(); + ValidateHeaderValue(label, value < 0 ? CborReaderState.NegativeInteger : CborReaderState.UnsignedInteger, null); + + var writer = new CborWriter(); + writer.WriteInt32(value); + _headerParameters[label] = writer.Encode(); + } + + public void SetValue(CoseHeaderLabel label, string value) + { + ValidateIsReadOnly(); + ValidateHeaderValue(label, CborReaderState.TextString, null); + + var writer = new CborWriter(); + writer.WriteTextString(value); + _headerParameters[label] = writer.Encode(); + } + + public void SetValue(CoseHeaderLabel label, ReadOnlySpan value) + { + ValidateIsReadOnly(); + ValidateHeaderValue(label, CborReaderState.ByteString, null); + + var writer = new CborWriter(); + writer.WriteByteString(value); + _headerParameters[label] = writer.Encode(); + } + + public void Remove(CoseHeaderLabel label) + { + ValidateIsReadOnly(); + _headerParameters.Remove(label); + } + + private void ValidateIsReadOnly() + { + if (IsReadOnly) + { + throw new InvalidOperationException(SR.CoseHeaderMapDecodedMapIsReadOnlyCannotSetValue); + } + } + + private void ValidateHeaderValue(CoseHeaderLabel label, CborReaderState? state, ReadOnlyMemory? encodedValue) + { + if (state != null) + { + Debug.Assert(encodedValue == null); + if (label.LabelAsString == null) + { + // all known headers are integers. + ValidateKnownHeaderValue(label.LabelAsInt32, state, null); + } + } + else + { + Debug.Assert(encodedValue != null); + var reader = new CborReader(encodedValue.Value); + + if (label.LabelAsString == null) + { + // all known headers are integers. + ValidateKnownHeaderValue(label.LabelAsInt32, reader.PeekState(), reader); + } + else + { + reader.SkipValue(); + } + + if (reader.BytesRemaining != 0) + { + throw new InvalidOperationException(SR.Format(SR.CoseHeaderMapCborEncodedValueNotValid, label)); + } + } + + static void ValidateKnownHeaderValue(int label, CborReaderState? initialState, CborReader? reader) + { + switch (label) + { + case KnownHeaders.Alg: + if (initialState != CborReaderState.NegativeInteger && + initialState != CborReaderState.UnsignedInteger && + initialState != CborReaderState.TextString) + { + throw new InvalidOperationException(SR.Format(SR.CoseHeaderMapHeaderDoesNotAcceptSpecifiedValue, label)); + } + reader?.SkipValue(); + break; + case KnownHeaders.Crit: + reader?.SkipValue(); // TODO + break; + case KnownHeaders.CounterSignature: + reader?.SkipValue(); // TODO + break; + case KnownHeaders.ContentType: + if (initialState != CborReaderState.TextString && + initialState != CborReaderState.UnsignedInteger) + { + throw new InvalidOperationException(SR.Format(SR.CoseHeaderMapHeaderDoesNotAcceptSpecifiedValue, label)); + } + reader?.SkipValue(); + break; + case KnownHeaders.Kid: + case KnownHeaders.IV: + case KnownHeaders.PartialIV: + if (initialState != CborReaderState.ByteString) + { + throw new InvalidOperationException(SR.Format(SR.CoseHeaderMapHeaderDoesNotAcceptSpecifiedValue, label)); + } + reader?.SkipValue(); + break; + default: + reader?.SkipValue(); + break; + } + } + } + + internal byte[] Encode(bool mustReturnEmptyBstrIfEmpty = false, int? algHeaderValueToSlip = null) + { + bool shouldSlipAlgHeader = algHeaderValueToSlip.HasValue; + + if (_headerParameters.Count == 0 && mustReturnEmptyBstrIfEmpty && !shouldSlipAlgHeader) + { + return s_emptyBstrEncoded; + } + + int mapLength = _headerParameters.Count; + if (shouldSlipAlgHeader) + { + mapLength++; + } + + var writer = new CborWriter(); + writer.WriteStartMap(mapLength); + + if (shouldSlipAlgHeader) + { + Debug.Assert(!TryGetEncodedValue(CoseHeaderLabel.Algorithm, out _)); + writer.WriteInt32(KnownHeaders.Alg); + writer.WriteInt32(algHeaderValueToSlip!.Value); + } + + foreach ((CoseHeaderLabel Label, ReadOnlyMemory EncodedValue) header in this) + { + CoseHeaderLabel label = header.Label; + if (label.LabelAsString == null) + { + writer.WriteInt32(label.LabelAsInt32); + } + else + { + writer.WriteTextString(label.LabelAsString); + } + writer.WriteEncodedValue(header.EncodedValue.Span); + } + writer.WriteEndMap(); + return writer.Encode(); + } + + public Enumerator GetEnumerator() => new Enumerator(_headerParameters.GetEnumerator()); + IEnumerator<(CoseHeaderLabel Label, ReadOnlyMemory EncodedValue)> IEnumerable<(CoseHeaderLabel Label, ReadOnlyMemory EncodedValue)>.GetEnumerator() => GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + public struct Enumerator : IEnumerator<(CoseHeaderLabel Label, ReadOnlyMemory EncodedValue)> + { + private Dictionary>.Enumerator _dictionaryEnumerator; + + internal Enumerator(Dictionary>.Enumerator dictionaryEnumerator) + { + _dictionaryEnumerator = dictionaryEnumerator; + } + + public readonly (CoseHeaderLabel Label, ReadOnlyMemory EncodedValue) Current => (_dictionaryEnumerator.Current.Key, _dictionaryEnumerator.Current.Value); + + object IEnumerator.Current => Current; + + public void Dispose() => _dictionaryEnumerator.Dispose(); + public bool MoveNext() => _dictionaryEnumerator.MoveNext(); + public void Reset() => ((IEnumerator)_dictionaryEnumerator).Reset(); + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseMessage.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseMessage.cs new file mode 100644 index 00000000000000..e3dfa52472ce20 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseMessage.cs @@ -0,0 +1,195 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Formats.Cbor; +using System.Runtime.Versioning; + +namespace System.Security.Cryptography.Cose +{ + public abstract class CoseMessage + { + internal const string PreviewFeatureMessage = "COSE is in preview."; + private const byte EmptyStringByte = 0xa0; + // COSE tags https://datatracker.ietf.org/doc/html/rfc8152#page-8 Table 1. + internal const CborTag Sign1Tag = (CborTag)18; + + internal byte[]? _content; + internal byte[] _signature; + internal byte[] _protectedHeaderAsBstr; + + private CoseHeaderMap _protectedHeaders; + private CoseHeaderMap _unprotectedHeaders; + public CoseHeaderMap ProtectedHeaders => _protectedHeaders; + public CoseHeaderMap UnprotectedHeaders => _unprotectedHeaders; + + internal CoseMessage(CoseHeaderMap protectedHeader, CoseHeaderMap unprotectedHeader, byte[]? content, byte[] signature, byte[] encodedProtectedHeader) + { + _content = content; + _signature = signature; + _protectedHeaderAsBstr = encodedProtectedHeader; + _protectedHeaders = protectedHeader; + _unprotectedHeaders = unprotectedHeader; + } + + // Sign and MAC also refer to the content as payload. + // Encrypt also refers to the content as cyphertext. + public ReadOnlyMemory? Content + { + get + { + if (_content != null) + { + return _content; + } + + return null; + } + } + + public static CoseSign1Message DecodeSign1(byte[] cborPayload) + { + try + { + var reader = new CborReader(cborPayload); + CborTag? tag = DecodeTag(reader); + if (tag != null && tag != Sign1Tag) + { + throw new CryptographicException(SR.Format(SR.DecodeSign1IncorrectTag, tag)); + } + + CoseSign1Message message = DecodeCoseSign1Core(reader); + return reader.BytesRemaining == 0 ? message : throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1MesageContainedTrailingData)); + } + catch (Exception ex) when (ex is CborContentException or InvalidOperationException) + { + throw new CryptographicException(SR.DecodeSign1ErrorWhileDecodingSeeInnerEx, ex); + } + } + + private static CborTag? DecodeTag(CborReader reader) + { + return reader.PeekState() switch + { + CborReaderState.Tag => reader.ReadTag(), + _ => null + }; + } + + private static CoseSign1Message DecodeCoseSign1Core(CborReader reader) + { + int? arrayLength = reader.ReadStartArray(); + if (arrayLength != 4) + { + throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1ArrayLengthMustBeFour)); + } + + var protectedHeader = new CoseHeaderMap(); + DecodeProtectedBucket(reader, protectedHeader, out byte[] protectedHeaderAsBstr); + protectedHeader.IsReadOnly = true; + + var unprotectedHeader = new CoseHeaderMap(); + DecodeUnprotectedBucket(reader, unprotectedHeader); + + ThrowIfDuplicateLabels(protectedHeader, unprotectedHeader); + + byte[]? payload = DecodePayload(reader); + byte[] signature = DecodeSignature(reader); + reader.ReadEndArray(); + + return new CoseSign1Message(protectedHeader, unprotectedHeader, payload, signature, protectedHeaderAsBstr); + } + + private static void DecodeProtectedBucket(CborReader reader, CoseHeaderMap headerParameters, out byte[] protectedHeaderAsBstr) + { + protectedHeaderAsBstr = reader.ReadByteString(); + if (protectedHeaderAsBstr.Length == 0) + { + throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1EncodedProtectedMapIncorrect)); + } + else if (protectedHeaderAsBstr.Length == 1 && protectedHeaderAsBstr[0] == EmptyStringByte) + { + return; + } + + var protectedHeaderReader = new CborReader(protectedHeaderAsBstr); + DecodeBucket(protectedHeaderReader, headerParameters); + + if (protectedHeaderReader.BytesRemaining != 0) + { + throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1EncodedProtectedMapIncorrect)); + } + } + + private static void DecodeUnprotectedBucket(CborReader reader, CoseHeaderMap headerParameters) + { + DecodeBucket(reader, headerParameters); + } + + private static void DecodeBucket(CborReader reader, CoseHeaderMap headerParameters) + { + int? length = reader.ReadStartMap(); + for (int i = 0; i < length; i++) + { + CoseHeaderLabel label = reader.PeekState() switch + { + CborReaderState.UnsignedInteger or CborReaderState.NegativeInteger => new CoseHeaderLabel(reader.ReadInt32()), + CborReaderState.TextString => new CoseHeaderLabel(reader.ReadTextString()), + _ => throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1MapLabelWasIncorrect)) + }; + headerParameters.SetEncodedValue(label, reader.ReadEncodedValue()); + } + reader.ReadEndMap(); + } + + private static byte[]? DecodePayload(CborReader reader) + { + CborReaderState state = reader.PeekState(); + if (state == CborReaderState.Null) + { + reader.ReadNull(); + return null; + } + if (state == CborReaderState.ByteString) + { + return reader.ReadByteString(); + } + + throw new CryptographicException(SR.Format(SR.DecodeSign1ErrorWhileDecoding, SR.DecodeSign1PayloadWasIncorrect)); + } + + private static byte[] DecodeSignature(CborReader reader) + { + return reader.ReadByteString(); + } + + internal static byte[] CreateToBeSigned(string context, ReadOnlySpan encodedProtectedHeader, ReadOnlySpan content) + { + var writer = new CborWriter(); + writer.WriteStartArray(4); + writer.WriteTextString(context); // context + writer.WriteByteString(encodedProtectedHeader); // body_protected + writer.WriteByteString(Span.Empty); // external_aad + writer.WriteByteString(content); //payload or content + writer.WriteEndArray(); + return writer.Encode(); + } + + // Validate duplicate labels https://datatracker.ietf.org/doc/html/rfc8152#section-3. + internal static void ThrowIfDuplicateLabels(CoseHeaderMap protectedHeaders, CoseHeaderMap unprotectedHeaders) + { + foreach ((CoseHeaderLabel Label, ReadOnlyMemory) header in protectedHeaders) + { + if (unprotectedHeaders.TryGetEncodedValue(header.Label, out _)) + { + throw new CryptographicException(SR.Sign1SignHeaderDuplicateLabels); + } + } + } + + internal enum KeyType + { + ECDsa, + RSA, + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseSign1Message.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseSign1Message.cs new file mode 100644 index 00000000000000..e88945ac29957c --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/CoseSign1Message.cs @@ -0,0 +1,304 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics; +using System.Formats.Cbor; +using System.Runtime.Versioning; + +namespace System.Security.Cryptography.Cose +{ + public sealed class CoseSign1Message : CoseMessage + { + private const string SigStructureCoxtextSign1 = "Signature1"; + private const int Sign1ArrayLegth = 4; + + internal CoseSign1Message(CoseHeaderMap protectedHeader, CoseHeaderMap unprotectedHeader, byte[]? content, byte[] signature, byte[] protectedHeaderAsBstr) + : base(protectedHeader, unprotectedHeader, content, signature, protectedHeaderAsBstr) { } + + [UnsupportedOSPlatform("browser")] + public static byte[] Sign(byte[] content!!, ECDsa key!!, HashAlgorithmName hashAlgorithm, bool isDetached = false) + { + byte[] encodedProtectedHeader = CreateEncodedProtectedHeader(KeyType.ECDsa, hashAlgorithm); + byte[] toBeSigned = CreateToBeSigned(SigStructureCoxtextSign1, encodedProtectedHeader, content); + byte[] signature = SignWithECDsa(key, toBeSigned, hashAlgorithm); + return SignCore(encodedProtectedHeader, GetEmptyCborMap(), signature, content, isDetached); + } + + [UnsupportedOSPlatform("browser")] + public static byte[] Sign(byte[] content!!, RSA key!!, HashAlgorithmName hashAlgorithm, bool isDetached = false) + { + byte[] encodedProtectedHeader = CreateEncodedProtectedHeader(KeyType.RSA, hashAlgorithm); + byte[] toBeSigned = CreateToBeSigned(SigStructureCoxtextSign1, encodedProtectedHeader, content); + byte[] signature = SignWithRSA(key, toBeSigned, hashAlgorithm); + return SignCore(encodedProtectedHeader, GetEmptyCborMap(), signature, content, isDetached); + } + + [UnsupportedOSPlatform("browser")] + public static byte[] Sign(byte[] content!!, CoseHeaderMap protectedHeaders!!, CoseHeaderMap unprotectedHeaders!!, AsymmetricAlgorithm key!!, HashAlgorithmName hashAlgorithm, bool isDetached = false) + { + KeyType keyType = key switch + { + ECDsa => KeyType.ECDsa, + RSA => KeyType.RSA, + _ => throw new CryptographicException(SR.Format(SR.Sign1SignUnsupportedKey, key.GetType())) + }; + + ThrowIfDuplicateLabels(protectedHeaders, unprotectedHeaders); + + int? algHeaderValueToSlip = ValidateOrSlipAlgorithmHeader(protectedHeaders, unprotectedHeaders, keyType, hashAlgorithm); + + byte[] encodedProtetedHeaders = protectedHeaders.Encode(mustReturnEmptyBstrIfEmpty: true, algHeaderValueToSlip); + byte[] toBeSigned = CreateToBeSigned(SigStructureCoxtextSign1, encodedProtetedHeaders, content); + + byte[] signature; + if (keyType == KeyType.ECDsa) + { + signature = SignWithECDsa((ECDsa)key, toBeSigned, hashAlgorithm); + } + else + { + signature = SignWithRSA((RSA)key, toBeSigned, hashAlgorithm); + } + + return SignCore(encodedProtetedHeaders, unprotectedHeaders.Encode(), signature, content, isDetached); + } + + private static byte[] SignCore( + ReadOnlySpan encodedProtectedHeader, + ReadOnlySpan encodedUnprotectedHeader, + ReadOnlySpan signature, + ReadOnlySpan content, + bool isDetached) + { + var writer = new CborWriter(); + writer.WriteTag(Sign1Tag); + writer.WriteStartArray(Sign1ArrayLegth); + writer.WriteByteString(encodedProtectedHeader); + writer.WriteEncodedValue(encodedUnprotectedHeader); + + if (isDetached) + { + writer.WriteNull(); + } + else + { + writer.WriteByteString(content); + } + + writer.WriteByteString(signature); + writer.WriteEndArray(); + + return writer.Encode(); + } + + [UnsupportedOSPlatform("browser")] + private static byte[] SignWithECDsa(ECDsa key, byte[] data, HashAlgorithmName hashAlgorithm) + => key.SignData(data, hashAlgorithm); + + [UnsupportedOSPlatform("browser")] + private static byte[] SignWithRSA(RSA key, byte[] data, HashAlgorithmName hashAlgorithm) + => key.SignData(data, hashAlgorithm, RSASignaturePadding.Pss); + + internal static byte[] CreateEncodedProtectedHeader(KeyType algType, HashAlgorithmName hashAlgorithm) + { + var writer = new CborWriter(); + writer.WriteStartMap(1); + writer.WriteInt32(KnownHeaders.Alg); + writer.WriteInt32(GetCoseAlgorithmHeaderFromKeyTypeAndHashAlgorithm(algType, hashAlgorithm)); + writer.WriteEndMap(); + return writer.Encode(); + } + + private static byte[] GetEmptyCborMap() + { + var writer = new CborWriter(); + writer.WriteStartMap(0); + writer.WriteEndMap(); + return writer.Encode(); + } + + [UnsupportedOSPlatform("browser")] + public bool Verify(ECDsa key) => VerifyECDsa(key, _content ?? throw new CryptographicException(SR.Sign1VerifyContentWasDetached)); + + [UnsupportedOSPlatform("browser")] + public bool Verify(RSA key) => VerifyRSA(key, _content ?? throw new CryptographicException(SR.Sign1VerifyContentWasDetached)); + + [UnsupportedOSPlatform("browser")] + public bool Verify(ECDsa key, ReadOnlySpan content) => VerifyECDsa(key, _content == null ? content : throw new CryptographicException(SR.Sign1VerifyContentWasEmbedded)); + + [UnsupportedOSPlatform("browser")] + public bool Verify(RSA key, ReadOnlySpan content) => VerifyRSA(key, _content == null ? content : throw new CryptographicException(SR.Sign1VerifyContentWasEmbedded)); + + [UnsupportedOSPlatform("browser")] + private bool VerifyECDsa(ECDsa key, ReadOnlySpan content) + { + PrepareForVerify(content, out int alg, out byte[] toBeSigned); + HashAlgorithmName hashAlgorithm = GetHashAlgorithmFromCoseAlgorithmAndKeyType(alg, KeyType.ECDsa); + return key.VerifyData(toBeSigned, _signature, hashAlgorithm); + } + + [UnsupportedOSPlatform("browser")] + private bool VerifyRSA(RSA key, ReadOnlySpan content) + { + PrepareForVerify(content, out int alg, out byte[] toBeSigned); + HashAlgorithmName hashAlgorithm = GetHashAlgorithmFromCoseAlgorithmAndKeyType(alg, KeyType.RSA); + return key.VerifyData(toBeSigned, _signature, hashAlgorithm, RSASignaturePadding.Pss); + } + + private void PrepareForVerify(ReadOnlySpan content, out int alg, out byte[] toBeSigned) + { + ThrowIfUnsupportedHeaders(); + + ReadOnlyMemory encodedAlg = GetCoseAlgorithmFromProtectedHeaders(ProtectedHeaders); + + int? nullableAlg = DecodeCoseAlgorithmHeader(encodedAlg); + if (nullableAlg == null) + { + throw new CryptographicException(SR.Sign1VerifyAlgHeaderWasIncorrect); + } + + alg = nullableAlg.Value; + toBeSigned = CreateToBeSigned(SigStructureCoxtextSign1, _protectedHeaderAsBstr, content); + } + + private static ReadOnlyMemory GetCoseAlgorithmFromProtectedHeaders(CoseHeaderMap protectedHeaders) + { + // https://datatracker.ietf.org/doc/html/rfc8152#section-3.1 alg: + // This parameter MUST be authenticated where the ability to do so exists. + // This authentication can be done either by placing the header in the protected header bucket or as part of the externally supplied data. + if (!protectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Algorithm, out ReadOnlyMemory encodedAlg)) + { + throw new CryptographicException(SR.Sign1VerifyAlgIsRequired); + } + + return encodedAlg; + } + + // If we Validate: The caller did specify a COSE Algorithm, we will make sure it matches the specified key and hash algorithm. + // If we Slip: The caller did not specify a COSE Algorithm, we will write the header for them, rather than throw. + private static int? ValidateOrSlipAlgorithmHeader( + CoseHeaderMap protectedHeaders, + CoseHeaderMap unprotectedHeaders, + KeyType keyType, + HashAlgorithmName hashAlgorithm) + { + int algHeaderValue = GetCoseAlgorithmHeaderFromKeyTypeAndHashAlgorithm(keyType, hashAlgorithm); + + if (protectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Algorithm, out ReadOnlyMemory encodedAlg)) + { + ValidateAlgorithmHeader(encodedAlg, algHeaderValue, keyType, hashAlgorithm); + return null; + } + + if (unprotectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Algorithm, out _)) + { + throw new CryptographicException(SR.Sign1SignAlgMustBeProtected); + } + + return algHeaderValue; + + static void ValidateAlgorithmHeader(ReadOnlyMemory encodedAlg, int expectedAlg, KeyType keyType, HashAlgorithmName hashAlgorithm) + { + int? alg = DecodeCoseAlgorithmHeader(encodedAlg); + Debug.Assert(alg.HasValue, "Algorithm (alg) is a known header and should have been validated in Set[Encoded]Value()"); + + if (expectedAlg != alg.Value) + { + throw new CryptographicException(SR.Format(SR.Sign1SignCoseAlgorithDoesNotMatchSpecifiedKeyAndHashAlgorithm, alg.Value, keyType.ToString(), hashAlgorithm.Name)); + } + } + } + + private static int? DecodeCoseAlgorithmHeader(ReadOnlyMemory encodedAlg) + { + var reader = new CborReader(encodedAlg); + CborReaderState state = reader.PeekState(); + + if (state == CborReaderState.NegativeInteger || state == CborReaderState.UnsignedInteger) + { + int alg = reader.ReadInt32(); + KnownCoseAlgorithms.ThrowIfNotSupported(alg); + + if (reader.BytesRemaining != 0) + { + throw new CryptographicException(SR.Sign1VerifyAlgHeaderWasIncorrect); + } + + return alg; + } + + if (state == CborReaderState.TextString) + { + int alg = KnownCoseAlgorithms.FromString(reader.ReadTextString()); + + if (reader.BytesRemaining != 0) + { + throw new CryptographicException(SR.Sign1VerifyAlgHeaderWasIncorrect); + } + + return alg; + } + + return null; + } + + private static HashAlgorithmName GetHashAlgorithmFromCoseAlgorithmAndKeyType(int algorithm, KeyType keyType) + { + if (keyType == KeyType.ECDsa) + { + return algorithm switch + { + KnownCoseAlgorithms.ES256 => HashAlgorithmName.SHA256, + KnownCoseAlgorithms.ES384 => HashAlgorithmName.SHA384, + KnownCoseAlgorithms.ES512 => HashAlgorithmName.SHA512, + _ => throw new CryptographicException(SR.Format(SR.Sign1AlgDoesNotMatchWithTheOnesSupportedByTypeOfKey, algorithm, typeof(ECDsa))) + }; + } + else + { + Debug.Assert(keyType == KeyType.RSA); + return algorithm switch + { + KnownCoseAlgorithms.PS256 => HashAlgorithmName.SHA256, + KnownCoseAlgorithms.PS384 => HashAlgorithmName.SHA384, + KnownCoseAlgorithms.PS512 => HashAlgorithmName.SHA512, + _ => throw new CryptographicException(SR.Format(SR.Sign1AlgDoesNotMatchWithTheOnesSupportedByTypeOfKey, algorithm, typeof(RSA))) + }; + } + } + + private static int GetCoseAlgorithmHeaderFromKeyTypeAndHashAlgorithm(KeyType keyType, HashAlgorithmName hashAlgorithm) + => keyType switch + { + KeyType.ECDsa => hashAlgorithm.Name switch + { + nameof(HashAlgorithmName.SHA256) => KnownCoseAlgorithms.ES256, + nameof(HashAlgorithmName.SHA384) => KnownCoseAlgorithms.ES384, + nameof(HashAlgorithmName.SHA512) => KnownCoseAlgorithms.ES512, + _ => throw new CryptographicException(SR.Format(SR.Sign1SignUnsupportedHashAlgorithm, hashAlgorithm.Name)) + }, + _ => hashAlgorithm.Name switch // KeyType.RSA + { + nameof(HashAlgorithmName.SHA256) => KnownCoseAlgorithms.PS256, + nameof(HashAlgorithmName.SHA384) => KnownCoseAlgorithms.PS384, + nameof(HashAlgorithmName.SHA512) => KnownCoseAlgorithms.PS512, + _ => throw new CryptographicException(SR.Format(SR.Sign1SignUnsupportedHashAlgorithm, hashAlgorithm.Name)) + }, + }; + + private void ThrowIfUnsupportedHeaders() + { + if (ProtectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Critical, out _) || + ProtectedHeaders.TryGetEncodedValue(CoseHeaderLabel.CounterSignature, out _)) + { + throw new NotSupportedException(SR.Sign1VerifyCriticalAndCounterSignNotSupported); + } + + if (UnprotectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Critical, out _) || + UnprotectedHeaders.TryGetEncodedValue(CoseHeaderLabel.CounterSignature, out _)) + { + throw new NotSupportedException(SR.Sign1VerifyCriticalAndCounterSignNotSupported); + } + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownCoseAlgorithms.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownCoseAlgorithms.cs new file mode 100644 index 00000000000000..fcfafacf174d53 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownCoseAlgorithms.cs @@ -0,0 +1,40 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Security.Cryptography.Cose +{ + // https://www.iana.org/assignments/cose/cose.xhtml#algorithms + internal static class KnownCoseAlgorithms + { + // ECDsa w/SHA + internal const int ES256 = -7; + internal const int ES384 = -35; + internal const int ES512 = -36; + // RSASSA-PSS w/SHA + internal const int PS256 = -37; + internal const int PS384 = -38; + internal const int PS512 = -39; + + internal static void ThrowIfNotSupported(int alg) + { + if (alg != ES256 && alg > ES384 && alg < PS512) + { + throw new CryptographicException(SR.Format(SR.Sign1UnknownCoseAlgorithm, alg)); + } + } + + internal static int FromString(string algString) + { + return algString switch + { + nameof(ES256) => ES256, + nameof(ES384) => ES384, + nameof(ES512) => ES512, + nameof(PS256) => PS256, + nameof(PS384) => PS384, + nameof(PS512) => PS512, + _ => throw new CryptographicException(SR.Format(SR.Sign1UnknownCoseAlgorithm, algString)) + }; + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownHeaders.cs b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownHeaders.cs new file mode 100644 index 00000000000000..36997ed3cb8a73 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/src/System/Security/Cryptography/Cose/KnownHeaders.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Security.Cryptography.Cose +{ + // https://datatracker.ietf.org/doc/html/rfc8152#section-3.1 Table 2. + internal static class KnownHeaders + { + internal const int Alg = 1; + internal const int Crit = 2; + internal const int ContentType = 3; + internal const int Kid = 4; + internal const int IV = 5; + internal const int PartialIV = 6; + internal const int CounterSignature = 7; + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderLabelTests.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderLabelTests.cs new file mode 100644 index 00000000000000..a7d65a1d9a5216 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderLabelTests.cs @@ -0,0 +1,74 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Xunit; + +namespace System.Security.Cryptography.Cose.Tests +{ + public class CoseHeaderLabelTests + { + [Fact] + public void CoseHeaderLabel_GetHashCode() + { + CoseHeaderLabel label = default; + Assert.Equal(0, label.GetHashCode()); // There's no need to call GetHashCode on integers as they are their own hashcode. + + label = new CoseHeaderLabel(); + Assert.Equal(0, label.GetHashCode()); + + label = new CoseHeaderLabel(0); + Assert.Equal(0, label.GetHashCode()); + + label = new CoseHeaderLabel(""); + Assert.Equal("".GetHashCode(), label.GetHashCode()); + + label = new CoseHeaderLabel(1); + Assert.Equal(1, label.GetHashCode()); + + label = new CoseHeaderLabel("content-type"); + Assert.Equal("content-type".GetHashCode(), label.GetHashCode()); + } + + [Fact] + public void CoseHeaderLabel_Equals() + { + Assert.True(default(CoseHeaderLabel).Equals(default), "default(CoseHeaderLabel).Equals(default)"); + Assert.True(default(CoseHeaderLabel).Equals(new CoseHeaderLabel(0)), "default(CoseHeaderLabel).Equals(new CoseHeaderLabel(0))"); + Assert.True(new CoseHeaderLabel(1).Equals(new CoseHeaderLabel(1)), "new CoseHeaderLabel(1).Equals(new CoseHeaderLabel(1))"); + Assert.True(new CoseHeaderLabel("").Equals(new CoseHeaderLabel("")), "new CoseHeaderLabel(\"\").Equals(new CoseHeaderLabel(\"\"))"); + + Assert.False(default(CoseHeaderLabel).Equals(new CoseHeaderLabel(1)), "default(CoseHeaderLabel).Equals(new CoseHeaderLabel(1))"); + Assert.False(default(CoseHeaderLabel).Equals(new CoseHeaderLabel("")), "default(CoseHeaderLabel).Equals(new CoseHeaderLabel(\"\"))"); + Assert.False(new CoseHeaderLabel(0).Equals(new CoseHeaderLabel(1)), "new CoseHeaderLabel(0).Equals(new CoseHeaderLabel(1))"); + Assert.False(new CoseHeaderLabel("foo").Equals(new CoseHeaderLabel("bar")), "new CoseHeaderLabel(\"foo\").Equals(new CoseHeaderLabel(\"bar\"))"); + } + + [Fact] + public void CoseHeaderLabel_op_Equality() + { + Assert.True(default(CoseHeaderLabel) == default, "default(CoseHeaderLabel) == default"); + Assert.True(default(CoseHeaderLabel) == new CoseHeaderLabel(0), "default(CoseHeaderLabel) == new CoseHeaderLabel(0)"); + Assert.True(new CoseHeaderLabel(1) == new CoseHeaderLabel(1), "new CoseHeaderLabel(1) == new CoseHeaderLabel(1)"); + Assert.True(new CoseHeaderLabel("") == new CoseHeaderLabel(""), "new CoseHeaderLabel(\"\") == new CoseHeaderLabel(\"\")"); + + Assert.False(default(CoseHeaderLabel) == new CoseHeaderLabel(1), "default(CoseHeaderLabel) == new CoseHeaderLabel(1)"); + Assert.False(default(CoseHeaderLabel) == new CoseHeaderLabel(""), "default(CoseHeaderLabel) == new CoseHeaderLabel(\"\")"); + Assert.False(new CoseHeaderLabel(0) == new CoseHeaderLabel(1), "new CoseHeaderLabel(0) == new CoseHeaderLabel(1)"); + Assert.False(new CoseHeaderLabel("foo") == new CoseHeaderLabel("bar"), "new CoseHeaderLabel(\"foo\") == new CoseHeaderLabel(\"bar\")"); + } + + [Fact] + public void CoseHeaderLabel_op_Inequality() + { + Assert.False(default(CoseHeaderLabel) != default, "default(CoseHeaderLabel) != default"); + Assert.False(default(CoseHeaderLabel) != new CoseHeaderLabel(0), "default(CoseHeaderLabel) != new CoseHeaderLabel(0)"); + Assert.False(new CoseHeaderLabel(1) != new CoseHeaderLabel(1), "new CoseHeaderLabel(1) != new CoseHeaderLabel(1)"); + Assert.False(new CoseHeaderLabel("") != new CoseHeaderLabel(""), "new CoseHeaderLabel(\"\") != new CoseHeaderLabel(\"\")"); + + Assert.True(default(CoseHeaderLabel) != new CoseHeaderLabel(1), "default(CoseHeaderLabel) != new CoseHeaderLabel(1)"); + Assert.True(default(CoseHeaderLabel) != new CoseHeaderLabel(""), "default(CoseHeaderLabel) != new CoseHeaderLabel(\"\")"); + Assert.True(new CoseHeaderLabel(0) != new CoseHeaderLabel(1), "new CoseHeaderLabel(0) != new CoseHeaderLabel(1)"); + Assert.True(new CoseHeaderLabel("foo") != new CoseHeaderLabel("bar"), "new CoseHeaderLabel(\"foo\") != new CoseHeaderLabel(\"bar\")"); + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderMapTests.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderMapTests.cs new file mode 100644 index 00000000000000..93f90e734d87ad --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseHeaderMapTests.cs @@ -0,0 +1,246 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Xunit; +using System.Formats.Cbor; +using System.Collections.Generic; +using static System.Security.Cryptography.Cose.Tests.CoseTestHelpers; + +namespace System.Security.Cryptography.Cose.Tests +{ + public class CoseHeaderMapTests + { + [Fact] + public void SetValue_GetValue_KnownCoseHeaderLabel() + { + var map = new CoseHeaderMap(); + map.SetValue(CoseHeaderLabel.Algorithm, (int)ECDsaAlgorithm.ES256); + map.SetValue(CoseHeaderLabel.Critical, GetDummyCritHeaderValue()); + map.SetValue(CoseHeaderLabel.ContentType, ContentTypeDummyValue); + map.SetValue(CoseHeaderLabel.KeyIdentifier, s_sampleContent); + map.SetValue(CoseHeaderLabel.IV, ReadOnlySpan.Empty); + map.SetValue(CoseHeaderLabel.PartialIV, ReadOnlySpan.Empty); + map.SetValue(CoseHeaderLabel.CounterSignature, ReadOnlySpan.Empty); + + Assert.Equal((int)ECDsaAlgorithm.ES256, map.GetValueAsInt32(CoseHeaderLabel.Algorithm)); + AssertExtensions.SequenceEqual(GetDummyCritHeaderValue(), map.GetValueAsBytes(CoseHeaderLabel.Critical)); + Assert.Equal(ContentTypeDummyValue, map.GetValueAsString(CoseHeaderLabel.ContentType)); + AssertExtensions.SequenceEqual(s_sampleContent, map.GetValueAsBytes(CoseHeaderLabel.KeyIdentifier)); + AssertExtensions.SequenceEqual(ReadOnlySpan.Empty, map.GetValueAsBytes(CoseHeaderLabel.IV)); + AssertExtensions.SequenceEqual(ReadOnlySpan.Empty, map.GetValueAsBytes(CoseHeaderLabel.PartialIV)); + AssertExtensions.SequenceEqual(ReadOnlySpan.Empty, map.GetValueAsBytes(CoseHeaderLabel.CounterSignature)); + } + + [Theory] + [MemberData(nameof(KnownHeadersEncodedValues_TestData))] + public void SetEncodedValue_GetEncodedValue_KnownCoseHeaderLabel(int knownHeader, byte[] encodedValue) + { + var map = new CoseHeaderMap(); + var label = new CoseHeaderLabel(knownHeader); + + map.SetEncodedValue(label, encodedValue); + + ReadOnlyMemory returnedEncocedValue = map.GetEncodedValue(label); + AssertExtensions.SequenceEqual(encodedValue, returnedEncocedValue.Span); + + map.TryGetEncodedValue(label, out returnedEncocedValue); + AssertExtensions.SequenceEqual(encodedValue, returnedEncocedValue.Span); + } + + [Fact] + public void SetValue_KnownHeaders_ThrowIf_IncorrectValue() + { + var map = new CoseHeaderMap(); + // only accepts int or tstr + Assert.Throws(() => map.SetValue(CoseHeaderLabel.Algorithm, ReadOnlySpan.Empty)); + // [ +label ] (non-empty array) Not yet properly supported. + //Assert.Throws(() => map.SetValue(CoseHeaderLabel.Critical, ReadOnlySpan.Empty)); + // tstr / uint + Assert.Throws(() => map.SetValue(CoseHeaderLabel.ContentType, -1)); + // bstr + Assert.Throws(() => map.SetValue(CoseHeaderLabel.KeyIdentifier, "foo")); + // bstr + Assert.Throws(() => map.SetValue(CoseHeaderLabel.IV, "foo")); + // bstr + Assert.Throws(() => map.SetValue(CoseHeaderLabel.PartialIV, "foo")); + } + + [Fact] + public void SetEncodedValue_KnownHeaders_ThrowIf_IncorrectValue() + { + var writer = new CborWriter(); + writer.WriteNull(); + byte[] encodedNullValue = writer.Encode(); + + var map = new CoseHeaderMap(); + // only accepts int or tstr + Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.Algorithm, encodedNullValue)); + // [ +label ] (non-empty array) Not yet properly supported. + //Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.Critical, encodedNullValue)); + // tstr / uint + Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.ContentType, encodedNullValue)); + // bstr + Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.KeyIdentifier, encodedNullValue)); + // bstr + Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.IV, encodedNullValue)); + // bstr + Assert.Throws(() => map.SetEncodedValue(CoseHeaderLabel.PartialIV, encodedNullValue)); + } + + [Fact] + public void Enumerate() + { + var map = new CoseHeaderMap(); + map.SetValue(CoseHeaderLabel.Algorithm, (int)ECDsaAlgorithm.ES256); + map.SetEncodedValue(CoseHeaderLabel.Critical, GetDummyCritHeaderValue()); + map.SetValue(CoseHeaderLabel.ContentType, ContentTypeDummyValue); + map.SetValue(CoseHeaderLabel.KeyIdentifier, s_sampleContent); + map.SetValue(CoseHeaderLabel.IV, ReadOnlySpan.Empty); + map.SetValue(CoseHeaderLabel.PartialIV, ReadOnlySpan.Empty); + map.SetValue(CoseHeaderLabel.CounterSignature, ReadOnlySpan.Empty); + + var writer = new CborWriter(); + int currentHeader = KnownHeaderAlg; + foreach ((CoseHeaderLabel label, ReadOnlyMemory encodedValue) in map) + { + Assert.Equal(new CoseHeaderLabel(currentHeader), label); + ReadOnlyMemory expectedValue = currentHeader switch + { + KnownHeaderAlg => EncodeInt32((int)ECDsaAlgorithm.ES256, writer), + KnownHeaderCrit => GetDummyCritHeaderValue(), + KnownHeaderContentType => EncodeString(ContentTypeDummyValue, writer), + KnownHeaderKid => EncodeBytes(s_sampleContent, writer), + KnownHeaderIV or KnownHeaderPartialIV or KnownHeaderCounterSignature => EncodeBytes(ReadOnlySpan.Empty, writer), + _ => throw new InvalidOperationException() + }; + AssertExtensions.SequenceEqual(expectedValue.Span, encodedValue.Span); + currentHeader++; + } + Assert.Equal(KnownHeaderCounterSignature + 1, currentHeader); + + static ReadOnlyMemory EncodeInt32(int value, CborWriter writer) + { + writer.WriteInt32(value); + return EncodeAndReset(writer); + } + + static ReadOnlyMemory EncodeString(string value, CborWriter writer) + { + writer.WriteTextString(value); + return EncodeAndReset(writer); + } + + static ReadOnlyMemory EncodeBytes(ReadOnlySpan value, CborWriter writer) + { + writer.WriteByteString(value); + return EncodeAndReset(writer); + } + + static ReadOnlyMemory EncodeAndReset(CborWriter writer) + { + ReadOnlyMemory encodedValue = writer.Encode(); + writer.Reset(); + return encodedValue; + } + } + + [Fact] + public void DecodedProtectedMapShouldBeReadOnly() + { + byte[] encodedMessage = CoseSign1Message.Sign(s_sampleContent, DefaultKey, HashAlgorithmName.SHA256); + CoseSign1Message message = CoseMessage.DecodeSign1(encodedMessage); + Assert.True(message.ProtectedHeaders.IsReadOnly, "message.ProtectedHeaders.IsReadOnly"); + } + + [Fact] + public void GetValueFromReadOnlyProtectedMap() + { + byte[] encodedMessage = CoseSign1Message.Sign(s_sampleContent, DefaultKey, HashAlgorithmName.SHA256); + CoseSign1Message message = CoseMessage.DecodeSign1(encodedMessage); + Assert.True(message.ProtectedHeaders.IsReadOnly, "message.ProtectedHeaders.IsReadOnly"); + + int expectedAlgorithm = (int)ECDsaAlgorithm.ES256; + + int algorithm = message.ProtectedHeaders.GetValueAsInt32(CoseHeaderLabel.Algorithm); + Assert.Equal(expectedAlgorithm, algorithm); + + ReadOnlyMemory encodedAlgorithm = message.ProtectedHeaders.GetEncodedValue(CoseHeaderLabel.Algorithm); + Assert.Equal(expectedAlgorithm, new CborReader(encodedAlgorithm).ReadInt32()); + + message.ProtectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Algorithm, out encodedAlgorithm); + Assert.Equal(expectedAlgorithm, new CborReader(encodedAlgorithm).ReadInt32()); + } + + [Fact] + public void SetValueAndRemoveThrowIfProtectedMapIsReadOnly() + { + byte[] encodedMessage = CoseSign1Message.Sign(s_sampleContent, DefaultKey, HashAlgorithmName.SHA256); + CoseSign1Message message = CoseMessage.DecodeSign1(encodedMessage); + Assert.True(message.ProtectedHeaders.IsReadOnly, "message.ProtectedHeaders.IsReadOnly"); + + // New value. + var barLabel = new CoseHeaderLabel("bar"); + Assert.Throws(() => message.ProtectedHeaders.SetValue(barLabel, 42)); + Assert.Throws(() => message.ProtectedHeaders.Remove(barLabel)); + + // Existing value. + Assert.Throws(() => message.ProtectedHeaders.SetValue(CoseHeaderLabel.Algorithm, 42)); + Assert.Throws(() => message.ProtectedHeaders.Remove(CoseHeaderLabel.Algorithm)); + + // Verify existing value was not overwritten even after throwing. + Assert.Equal((int)ECDsaAlgorithm.ES256, message.ProtectedHeaders.GetValueAsInt32(CoseHeaderLabel.Algorithm)); + + // Non-readonly header works correctly. + var fooLabel = new CoseHeaderLabel("foo"); + message.UnprotectedHeaders.SetValue(fooLabel, 42); + message.UnprotectedHeaders.Remove(fooLabel); + } + + public static IEnumerable KnownHeadersEncodedValues_TestData() + { + var writer = new CborWriter(); + + writer.WriteInt32((int)ECDsaAlgorithm.ES256); + yield return ReturnDataAndReset(KnownHeaderAlg, writer); + + WriteDummyCritHeaderValue(writer); + yield return ReturnDataAndReset(KnownHeaderCrit, writer); + + writer.WriteTextString(ContentTypeDummyValue); + yield return ReturnDataAndReset(KnownHeaderContentType, writer); + + writer.WriteByteString(new byte[] { 0x42, 0x31, 0x31 }); + yield return ReturnDataAndReset(KnownHeaderKid, writer); + + writer.WriteByteString(ReadOnlySpan.Empty); + yield return ReturnDataAndReset(KnownHeaderIV, writer); + + writer.WriteByteString(ReadOnlySpan.Empty); + yield return ReturnDataAndReset(KnownHeaderPartialIV, writer); + + writer.WriteByteString(ReadOnlySpan.Empty); + yield return ReturnDataAndReset(KnownHeaderCounterSignature, writer); + + static object[] ReturnDataAndReset(int knownHeader, CborWriter w) + { + byte[] encodedValue = w.Encode(); + w.Reset(); + return new object[] { knownHeader, encodedValue }; + } + } + + private static void WriteDummyCritHeaderValue(CborWriter writer) + { + writer.WriteStartArray(1); + writer.WriteInt32(42); + writer.WriteEndArray(); + } + + private static byte[] GetDummyCritHeaderValue() + { + var writer = new CborWriter(); + WriteDummyCritHeaderValue(writer); + return writer.Encode(); + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseMessageTests.DecoseSign1.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseMessageTests.DecoseSign1.cs new file mode 100644 index 00000000000000..8a25ec37d85cc4 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseMessageTests.DecoseSign1.cs @@ -0,0 +1,71 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Formats.Cbor; +using Test.Cryptography; +using Xunit; +using static System.Security.Cryptography.Cose.Tests.CoseTestHelpers; + +namespace System.Security.Cryptography.Cose.Tests +{ + public class CoseMessageTests + { + [Fact] + public void DecodeVerifyUntagged() + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray("8445A201260300A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")); + Assert.True(msg.Verify(DefaultKey)); + } + + [Fact] + public void DecodeVerifyDetachedContent() + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray("D28445A201260300A104423131F658406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")); + Assert.Null(msg.Content); + Assert.True(msg.Verify(DefaultKey, s_sampleContent)); + } + + [Theory] + // Protected bucket has duplicate header. + [InlineData(true, "D28446A20126013822A10442313154546869732069732074686520636F6E74656E742E584087DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F")] + // Unprotected bucket has duplicate header. + [InlineData(true, "D28441A0A301260138220442313154546869732069732074686520636F6E74656E742E584087DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F")] + // Duplicate header is in the union of protected and unprotected buckets. + [InlineData(false, "D28443A10126A201260442313154546869732069732074686520636F6E74656E742E584087DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F")] + public void DecodeThrowsWithDuplicateHeaders(bool shouldContainInnerException, string hexCborMessage) + { + CryptographicException ex = Assert.Throws(() => CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(hexCborMessage))); + if (shouldContainInnerException) // if the duplicate headers were in one bucket the exception comes from CborReader because we use CborConformanceMode.Strict. + { + Assert.IsType(ex.InnerException); + } + else + { + Assert.Null(ex.InnerException); + } + } + + [Theory] + // Tag is 998 (Unknown) - https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-01.json. + [InlineData("D903E68443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + // Tag is 98 (Sign). + [InlineData("D8628441A0A054546869732069732074686520636F6E74656E742E818343A10126A1044231315840E2AEAFD40D69D19DFE6E52077C5D7FF4E408282CBEFB5D06CBF414AF2E19D982AC45AC98B8544C908B4507DE1E90B717C3D34816FE926A2B98F53AFD2FA0F30A")] + public void DecodeSign1_IncorrectTag(string hexCborMessage) + { + Assert.Throws(() => CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(hexCborMessage))); + } + + [Fact] + public void DecodeSign1_IncorrectStructure() + { + var writer = new CborWriter(); + writer.WriteStartArray(4); + writer.WriteNull(); + writer.WriteNull(); + writer.WriteNull(); + writer.WriteNull(); + writer.WriteEndArray(); + Assert.Throws(() => CoseMessage.DecodeSign1(writer.Encode())); + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Sign.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Sign.cs new file mode 100644 index 00000000000000..979b335307fdff --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Sign.cs @@ -0,0 +1,452 @@ +// 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.Formats.Cbor; +using System.Linq; +using Xunit; +using static System.Security.Cryptography.Cose.Tests.CoseTestHelpers; + +namespace System.Security.Cryptography.Cose.Tests +{ + public partial class CoseSign1MessageTests + { + [Theory] + [InlineData(ECDsaAlgorithm.ES256)] + [InlineData(ECDsaAlgorithm.ES384)] + [InlineData(ECDsaAlgorithm.ES512)] + public void SignVerifyECDsa(ECDsaAlgorithm algorithm) + { + ECDsa ecdsa = ECDsaKeys[algorithm]; + HashAlgorithmName hashAlgorithm = GetHashAlgorithmNameFromCoseAlgorithm((int)algorithm); + + byte[] coseMessageBytes = CoseSign1Message.Sign(s_sampleContent, ecdsa, hashAlgorithm); + CoseSign1Message msg = CoseMessage.DecodeSign1(coseMessageBytes); + Assert.True(msg.Verify(ecdsa)); + } + + [Theory] + [InlineData(RSAAlgorithm.PS256)] + [InlineData(RSAAlgorithm.PS384)] + [InlineData(RSAAlgorithm.PS512)] + public void SignVerifyRSA(RSAAlgorithm algorithm) + { + HashAlgorithmName hashAlgorithm = GetHashAlgorithmNameFromCoseAlgorithm((int)algorithm); + + byte[] coseMessageBytes = CoseSign1Message.Sign(s_sampleContent, RSAKey, hashAlgorithm); + CoseSign1Message msg = CoseMessage.DecodeSign1(coseMessageBytes); + Assert.True(msg.Verify(RSAKey)); + } + + [Theory] + [InlineData(ECDsaAlgorithm.ES256)] + [InlineData(ECDsaAlgorithm.ES384)] + [InlineData(ECDsaAlgorithm.ES512)] + public void SignVerifyWithCustomHeaders(ECDsaAlgorithm algorithm) + { + var protectedHeaders = new CoseHeaderMap(); + protectedHeaders.SetValue(CoseHeaderLabel.Algorithm, (int)algorithm); + + CoseHeaderMap unprotectedHeaders = new CoseHeaderMap(); + unprotectedHeaders.SetValue(CoseHeaderLabel.ContentType, ContentTypeDummyValue); + + ECDsa key = ECDsaKeys[algorithm]; + HashAlgorithmName hashAlgorithm = GetHashAlgorithmNameFromCoseAlgorithm((int)algorithm); + + byte[] message = CoseSign1Message.Sign(s_sampleContent, protectedHeaders, unprotectedHeaders, key, hashAlgorithm); + Assert.True(CoseMessage.DecodeSign1(message).Verify(key)); + } + + [Fact] + public void SignWithNullContent() + { + Assert.Throws(() => CoseSign1Message.Sign(null!, DefaultKey, HashAlgorithmName.SHA256)); + Assert.Throws(() => CoseSign1Message.Sign(null!, RSAKey, HashAlgorithmName.SHA256)); + Assert.Throws(() => CoseSign1Message.Sign(null!, GetHeaderMapWithAlgorithm(), GetEmptyHeaderMap(), DefaultKey, DefaultHash)); + } + + [Theory] + [InlineData(ContentTestCase.Empty)] + [InlineData(ContentTestCase.Small)] + [InlineData(ContentTestCase.Large)] + public void SignWithValidContent(ContentTestCase @case) + { + byte[] content = GetDummyContent(@case); + + AssertSign1Message(CoseSign1Message.Sign(content, DefaultKey, DefaultHash), content, DefaultKey); + + AssertSign1Message(CoseSign1Message.Sign(content, RSAKey, DefaultHash), content, RSAKey, GetExpectedProtectedHeaders((int)RSAAlgorithm.PS256)); + + AssertSign1Message(CoseSign1Message.Sign(content, GetHeaderMapWithAlgorithm(), GetEmptyHeaderMap(), DefaultKey, DefaultHash), content, DefaultKey); + } + + [Fact] + public void SignWithNullKey() + { + byte[] content = GetDummyContent(ContentTestCase.Small); + Assert.Throws(() => CoseSign1Message.Sign(content, (ECDsa)null!, HashAlgorithmName.SHA256)); + Assert.Throws(() => CoseSign1Message.Sign(content, (RSA)null!, HashAlgorithmName.SHA256)); + Assert.Throws(() => CoseSign1Message.Sign(content, GetHeaderMapWithAlgorithm(), GetEmptyHeaderMap(), null!, GetHashAlgorithmNameFromCoseAlgorithm((int)ECDsaAlgorithm.ES256))); + } + + [Theory] + [InlineData((int)ECDsaAlgorithm.ES256)] + [InlineData((int)ECDsaAlgorithm.ES384)] + [InlineData((int)ECDsaAlgorithm.ES512)] + [InlineData((int)RSAAlgorithm.PS256)] + [InlineData((int)RSAAlgorithm.PS384)] + [InlineData((int)RSAAlgorithm.PS512)] + public void SignWithNonPrivateKey(int algorithm) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + HashAlgorithmName hashAlgorithm = GetHashAlgorithmNameFromCoseAlgorithm(algorithm); + AsymmetricAlgorithm key; + + if (Enum.IsDefined(typeof(ECDsaAlgorithm), algorithm)) + { + ECDsa ecdsa = ECDsaKeysWithoutPrivateKey[(ECDsaAlgorithm)algorithm]; + Assert.ThrowsAny(() => CoseSign1Message.Sign(content, ecdsa, hashAlgorithm)); + key = ecdsa; + } + else + { + Assert.ThrowsAny(() => CoseSign1Message.Sign(content, RSAKeyWithoutPrivateKey, hashAlgorithm)); + key = RSAKeyWithoutPrivateKey; + } + + Assert.ThrowsAny(() => CoseSign1Message.Sign(content, GetHeaderMapWithAlgorithm(algorithm), GetEmptyHeaderMap(), key, hashAlgorithm)); + } + + [Fact] + public void SignWithUnsupportedKey() + { + AsymmetricAlgorithm key = ECDiffieHellman.Create(); + // Header still says that a supported combination of key-algorithm will be used. + Assert.Throws(() => CoseSign1Message.Sign(GetDummyContent(ContentTestCase.Small), GetHeaderMapWithAlgorithm(), GetEmptyHeaderMap(), key, DefaultHash)); + } + + [Theory] + [InlineData("SHA1")] + [InlineData("FOO")] + public void SignWithUnsupportedHashAlgorithm(string hashAlgorithm) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + + Assert.Throws(() => CoseSign1Message.Sign(GetDummyContent(ContentTestCase.Small), DefaultKey, new HashAlgorithmName(hashAlgorithm))); + Assert.Throws(() => CoseSign1Message.Sign(GetDummyContent(ContentTestCase.Small), RSAKey, new HashAlgorithmName(hashAlgorithm))); + Assert.Throws(() => CoseSign1Message.Sign(GetDummyContent(ContentTestCase.Small), GetHeaderMapWithAlgorithm(-47 /*ES256K*/), GetEmptyHeaderMap(), DefaultKey, DefaultHash)); + } + + [Theory] + [InlineData((int)ECDsaAlgorithm.ES256)] + [InlineData((int)ECDsaAlgorithm.ES384)] + [InlineData((int)ECDsaAlgorithm.ES512)] + [InlineData((int)RSAAlgorithm.PS256)] + [InlineData((int)RSAAlgorithm.PS384)] + [InlineData((int)RSAAlgorithm.PS512)] + public void SignWithSupportedHashAlgorithm(int algorithm) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + HashAlgorithmName hashAlgorithm = GetHashAlgorithmNameFromCoseAlgorithm(algorithm); + AsymmetricAlgorithm key; + List<(CoseHeaderLabel, ReadOnlyMemory)> expectedProtectedHeaders = GetExpectedProtectedHeaders(algorithm); + + if (Enum.IsDefined(typeof(ECDsaAlgorithm), algorithm)) + { + ECDsa ecdsa = ECDsaKeys[(ECDsaAlgorithm)algorithm]; + key = ecdsa; + AssertSign1Message(CoseSign1Message.Sign(content, ecdsa, hashAlgorithm), content, key, expectedProtectedHeaders); + } + else + { + key = RSAKey; + AssertSign1Message(CoseSign1Message.Sign(content, RSAKey, hashAlgorithm), content, key, expectedProtectedHeaders); + } + + AssertSign1Message(CoseSign1Message.Sign(content, GetHeaderMapWithAlgorithm(algorithm), GetEmptyHeaderMap(), key, hashAlgorithm), content, key, expectedProtectedHeaders); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void SignWithIsDetached(bool isDetached) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + + byte[] messageEncoded = CoseSign1Message.Sign(content, DefaultKey, DefaultHash, isDetached); + VerifyContentDetached(messageEncoded, content, isDetached); + + messageEncoded = CoseSign1Message.Sign(content, DefaultKey, DefaultHash, isDetached); + VerifyContentDetached(messageEncoded, content, isDetached); + + static void VerifyContentDetached(byte[] messageEncoded, byte[] expectedContent, bool isDetached) + { + CoseMessage messageDecoded = CoseMessage.DecodeSign1(messageEncoded); + if (isDetached) + { + Assert.Null(messageDecoded.Content); + } + else + { + AssertExtensions.SequenceEqual(new ReadOnlySpan(expectedContent), messageDecoded.Content.GetValueOrDefault().Span); + } + } + } + + [Fact] + public void SignWithEmptyHeaderMaps() + { + byte[] content = GetDummyContent(ContentTestCase.Small); + CoseHeaderMap protectedHeaders = GetEmptyHeaderMap(); + + AssertSign1Message(CoseSign1Message.Sign(GetDummyContent(ContentTestCase.Small), protectedHeaders, GetEmptyHeaderMap(), DefaultKey, DefaultHash), content, DefaultKey); + Assert.Equal(0, protectedHeaders.Count()); + } + + [Fact] + public void SignWithEmptyProtectedHeaderMap() + { + byte[] content = GetDummyContent(ContentTestCase.Small); + CoseHeaderMap protectedHeaders = GetEmptyHeaderMap(); + CoseHeaderMap unprotectedHeaders = GetHeaderMapWithAlgorithm(); + + Assert.Throws(() => CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash)); + } + + [Fact] + public void SignWithEmptyUnprotectedHeaderMap() + { + byte[] content = GetDummyContent(ContentTestCase.Small); + CoseHeaderMap protectedHeaders = GetHeaderMapWithAlgorithm(); + CoseHeaderMap unprotectedHeaders = GetEmptyHeaderMap(); + + AssertSign1Message(CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash), content, DefaultKey); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void SignWithCustomHeader(bool useProtectedMap) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + CoseHeaderMap protectedHeaders, unprotectedHeaders, mapForCustomHeader; + List<(CoseHeaderLabel, ReadOnlyMemory)> expectedProtectedHeaders, expectedUnprotectedHeaders, listForCustomHeader; + + Initialize(); + CoseHeaderLabel myLabel = new CoseHeaderLabel(42); + int myValue = 42; + + mapForCustomHeader.SetValue(myLabel, myValue); + AddEncoded(listForCustomHeader, myLabel, myValue); + + AssertSign1Message(CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash), + content, DefaultKey, expectedProtectedHeaders, expectedUnprotectedHeaders); + + + Initialize(); + myLabel = new CoseHeaderLabel("42"); + + mapForCustomHeader.SetValue(myLabel, myValue); + AddEncoded(listForCustomHeader, myLabel, myValue); + + AssertSign1Message(CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash), + content, DefaultKey, expectedProtectedHeaders, expectedUnprotectedHeaders); + + void Initialize() + { + protectedHeaders = GetHeaderMapWithAlgorithm(); + unprotectedHeaders = GetEmptyHeaderMap(); + mapForCustomHeader = useProtectedMap ? protectedHeaders : unprotectedHeaders; + + expectedProtectedHeaders = GetExpectedProtectedHeaders(); + expectedUnprotectedHeaders = new(); + listForCustomHeader = useProtectedMap ? expectedProtectedHeaders : expectedUnprotectedHeaders; + } + } + + [Fact] + public void SignWithDuplicateHeaderBetweenProtectedAndUnprotected() + { + byte[] content = GetDummyContent(ContentTestCase.Small); + AsymmetricAlgorithm key = DefaultKey; + CoseHeaderMap protectedHeaders, unprotectedHeaders; + + // Algorithm header is duplicated. It is a special case because it is mandatory that the header exists in the protected map. + InitializeHeaders(); + // @protected.SetValue(CoseHeaderLabel.Algorithm, (int)ECDsaAlgorithm.ES256); // We don't need to Set Algorithm header as InitHeader does it for us. + unprotectedHeaders.SetValue(CoseHeaderLabel.Algorithm, (int)ECDsaAlgorithm.ES256); + Assert.Throws(() => CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash)); + + // other known header is duplicate. + InitializeHeaders(); + protectedHeaders.SetValue(CoseHeaderLabel.ContentType, ContentTypeDummyValue); + unprotectedHeaders.SetValue(CoseHeaderLabel.ContentType, ContentTypeDummyValue); + Assert.Throws(() => CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash)); + + // not-known int header is duplicate. + InitializeHeaders(); + var myLabel = new CoseHeaderLabel(42); + protectedHeaders.SetValue(myLabel, 42); + unprotectedHeaders.SetValue(myLabel, 42); + Assert.Throws(() => CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash)); + + // not-known tstr header is duplicate. + InitializeHeaders(); + myLabel = new CoseHeaderLabel("42"); + protectedHeaders.SetValue(myLabel, 42); + unprotectedHeaders.SetValue(myLabel, 42); + Assert.Throws(() => CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash)); + + void InitializeHeaders() + { + protectedHeaders = GetHeaderMapWithAlgorithm(); + unprotectedHeaders = GetEmptyHeaderMap(); + } + } + + [Theory] + [MemberData(nameof(AllCborTypes_TestData))] + public void SignWithAllCborTypesAsHeaderValue(bool useProtectedMap, byte[] encodedValue) + { + byte[] content = GetDummyContent(ContentTestCase.Small); + var myLabel = new CoseHeaderLabel(42); + + CoseHeaderMap protectedHeaders = GetHeaderMapWithAlgorithm(); + CoseHeaderMap unprotectedHeaders = GetEmptyHeaderMap(); + (useProtectedMap ? protectedHeaders : unprotectedHeaders).SetEncodedValue(myLabel, encodedValue); + + List<(CoseHeaderLabel, ReadOnlyMemory)> expectedProtectedHeaders = GetExpectedProtectedHeaders(); + List<(CoseHeaderLabel, ReadOnlyMemory)> expectedUnprotectedHeaders = GetEmptyExpectedHeaders(); + (useProtectedMap ? expectedProtectedHeaders : expectedUnprotectedHeaders).Add((myLabel, encodedValue)); + + byte[] encodedMessage = CoseSign1Message.Sign(content, protectedHeaders, unprotectedHeaders, DefaultKey, DefaultHash); + AssertSign1Message(encodedMessage, content, DefaultKey, expectedProtectedHeaders, expectedUnprotectedHeaders); + + // Verify it is transported correctly. + CoseSign1Message message = CoseMessage.DecodeSign1(encodedMessage); + ReadOnlyMemory roundtrippedValue = (useProtectedMap ? message.ProtectedHeaders : message.UnprotectedHeaders).GetEncodedValue(myLabel); + AssertExtensions.SequenceEqual(encodedValue, roundtrippedValue.Span); + } + + public static IEnumerable AllCborTypes_TestData() + { + foreach (bool useProtectedMap in new[] { false, true }) + { + var w = new CborWriter(); + + w.WriteBigInteger(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteBoolean(true); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteByteString(s_sampleContent); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteCborNegativeIntegerRepresentation(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteDateTimeOffset(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteDecimal(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteDecimal(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteDouble(default); + yield return ReturnDataAndReset(useProtectedMap, w); +#if NETCOREAPP + w.WriteHalf(default); + yield return ReturnDataAndReset(useProtectedMap, w); +#endif + w.WriteInt32(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteInt64(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteNull(); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteSimpleValue(CborSimpleValue.Undefined); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteSingle(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteTag(CborTag.UnsignedBigNum); + w.WriteInt32(42); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteTextString(string.Empty); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteUInt32(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteUInt64(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + w.WriteUnixTimeSeconds(default); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Array + w.WriteStartArray(2); + w.WriteInt32(42); + w.WriteTextString("foo"); + w.WriteEndArray(); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Map + w.WriteStartMap(2); + // first label-value pair. + w.WriteInt32(42); + w.WriteTextString("4242"); + // second label-value pair. + w.WriteTextString("42"); + w.WriteInt32(4242); + w.WriteEndMap(); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Indefinite length array + w.WriteStartArray(null); + w.WriteInt32(42); + w.WriteTextString("foo"); + w.WriteEndArray(); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Indefinite length map + w.WriteStartMap(null); + // first label-value pair. + w.WriteInt32(42); + w.WriteTextString("4242"); + // second label-value pair. + w.WriteTextString("42"); + w.WriteInt32(4242); + w.WriteEndMap(); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Indefinite length tstr + w.WriteStartIndefiniteLengthTextString(); + w.WriteTextString("foo"); + w.WriteEndIndefiniteLengthTextString(); + yield return ReturnDataAndReset(useProtectedMap, w); + + // Indefinite length bstr + w.WriteStartIndefiniteLengthByteString(); + w.WriteByteString(s_sampleContent); + w.WriteEndIndefiniteLengthByteString(); + yield return ReturnDataAndReset(useProtectedMap, w); + } + + static object[] ReturnDataAndReset(bool useProtectedMap, CborWriter w) + { + byte[] encodedValue = w.Encode(); + w.Reset(); + return new object[] { useProtectedMap, encodedValue }; + } + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Verify.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Verify.cs new file mode 100644 index 00000000000000..de72a30a6e8355 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseSign1MessageTests.Verify.cs @@ -0,0 +1,164 @@ +using Xunit; +using Test.Cryptography; +using System.Formats.Cbor; +using static System.Security.Cryptography.Cose.Tests.CoseTestHelpers; + +namespace System.Security.Cryptography.Cose.Tests +{ + public partial class CoseSign1MessageTests + { + [Theory] + // https://github.com/cose-wg/Examples/blob/master/RFC8152/Appendix_C_2_1.json + [InlineData((int)ECDsaAlgorithm.ES256, "D28443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + // https://github.com/cose-wg/Examples/blob/master/ecdsa-examples/ecdsa-sig-01.json + [InlineData((int)ECDsaAlgorithm.ES256, "D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")] + // https://github.com/cose-wg/Examples/blob/master/ecdsa-examples/ecdsa-sig-02.json + [InlineData((int)ECDsaAlgorithm.ES384, "D28444A1013822A104445033383454546869732069732074686520636F6E74656E742E58605F150ABD1C7D25B32065A14E05D6CB1F665D10769FF455EA9A2E0ADAB5DE63838DB257F0949C41E13330E110EBA7B912F34E1546FB1366A2568FAA91EC3E6C8D42F4A67A0EDF731D88C9AEAD52258B2E2C4740EF614F02E9D91E9B7B59622A3C")] + // https://github.com/cose-wg/Examples/blob/master/ecdsa-examples/ecdsa-sig-03.json + [InlineData((int)ECDsaAlgorithm.ES512, "D28444A1013823A104581E62696C626F2E62616767696E7340686F626269746F6E2E6578616D706C6554546869732069732074686520636F6E74656E742E588401664DD6962091B5100D6E1833D503539330EC2BC8FD3E8996950CE9F70259D9A30F73794F603B0D3E7C5E9C4C2A57E10211F76E79DF8FFD1B79D7EF5B9FA7DA109001965FA2D37E093BB13C040399C467B3B9908C09DB2B0F1F4996FE07BB02AAA121A8E1C671F3F997ADE7D651081017057BD3A8A5FBF394972EA71CFDC15E6F8FE2E1")] + [InlineData((int)RSAAlgorithm.PS256, "D28444A1013824A054546869732069732074686520636F6E74656E742E59010055ECE8B56A00693173CCB750F85DF898AD1DEBC4F151BD9119B65517BC7A0A5C4B0D8B4B22C4A75C6BC72D0C39BE71630E10D637E68D1261CA2CE344EC1929E6BA74CDAE8B153EAF86476B06D85E8A0562BACFF1E8BA787964A9CB89E14F7C765BAB7C4A95C3D6AFA584A7B449FF6ED2C7CB3D6B9BE58393E9715B78BAA8BCF9105E39819111534A2E5A1A27802353DD5455C32E98E5904B451469453B2C507186EA87F57FE3711D6A6CDA947E1F1750488DDA62C4E9179D396E0A0646E14317E35B1244B8B1542314DB77414833850C8A214417D1647836CA27E4A37E7E2192496411EBBB38E44C69EC2443DE39C233BE0C0C0942E00CDA4ADB0DB3A3D0F674")] + [InlineData((int)RSAAlgorithm.PS384, "D28444A1013825A054546869732069732074686520636F6E74656E742E5901002E9CBFCB8722E1B52D77228038DD27FAF0D8CF70F6E0E05C405C70534DF3C8EA419122E3007B3EB09FF6BD900E7DDC853BDA3D499F3779BD724D2B661CA9A2BB8C2AAE40298D13124B4E6C32AA311128D6553D7AB87F7771192DBC870635F5E355F89649946FC78B4647371EF3F2BB3175BA6CE1D1707851FEA8708A57BB26E206EACA1CB2F5661ED4C05D07975102009CE9309654AD022D3C79E7F043AC9C102C9DBF75D17DF52D269DBF6E87E5CE0185D888697D90E5AC371FC1BA7F1FBC9BA9D64CFE5EC1068157DBDB2A1475F31446058033E0CB0360A924AD917C0C363EACBBC5CA8C5B7CD19F67F52C01A6D9E213546D59EA5D8AE1806E9FA9C355A3D9")] + [InlineData((int)RSAAlgorithm.PS512, "D28444A1013826A054546869732069732074686520636F6E74656E742E5901004B8B34077E4DB906C1A99A09E1569CCBB275A61AE077E5A62DD14DCDEB8F2D4071015CDFB5A6258F175CF3FAA6C11BF7667AAB6B69969A1B0A68E142C0E7B287E451CE4E889AB6EEF45CE9FF48DBEAEC246AD922D78C0811441C66FF31641F0E3D37852803C62832012F29933ADF4D3EFDB8D0C6397B4AA7AEA60D2E41E1DB68E2A0A28B28C01F39AD4ABA0F5FDD170E42F5CBD8A24695723C153A029DBB19C5D47FD9B77EC654CDE01353AA1049E80921EAF9968D56C7450CEBD0F4A8B847AF3DB8DD2A528CC9FDDC520C4797D42E8888800E0264838D21E5CF39CB912E0BADD24226F1A1C2BF0961D13EBE043375761B20CAA8E8A8B2449D2AAF7879426B9B")] + // TODO: This test should be passing but is not https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-pass-01.json + //[InlineData((int)ECDsaAlgorithm.ES256, "D28441A0A201260442313154546869732069732074686520636F6E74656E742E584087DB0D2E5571843B78AC33ECB2830DF7B6E0A4D5B7376DE336B23C591C90C425317E56127FBE04370097CE347087B233BF722B64072BEB4486BDA4031D27244F")] + // Verification fails - External data is not supported! https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-pass-02.json + //[InlineData((int)ECDsaAlgorithm.ES256, "D28443A10126A10442313154546869732069732074686520636F6E74656E742E584010729CD711CB3813D8D8E944A8DA7111E7B258C9BDCA6135F7AE1ADBEE9509891267837E1E33BD36C150326AE62755C6BD8E540C3E8F92D7D225E8DB72B8820B")] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-pass-03.json + [InlineData((int)ECDsaAlgorithm.ES256, "8443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + public void Verify(int algorithm, string hexCborMessage) + { + foreach (bool usePublicOnlyKey in new[] { false, true }) + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(hexCborMessage)); + + bool verified; + if (Enum.IsDefined(typeof(ECDsaAlgorithm), algorithm)) + { + var ecdsaAlgorithm = (ECDsaAlgorithm)algorithm; + ECDsa key = usePublicOnlyKey ? ECDsaKeysWithoutPrivateKey[ecdsaAlgorithm] : ECDsaKeys[ecdsaAlgorithm]; + verified = msg.Verify(key); + } + else + { + RSA key = usePublicOnlyKey ? RSAKeyWithoutPrivateKey : RSAKey; + verified = msg.Verify(key); + } + + Assert.True(verified, "CoseSign1Message.Verify(key)"); + AssertExtensions.SequenceEqual(s_sampleContent, msg.Content.GetValueOrDefault().Span); + + Assert.True(msg.ProtectedHeaders.TryGetEncodedValue(CoseHeaderLabel.Algorithm, out ReadOnlyMemory encodedAlg), + "Algorithm header must be protected"); + + Assert.Equal(algorithm, new CborReader(encodedAlg).ReadInt32()); + } + } + + [Theory] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-02.json + [InlineData("D28443A10126A10442313154546869732069732074686520636F6E74656E742F58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-06.json + [InlineData("D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-07.json + [InlineData("D28443A10126A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")] + public void VerifyReturnsFalseWithWrongSignature(string hexCborMessage) + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(hexCborMessage)); + Assert.False(msg.Verify(DefaultKey)); + } + + [Fact] + public void VerifyReturnsFalseWithDataNotMatchingSignature() + { + string encodedMsg = "D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B"; + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(encodedMsg)); + Assert.True(msg.Verify(DefaultKey), "msg.Verify(ES256)"); + + encodedMsg = ReplaceFirst(encodedMsg, "45A201260300", "45A201260301"); + msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(encodedMsg)); + Assert.False(msg.Verify(DefaultKey), "msg.Verify(ES256) - Corrupt protected header"); + + encodedMsg = ReplaceFirst(encodedMsg, "546869732069732074686520636F6E74656E742E", "546869732069732074686520636F6E74656E743E"); + msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(encodedMsg)); + Assert.False(msg.Verify(DefaultKey), "msg.Verify(ES256) - Corrupt content"); + + static string ReplaceFirst(string text, string search, string replace) + { + int pos = text.IndexOf(search); + return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); + } + } + + [Theory] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-03.json + [InlineData("D28445A1013903E6A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + // https://github.com/cose-wg/Examples/blob/master/sign1-tests/sign-fail-04.json + [InlineData("D2844AA10167756E6B6E6F776EA10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")] + public void VerifyThrowsWithUnknownAlgorithm(string hexCborMessage) + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray(hexCborMessage)); + Assert.Throws(() => msg.Verify(DefaultKey)); + } + + [Fact] + public void VerifyDetached() + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray("D28445A201260300A104423131F658406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")); + Assert.Null(msg.Content); + Assert.True(msg.Verify(DefaultKey, s_sampleContent)); + } + + [Fact] + public void VerifyThrowsIfMessageWasDetachedAndContentWasNotSupplied() + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray("D28445A201260300A104423131F658406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B")); + Assert.Null(msg.Content); + Assert.Throws(() => msg.Verify(DefaultKey)); + } + + [Fact] + public void VerifyThrowsIfMessageWasEmbeddedAndContentWasSupplied() + { + CoseSign1Message msg = CoseMessage.DecodeSign1(ByteUtils.HexToByteArray("D28443A10126A10442313154546869732069732074686520636F6E74656E742E58408EB33E4CA31D1C465AB05AAC34CC6B23D58FEF5C083106C4D25A91AEF0B0117E2AF9A291AA32E14AB834DC56ED2A223444547E01F11D3B0916E5A4C345CACB36")); + Assert.NotNull(msg.Content); + Assert.Throws(() => msg.Verify(DefaultKey, s_sampleContent)); + } + + [Fact] + public void VerifyThrowsIfCriticalHeaderWasIncluded() + { + var protectedHeaders = GetHeaderMapWithAlgorithm(); + protectedHeaders.SetValue(CoseHeaderLabel.Critical, ReadOnlySpan.Empty); + byte[] encodedMsg = CoseSign1Message.Sign(s_sampleContent, protectedHeaders, GetEmptyHeaderMap(), DefaultKey, DefaultHash); + + CoseSign1Message msg = CoseMessage.DecodeSign1(encodedMsg); + Assert.Throws(() => msg.Verify(DefaultKey)); + + var unprotectedHeaders = GetEmptyHeaderMap(); + unprotectedHeaders.SetValue(CoseHeaderLabel.Critical, ReadOnlySpan.Empty); + encodedMsg = CoseSign1Message.Sign(s_sampleContent, GetHeaderMapWithAlgorithm(), unprotectedHeaders, DefaultKey, DefaultHash); + + msg = CoseMessage.DecodeSign1(encodedMsg); + Assert.Throws(() => msg.Verify(DefaultKey)); + } + + [Fact] + public void VerifyThrowsIfCounterSignatureHeaderWasIncluded() + { + var protectedHeaders = GetHeaderMapWithAlgorithm(); + protectedHeaders.SetValue(CoseHeaderLabel.CounterSignature, ReadOnlySpan.Empty); + + byte[] encodedMsg = CoseSign1Message.Sign(s_sampleContent, protectedHeaders, GetEmptyHeaderMap(), DefaultKey, DefaultHash); + CoseSign1Message msg = CoseMessage.DecodeSign1(encodedMsg); + + Assert.Throws(() => msg.Verify(DefaultKey)); + + var unprotectedHeaders = GetEmptyHeaderMap(); + unprotectedHeaders.SetValue(CoseHeaderLabel.CounterSignature, ReadOnlySpan.Empty); + encodedMsg = CoseSign1Message.Sign(s_sampleContent, GetHeaderMapWithAlgorithm(), unprotectedHeaders, DefaultKey, DefaultHash); + + msg = CoseMessage.DecodeSign1(encodedMsg); + Assert.Throws(() => msg.Verify(DefaultKey)); + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/CoseTestHelpers.cs b/src/libraries/System.Security.Cryptography.Cose/tests/CoseTestHelpers.cs new file mode 100644 index 00000000000000..461382b715fd1f --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/CoseTestHelpers.cs @@ -0,0 +1,302 @@ +// 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.Formats.Cbor; +using System.Linq; +using System.Text; +using Microsoft.IdentityModel.Tokens; +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.Cose.Tests +{ + public class CoseTestHelpers + { + internal const int KnownHeaderAlg = 1; + internal const int KnownHeaderCrit = 2; + internal const int KnownHeaderContentType = 3; + internal const int KnownHeaderKid = 4; + internal const int KnownHeaderIV = 5; + internal const int KnownHeaderPartialIV = 6; + internal const int KnownHeaderCounterSignature = 7; + internal static readonly byte[] s_sampleContent = Encoding.UTF8.GetBytes("This is the content."); + internal const string ContentTypeDummyValue = "application/cose; cose-type=\"cose-sign1\""; + + public enum ECDsaAlgorithm + { + ES256 = -7, + ES384 = -35, + ES512 = -36 + } + + public enum RSAAlgorithm + { + PS256 = -37, + PS384 = -38, + PS512 = -39 + } + + public enum ContentTestCase + { + Empty, + Small, + Large + } + + internal static HashAlgorithmName GetHashAlgorithmNameFromCoseAlgorithm(int algorithm) + => algorithm switch + { + (int)ECDsaAlgorithm.ES256 or (int)RSAAlgorithm.PS256 => HashAlgorithmName.SHA256, + (int)ECDsaAlgorithm.ES384 or (int)RSAAlgorithm.PS384 => HashAlgorithmName.SHA384, + (int)ECDsaAlgorithm.ES512 or (int)RSAAlgorithm.PS512 => HashAlgorithmName.SHA512, + _ => throw new InvalidOperationException() + }; + + internal static CoseHeaderMap GetHeaderMapWithAlgorithm(int algorithm = (int)ECDsaAlgorithm.ES256) + { + var protectedHeaders = new CoseHeaderMap(); + protectedHeaders.SetValue(CoseHeaderLabel.Algorithm, algorithm); + return protectedHeaders; + } + + internal static CoseHeaderMap GetEmptyHeaderMap() => new CoseHeaderMap(); + + internal static List<(CoseHeaderLabel, ReadOnlyMemory)> GetExpectedProtectedHeaders(int algorithm = (int)ECDsaAlgorithm.ES256) + { + var l = new List<(CoseHeaderLabel, ReadOnlyMemory)>(); + AddEncoded(l, CoseHeaderLabel.Algorithm, algorithm); + + return l; + } + + internal static List<(CoseHeaderLabel, ReadOnlyMemory)> GetEmptyExpectedHeaders() => new(); + + internal static void AddEncoded(List<(CoseHeaderLabel, ReadOnlyMemory)> list, CoseHeaderLabel label, int value) + { + var writer = new CborWriter(); + writer.WriteInt32(value); + list.Add((label, writer.Encode())); + } + + internal static byte[] GetDummyContent(ContentTestCase @case) + { + return @case switch + { + ContentTestCase.Empty => Array.Empty(), + ContentTestCase.Small => s_sampleContent, + ContentTestCase.Large => Enumerable.Repeat(default(byte), 1024).ToArray(), + _ => throw new InvalidOperationException(), + }; + } + + internal static void AssertSign1Message( + byte[] encodedMsg, + byte[]? expectedContent, + AsymmetricAlgorithm signingKey, + List<(CoseHeaderLabel, ReadOnlyMemory)>? expectedProtectedHeaders = null, + List<(CoseHeaderLabel, ReadOnlyMemory)>? expectedUnprotectedHeaders = null) + { + Assert.NotNull(encodedMsg); + var reader = new CborReader(encodedMsg); + + // Start + Assert.Equal((CborTag)18, reader.ReadTag()); + Assert.Equal(4, reader.ReadStartArray()); + + // Protected headers + AssertSign1ProtectedHeaders(reader.ReadByteString(), expectedProtectedHeaders ?? GetExpectedProtectedHeaders()); + + // Unprotected headers + AssertSign1Headers(reader, expectedUnprotectedHeaders ?? GetEmptyExpectedHeaders()); + + // Content + if (expectedContent != null) + { + AssertExtensions.SequenceEqual(expectedContent, reader.ReadByteString()); + } + else + { + reader.ReadNull(); + } + + // Signature + byte[] signatureBytes = reader.ReadByteString(); + Assert.Equal(GetSignatureSize(signingKey), signatureBytes.Length); + + // End + reader.ReadEndArray(); + Assert.Equal(0, reader.BytesRemaining); + + // Verify + CoseSign1Message msg = CoseMessage.DecodeSign1(encodedMsg); + if (signingKey is ECDsa ecdsa) + { + Assert.True(msg.Verify(ecdsa), "msg.Verify(ecdsa)"); + } + else if (signingKey is RSA rsa) + { + Assert.True(msg.Verify(rsa), "msg.Verify(rsa)"); + } + else + { + throw new InvalidOperationException(); + } + } + + internal static int GetSignatureSize(AsymmetricAlgorithm key) + { + int size = (key.KeySize + 7) / 8; + + if (key is ECDsa) + { + size *= 2; + } + + return size; + } + + private static void AssertSign1ProtectedHeaders(byte[] protectedHeadersBytes, List<(CoseHeaderLabel, ReadOnlyMemory)> expectedProtectedHeaders) + { + var reader = new CborReader(protectedHeadersBytes); + AssertSign1Headers(reader, expectedProtectedHeaders); + + Assert.Equal(0, reader.BytesRemaining); + } + + private static void AssertSign1Headers(CborReader reader, List<(CoseHeaderLabel, ReadOnlyMemory)> expectedHeaders) + { + Assert.Equal(expectedHeaders.Count, reader.ReadStartMap()); + CoseHeaderMap headers = new(); + + int headerCount = 0; + while(reader.PeekState() != CborReaderState.EndMap) + { + CoseHeaderLabel label = reader.PeekState() switch + { + CborReaderState.NegativeInteger or CborReaderState.UnsignedInteger => new CoseHeaderLabel(reader.ReadInt32()), + CborReaderState.TextString => new CoseHeaderLabel(reader.ReadTextString()), + _ => throw new InvalidOperationException() + }; + + headers.SetEncodedValue(label, reader.ReadEncodedValue().Span); + headerCount++; + } + + reader.ReadEndMap(); + Assert.Equal(expectedHeaders.Count, headerCount); + + foreach ((CoseHeaderLabel expectedLabel, ReadOnlyMemory expectedEncodedValue) in expectedHeaders) + { + Assert.True(headers.TryGetEncodedValue(expectedLabel, out ReadOnlyMemory encodedValue), "headers.TryGetEncodedValue(expectedLabel, out ReadOnlyMemory encodedValue)"); + AssertExtensions.SequenceEqual(expectedEncodedValue.Span, encodedValue.Span); + } + } + + private static ECParameters _ec256Parameters = CreateECParameters("nistP256", "usWxHK2PmfnHKwXPS54m0kTcGJ90UiglWiGahtagnv8", "IBOL-C3BttVivg-lSreASjpkttcsz-1rb7btKLv8EX4", "V8kgd2ZBRuh2dgyVINBUqpPDr7BOMGcF22CQMIUHtNM"); + private static ECParameters _ec384Parameters = CreateECParameters("nistP384", "kTJyP2KSsBBhnb4kjWmMF7WHVsY55xUPgb7k64rDcjatChoZ1nvjKmYmPh5STRKc", "mM0weMVU2DKsYDxDJkEP9hZiRZtB8fPfXbzINZj_fF7YQRynNWedHEyzAJOX2e8s", "ok3Nq97AXlpEusO7jIy1FZATlBP9PNReMU7DWbkLQ5dU90snHuuHVDjEPmtV0fTo"); + private static ECParameters _ec512Parameters = CreateECParameters("nistP521", "AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkTKqjqvjyekWF-7ytDyRXYgCF5cj0Kt", "AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUdaQkAgDPrwQrJmbnX9cwlGfP-HqHZR1", "AAhRON2r9cqXX1hg-RoI6R1tX5p2rUAYdmpHZoC1XNM56KtscrX6zbKipQrCW9CGZH3T4ubpnoTKLDYJ_fF3_rJt"); + + [ThreadStatic] + private static ECDsa? t_es256; + [ThreadStatic] + private static ECDsa? t_es384; + [ThreadStatic] + private static ECDsa? t_es512; + + private static ECDsa ES256 => t_es256 ??= CreateECDsa(_ec256Parameters, true); + private static ECDsa ES384 => t_es384 ??= CreateECDsa(_ec384Parameters, true); + private static ECDsa ES512 => t_es512 ??= CreateECDsa(_ec512Parameters, true); + + [ThreadStatic] + private static ECDsa? t_es256WithoutPrivateKey; + [ThreadStatic] + private static ECDsa? t_es384WithoutPrivateKey; + [ThreadStatic] + private static ECDsa? t_es512WithoutPrivateKey; + + private static ECDsa ES256WithoutPrivateKey => t_es256WithoutPrivateKey ??= CreateECDsa(_ec256Parameters, false); + private static ECDsa ES384WithoutPrivateKey => t_es384WithoutPrivateKey ??= CreateECDsa(_ec384Parameters, false); + private static ECDsa ES512WithoutPrivateKey => t_es512WithoutPrivateKey ??= CreateECDsa(_ec512Parameters, false); + + internal static ECDsa DefaultKey => ES256; + internal static HashAlgorithmName DefaultHash { get; } = GetHashAlgorithmNameFromCoseAlgorithm((int)ECDsaAlgorithm.ES256); + + internal static readonly ThreadStaticECDsaDictionary ECDsaKeys = new(true); + internal static readonly ThreadStaticECDsaDictionary ECDsaKeysWithoutPrivateKey = new(false); + + [ThreadStatic] + internal static RSA? t_rsaKey; + [ThreadStatic] + internal static RSA? t_rsaKeyWithoutPrivateKey; + + internal static RSA RSAKey => t_rsaKey ??= CreateRSA(true); + internal static RSA RSAKeyWithoutPrivateKey => t_rsaKeyWithoutPrivateKey ??= CreateRSA(false); + + private static ECParameters CreateECParameters(string curveFriendlyName, string base64UrlQx, string base64UrlQy, string base64UrlPrivateKey) + { + return new() + { + Curve = ECCurve.CreateFromFriendlyName(curveFriendlyName), + Q = new ECPoint + { + X = Base64UrlEncoder.DecodeBytes(base64UrlQx), + Y = Base64UrlEncoder.DecodeBytes(base64UrlQy), + }, + D = Base64UrlEncoder.DecodeBytes(base64UrlPrivateKey), + }; + } + + private static ECDsa CreateECDsa(ECParameters parameters, bool includePrivateKey) + { + ECParameters parametersLocalCopy = parameters; + if (!includePrivateKey) + { + parametersLocalCopy.D = null; + } + + return ECDsa.Create(parametersLocalCopy); + } + + private static RSA CreateRSA(bool includePrivateKey) + { + var rsaParameters = new RSAParameters + { + Modulus = ByteUtils.HexToByteArray("BC7E29D0DF7E20CC9DC8D509E0F68895922AF0EF452190D402C61B554334A7BF91C9A570240F994FAE1B69035BCFAD4F7E249EB26087C2665E7C958C967B1517413DC3F97A431691A5999B257CC6CD356BAD168D929B8BAE9020750E74CF60F6FD35D6BB3FC93FC28900478694F508B33E7C00E24F90EDF37457FC3E8EFCFD2F42306301A8205AB740515331D5C18F0C64D4A43BE52FC440400F6BFC558A6E32884C2AF56F29E5C52780CEA7285F5C057FC0DFDA232D0ADA681B01495D9D0E32196633588E289E59035FF664F056189F2F10FE05827B796C326E3E748FFA7C589ED273C9C43436CDDB4A6A22523EF8BCB2221615B799966F1ABA5BC84B7A27CF"), + Exponent = ByteUtils.HexToByteArray("010001"), + D = ByteUtils.HexToByteArray("0969FF04FCC1E1647C20402CF3F736D4CAE33F264C1C6EE3252CFCC77CDEF533D700570AC09A50D7646EDFB1F86A13BCABCF00BD659F27813D08843597271838BC46ED4743FE741D9BC38E0BF36D406981C7B81FCE54861CEBFB85AD23A8B4833C1BEE18C05E4E436A869636980646EECB839E4DAF434C9C6DFBF3A55CE1DB73E4902F89384BD6F9ECD3399FB1ED4B83F28D356C8E619F1F0DC96BBE8B75C1812CA58F360259EAEB1D17130C3C0A2715A99BE49898E871F6088A29570DC2FFA0CEFFFA27F1F055CBAABFD8894E0CC24F176E34EBAD32278A466F8A34A685ACC8207D9EC1FCBBD094996DC73C6305FCA31668BE57B1699D0BB456CC8871BFFBCD"), + P = ByteUtils.HexToByteArray("F331593E147FD3A3235675F0D36A06E5426F7C5E78E49B2ACD3E268BA50E48ED2A52F3B4FA492D6BCF70EB3F915A716078A113652E3FA4C6D50AF8606C2D2C28ECAF083B712D6CEE1263C1205DA03BBBFA6F5C2D8B1A96194089CACB306C844A832E2B032B5F96A7EAB6CFE1107299013C8B0E9F089BBABBC504DD8BC138BA4B"), + Q = ByteUtils.HexToByteArray("C66B5DDCAB7017E14083F2854F61997F35636C86F2F92B172D2555588EE1ED899BA6B6ADEC0A02024B2E78A91C891256A8571E0EFB3BAC3F41724DE036EC8FA0F93E2CFBDDA59C6FF1816EB3DC938D4E45912423F3F34B7E96C39E2E4D65A3DCD6DFD2B4EF527841001272F77855B6D75D40D54BB65BD1DF8538E96EC4DAD60D"), + DP = ByteUtils.HexToByteArray("1F677CFDBE49EF7B7EA1B8A33BB9D260229F20F1562D373864BEA4DD9D97E5A4F2B53991624CB6D7D836DDBA1CBC102E0405D0EA5CF98CFEBC1E298AD20D5749859EE8B23C604053D1FE1DBF5F37C4DEF66D10FB349E5F49AD82DDB435719DF7BD4EE5F107D5D52FA3E8AD9983B538BAE72591E2C98ACAA75ABED1192DFF7457"), + DQ = ByteUtils.HexToByteArray("2CCC9F13ACCD9146B57755318E3BBE197FA7642090097C162E86485FC75AF173E965D9C7290D1569092A83E9C2DC9BFC5EE3D490935EE4C41F75BC698C5D1B0CC059AE746B95F1DD408CF5BEBC65C038D4F23153C0C7C4DADF1569C890870B5958568ECF755D8C73389DF1C138353A242414F853B0E7C85A0C4D4E3F4949139D"), + InverseQ = ByteUtils.HexToByteArray("7B6E2406FD03BC75EA22AB94A8D242506A6BBFE36BC8132DBBCE50B8425425062B697AFA180F5685E90E11EB5712D2E6E2B24E2A1E7C75D5940E08301E824470EF38561BE3E9D05F9FCA8E6F69A028A928E85E58212E789BA577B80378D7A995FA6AFEA74BE364661A679F82776C5905F43F7A35692986271E594E1D11F9668D"), + }; + + if (!includePrivateKey) + { + return RSA.Create(new RSAParameters { Modulus = rsaParameters.Modulus, Exponent = rsaParameters.Exponent }); + } + + return RSA.Create(rsaParameters); + } + + internal class ThreadStaticECDsaDictionary: Dictionary + { + private bool _includePrivateKeys; + public ThreadStaticECDsaDictionary(bool includePrivateKeys) + { + _includePrivateKeys = includePrivateKeys; + } + public new ECDsa this[ECDsaAlgorithm key] + { + get => key switch + { + ECDsaAlgorithm.ES256 => _includePrivateKeys ? ES256 : ES256WithoutPrivateKey, + ECDsaAlgorithm.ES384 => _includePrivateKeys ? ES384 : ES384WithoutPrivateKey, + ECDsaAlgorithm.ES512 => _includePrivateKeys ? ES512 : ES512WithoutPrivateKey, + _ => throw new InvalidOperationException() + }; + } + } + } +} diff --git a/src/libraries/System.Security.Cryptography.Cose/tests/System.Security.Cryptography.Cose.Tests.csproj b/src/libraries/System.Security.Cryptography.Cose/tests/System.Security.Cryptography.Cose.Tests.csproj new file mode 100644 index 00000000000000..a427e73c202262 --- /dev/null +++ b/src/libraries/System.Security.Cryptography.Cose/tests/System.Security.Cryptography.Cose.Tests.csproj @@ -0,0 +1,33 @@ + + + $(NetCoreAppCurrent);net48 + enable + true + true + true + + + + + CommonTest\System\Security\Cryptography\ByteUtils.cs + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/DecryptorPalWindows.Decrypt.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/DecryptorPalWindows.Decrypt.cs index 8ab01da453d0ce..9490231825a593 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/DecryptorPalWindows.Decrypt.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/Internal/Cryptography/Pal/Windows/DecryptorPalWindows.Decrypt.cs @@ -162,21 +162,34 @@ internal sealed partial class DecryptorPalWindows : DecryptorPal } } - private Exception? TryDecryptTrans(KeyTransRecipientInfo recipientInfo, SafeProvOrNCryptKeyHandle hKey, CryptKeySpec keySpec) + private unsafe Exception? TryDecryptTrans(KeyTransRecipientInfo recipientInfo, SafeProvOrNCryptKeyHandle hKey, CryptKeySpec keySpec) { KeyTransRecipientInfoPalWindows pal = (KeyTransRecipientInfoPalWindows)(recipientInfo.Pal); - CMSG_CTRL_DECRYPT_PARA decryptPara; - decryptPara.cbSize = Marshal.SizeOf(); - decryptPara.hKey = hKey; - decryptPara.dwKeySpec = keySpec; - decryptPara.dwRecipientIndex = pal.Index; + bool keyAddRefd = false; - bool success = Interop.Crypt32.CryptMsgControl(_hCryptMsg, 0, MsgControlType.CMSG_CTRL_DECRYPT, ref decryptPara); - if (!success) - return Marshal.GetHRForLastWin32Error().ToCryptographicException(); + try + { + CMSG_CTRL_DECRYPT_PARA decryptPara; + decryptPara.cbSize = sizeof(CMSG_CTRL_DECRYPT_PARA); + hKey.DangerousAddRef(ref keyAddRefd); + decryptPara.hKey = hKey.DangerousGetHandle(); + decryptPara.dwKeySpec = keySpec; + decryptPara.dwRecipientIndex = pal.Index; - return null; + bool success = Interop.Crypt32.CryptMsgControl(_hCryptMsg, 0, MsgControlType.CMSG_CTRL_DECRYPT, ref decryptPara); + if (!success) + return Marshal.GetHRForLastWin32Error().ToCryptographicException(); + + return null; + } + finally + { + if (keyAddRefd) + { + hKey.DangerousRelease(); + } + } } private Exception? TryDecryptAgree(KeyAgreeRecipientInfo keyAgreeRecipientInfo, SafeProvOrNCryptKeyHandle hKey, CryptKeySpec keySpec, X509Certificate2Collection originatorCerts, X509Certificate2Collection extraStore) @@ -187,46 +200,58 @@ internal sealed partial class DecryptorPalWindows : DecryptorPal return pal.WithCmsgCmsRecipientInfo( delegate (CMSG_KEY_AGREE_RECIPIENT_INFO* pKeyAgreeRecipientInfo) { - CMSG_CTRL_KEY_AGREE_DECRYPT_PARA decryptPara = default(CMSG_CTRL_KEY_AGREE_DECRYPT_PARA); - decryptPara.cbSize = Marshal.SizeOf(); - decryptPara.hProv = hKey; - decryptPara.dwKeySpec = keySpec; - decryptPara.pKeyAgree = pKeyAgreeRecipientInfo; - decryptPara.dwRecipientIndex = pal.Index; - decryptPara.dwRecipientEncryptedKeyIndex = pal.SubIndex; - CMsgKeyAgreeOriginatorChoice originatorChoice = pKeyAgreeRecipientInfo->dwOriginatorChoice; - switch (originatorChoice) + bool keyAddRefd = false; + try { - case CMsgKeyAgreeOriginatorChoice.CMSG_KEY_AGREE_ORIGINATOR_CERT: - { - X509Certificate2Collection candidateCerts = new X509Certificate2Collection(); - candidateCerts.AddRange(PkcsHelpers.GetStoreCertificates(StoreName.AddressBook, StoreLocation.CurrentUser, openExistingOnly: true)); - candidateCerts.AddRange(PkcsHelpers.GetStoreCertificates(StoreName.AddressBook, StoreLocation.LocalMachine, openExistingOnly: true)); - candidateCerts.AddRange(originatorCerts); - candidateCerts.AddRange(extraStore); - SubjectIdentifier originatorId = pKeyAgreeRecipientInfo->OriginatorCertId.ToSubjectIdentifier(); - X509Certificate2? originatorCert = candidateCerts.TryFindMatchingCertificate(originatorId); - if (originatorCert == null) - return ErrorCode.CRYPT_E_NOT_FOUND.ToCryptographicException(); - using (SafeCertContextHandle hCertContext = originatorCert.CreateCertContextHandle()) + CMSG_CTRL_KEY_AGREE_DECRYPT_PARA decryptPara = default(CMSG_CTRL_KEY_AGREE_DECRYPT_PARA); + decryptPara.cbSize = sizeof(CMSG_CTRL_KEY_AGREE_DECRYPT_PARA); + hKey.DangerousAddRef(ref keyAddRefd); + decryptPara.hProv = hKey.DangerousGetHandle(); + decryptPara.dwKeySpec = keySpec; + decryptPara.pKeyAgree = pKeyAgreeRecipientInfo; + decryptPara.dwRecipientIndex = pal.Index; + decryptPara.dwRecipientEncryptedKeyIndex = pal.SubIndex; + CMsgKeyAgreeOriginatorChoice originatorChoice = pKeyAgreeRecipientInfo->dwOriginatorChoice; + switch (originatorChoice) + { + case CMsgKeyAgreeOriginatorChoice.CMSG_KEY_AGREE_ORIGINATOR_CERT: { - CERT_CONTEXT* pOriginatorCertContext = hCertContext.DangerousGetCertContext(); - decryptPara.OriginatorPublicKey = pOriginatorCertContext->pCertInfo->SubjectPublicKeyInfo.PublicKey; + X509Certificate2Collection candidateCerts = new X509Certificate2Collection(); + candidateCerts.AddRange(PkcsHelpers.GetStoreCertificates(StoreName.AddressBook, StoreLocation.CurrentUser, openExistingOnly: true)); + candidateCerts.AddRange(PkcsHelpers.GetStoreCertificates(StoreName.AddressBook, StoreLocation.LocalMachine, openExistingOnly: true)); + candidateCerts.AddRange(originatorCerts); + candidateCerts.AddRange(extraStore); + SubjectIdentifier originatorId = pKeyAgreeRecipientInfo->OriginatorCertId.ToSubjectIdentifier(); + X509Certificate2? originatorCert = candidateCerts.TryFindMatchingCertificate(originatorId); + if (originatorCert == null) + return ErrorCode.CRYPT_E_NOT_FOUND.ToCryptographicException(); + using (SafeCertContextHandle hCertContext = originatorCert.CreateCertContextHandle()) + { + CERT_CONTEXT* pOriginatorCertContext = hCertContext.DangerousGetCertContext(); + decryptPara.OriginatorPublicKey = pOriginatorCertContext->pCertInfo->SubjectPublicKeyInfo.PublicKey; - // Do not factor this call out of the switch statement as leaving this "using" block will free up - // native memory that decryptPara points to. - return TryExecuteDecryptAgree(ref decryptPara); + // Do not factor this call out of the switch statement as leaving this "using" block will free up + // native memory that decryptPara points to. + return TryExecuteDecryptAgree(ref decryptPara); + } } - } - case CMsgKeyAgreeOriginatorChoice.CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY: - { - decryptPara.OriginatorPublicKey = pKeyAgreeRecipientInfo->OriginatorPublicKeyInfo.PublicKey; - return TryExecuteDecryptAgree(ref decryptPara); - } + case CMsgKeyAgreeOriginatorChoice.CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY: + { + decryptPara.OriginatorPublicKey = pKeyAgreeRecipientInfo->OriginatorPublicKeyInfo.PublicKey; + return TryExecuteDecryptAgree(ref decryptPara); + } - default: - return new CryptographicException(SR.Format(SR.Cryptography_Cms_Invalid_Originator_Identifier_Choice, originatorChoice)); + default: + return new CryptographicException(SR.Format(SR.Cryptography_Cms_Invalid_Originator_Identifier_Choice, originatorChoice)); + } + } + finally + { + if (keyAddRefd) + { + hKey.DangerousRelease(); + } } }); } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj b/src/libraries/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj index 4b46896972cdb5..4c0f530d5faed4 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System.Security.Cryptography.Pkcs.csproj @@ -66,6 +66,10 @@ System.Security.Cryptography.Pkcs.EnvelopedCms + + + diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/CryptographicAttributeObjectCollection.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/CryptographicAttributeObjectCollection.cs index 7386c67b655fa0..3d70d4f8092272 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/CryptographicAttributeObjectCollection.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/CryptographicAttributeObjectCollection.cs @@ -23,19 +23,13 @@ public CryptographicAttributeObjectCollection(CryptographicAttributeObject attri _list.Add(attribute); } - public int Add(AsnEncodedData asnEncodedData) + public int Add(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); - return Add(new CryptographicAttributeObject(asnEncodedData.Oid!, new AsnEncodedDataCollection(asnEncodedData))); } - public int Add(CryptographicAttributeObject attribute) + public int Add(CryptographicAttributeObject attribute!!) { - if (attribute == null) - throw new ArgumentNullException(nameof(attribute)); - // // Merge with existing attribute, if already existed, else add as new. // @@ -77,11 +71,8 @@ internal void AddWithoutMerge(CryptographicAttributeObject attribute) _list.Add(attribute); } - public void Remove(CryptographicAttributeObject attribute) + public void Remove(CryptographicAttributeObject attribute!!) { - if (attribute == null) - throw new ArgumentNullException(nameof(attribute)); - _list.Remove(attribute); } @@ -127,10 +118,8 @@ IEnumerator IEnumerable.GetEnumerator() return new CryptographicAttributeObjectEnumerator(this); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) @@ -145,10 +134,8 @@ void ICollection.CopyTo(Array array, int index) } } - public void CopyTo(CryptographicAttributeObject[] array, int index) + public void CopyTo(CryptographicAttributeObject[] array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || index >= array.Length) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); if (index > array.Length - Count) diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipient.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipient.cs index 3c4188f44c03e7..9fa5dcc89fabe4 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipient.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipient.cs @@ -19,11 +19,11 @@ public CmsRecipient(X509Certificate2 certificate) #else public #endif - CmsRecipient(X509Certificate2 certificate, RSAEncryptionPadding rsaEncryptionPadding) + CmsRecipient(X509Certificate2 certificate, RSAEncryptionPadding rsaEncryptionPadding!!) : this(certificate) { ValidateRSACertificate(certificate); - RSAEncryptionPadding = rsaEncryptionPadding ?? throw new ArgumentNullException(nameof(rsaEncryptionPadding)); + RSAEncryptionPadding = rsaEncryptionPadding; } #if NETSTANDARD2_0 @@ -31,18 +31,15 @@ public CmsRecipient(X509Certificate2 certificate) #else public #endif - CmsRecipient(SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate, RSAEncryptionPadding rsaEncryptionPadding) + CmsRecipient(SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate, RSAEncryptionPadding rsaEncryptionPadding!!) : this(recipientIdentifierType, certificate) { ValidateRSACertificate(certificate); - RSAEncryptionPadding = rsaEncryptionPadding ?? throw new ArgumentNullException(nameof(rsaEncryptionPadding)); + RSAEncryptionPadding = rsaEncryptionPadding; } - public CmsRecipient(SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate) + public CmsRecipient(SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - switch (recipientIdentifierType) { case SubjectIdentifierType.Unknown: diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipientCollection.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipientCollection.cs index 9a040572e4884c..0e65973e311b2c 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipientCollection.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/CmsRecipientCollection.cs @@ -53,21 +53,15 @@ public int Count } } - public int Add(CmsRecipient recipient) + public int Add(CmsRecipient recipient!!) { - if (recipient == null) - throw new ArgumentNullException(nameof(recipient)); - int indexOfNewItem = _recipients.Count; _recipients.Add(recipient); return indexOfNewItem; } - public void Remove(CmsRecipient recipient) + public void Remove(CmsRecipient recipient!!) { - if (recipient == null) - throw new ArgumentNullException(nameof(recipient)); - _recipients.Remove(recipient); } @@ -81,10 +75,8 @@ IEnumerator IEnumerable.GetEnumerator() return new CmsRecipientEnumerator(this); } - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) @@ -99,10 +91,8 @@ public void CopyTo(Array array, int index) } } - public void CopyTo(CmsRecipient[] array, int index) + public void CopyTo(CmsRecipient[] array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || index >= array.Length) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); if (index > array.Length - Count) diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/ContentInfo.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/ContentInfo.cs index cb5d774908f2c4..cdc8659b487f62 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/ContentInfo.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/ContentInfo.cs @@ -19,13 +19,8 @@ public ContentInfo(byte[] content) { } - public ContentInfo(Oid contentType, byte[] content) + public ContentInfo(Oid contentType!!, byte[] content!!) { - if (contentType == null) - throw new ArgumentNullException(nameof(contentType)); - if (content == null) - throw new ArgumentNullException(nameof(content)); - ContentType = contentType; Content = content; } @@ -34,10 +29,8 @@ public ContentInfo(Oid contentType, byte[] content) public byte[] Content { get; } - public static Oid GetContentType(byte[] encodedMessage) + public static Oid GetContentType(byte[] encodedMessage!!) { - if (encodedMessage == null) - throw new ArgumentNullException(nameof(encodedMessage)); return PkcsPal.Instance.GetEncodedMessageType(encodedMessage); } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/EnvelopedCms.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/EnvelopedCms.cs index eb99ba364cfeb1..f33f8c2b36a8e0 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/EnvelopedCms.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/EnvelopedCms.cs @@ -25,13 +25,8 @@ public EnvelopedCms(ContentInfo contentInfo) { } - public EnvelopedCms(ContentInfo contentInfo, AlgorithmIdentifier encryptionAlgorithm) + public EnvelopedCms(ContentInfo contentInfo!!, AlgorithmIdentifier encryptionAlgorithm!!) { - if (contentInfo == null) - throw new ArgumentNullException(nameof(contentInfo)); - if (encryptionAlgorithm == null) - throw new ArgumentNullException(nameof(encryptionAlgorithm)); - Version = 0; // It makes little sense to ask for a version before you've decoded, but since the .NET Framework returns 0 in that case, we will too. ContentInfo = contentInfo; ContentEncryptionAlgorithm = encryptionAlgorithm; @@ -84,19 +79,13 @@ public RecipientInfoCollection RecipientInfos // // Encrypt() overloads. Senders invoke this to encrypt and encode a CMS. Afterward, invoke the Encode() method to retrieve the actual encoding. // - public void Encrypt(CmsRecipient recipient) + public void Encrypt(CmsRecipient recipient!!) { - if (recipient == null) - throw new ArgumentNullException(nameof(recipient)); - Encrypt(new CmsRecipientCollection(recipient)); } - public void Encrypt(CmsRecipientCollection recipients) + public void Encrypt(CmsRecipientCollection recipients!!) { - if (recipients == null) - throw new ArgumentNullException(nameof(recipients)); - // .NET Framework compat note: Unlike the desktop, we don't provide a free UI to select the recipient. The app must give it to us programmatically. if (recipients.Count == 0) throw new PlatformNotSupportedException(SR.Cryptography_Cms_NoRecipients); @@ -124,11 +113,8 @@ public byte[] Encode() // // Recipients invoke Decode() to turn the on-the-wire representation into a usable EnvelopedCms instance. Next step is to call Decrypt(). // - public void Decode(byte[] encodedMessage) + public void Decode(byte[] encodedMessage!!) { - if (encodedMessage == null) - throw new ArgumentNullException(nameof(encodedMessage)); - Decode(new ReadOnlySpan(encodedMessage)); } @@ -175,38 +161,23 @@ public void Decrypt() DecryptContent(RecipientInfos, null); } - public void Decrypt(RecipientInfo recipientInfo) + public void Decrypt(RecipientInfo recipientInfo!!) { - if (recipientInfo == null) - throw new ArgumentNullException(nameof(recipientInfo)); - DecryptContent(new RecipientInfoCollection(recipientInfo), null); } - public void Decrypt(RecipientInfo recipientInfo, X509Certificate2Collection extraStore) + public void Decrypt(RecipientInfo recipientInfo!!, X509Certificate2Collection extraStore!!) { - if (recipientInfo == null) - throw new ArgumentNullException(nameof(recipientInfo)); - - if (extraStore == null) - throw new ArgumentNullException(nameof(extraStore)); - DecryptContent(new RecipientInfoCollection(recipientInfo), extraStore); } - public void Decrypt(X509Certificate2Collection extraStore) + public void Decrypt(X509Certificate2Collection extraStore!!) { - if (extraStore == null) - throw new ArgumentNullException(nameof(extraStore)); - DecryptContent(RecipientInfos, extraStore); } - public void Decrypt(RecipientInfo recipientInfo, AsymmetricAlgorithm? privateKey) + public void Decrypt(RecipientInfo recipientInfo!!, AsymmetricAlgorithm? privateKey) { - if (recipientInfo == null) - throw new ArgumentNullException(nameof(recipientInfo)); - CheckStateForDecryption(); X509Certificate2Collection extraStore = new X509Certificate2Collection(); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12Builder.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12Builder.cs index e7c4e8c4deb85f..1f3c77bb93ba6a 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12Builder.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12Builder.cs @@ -30,14 +30,10 @@ public void AddSafeContentsEncrypted( } public void AddSafeContentsEncrypted( - Pkcs12SafeContents safeContents, + Pkcs12SafeContents safeContents!!, ReadOnlySpan passwordBytes, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (safeContents == null) - throw new ArgumentNullException(nameof(safeContents)); - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); if (pbeParameters.IterationCount < 1) throw new ArgumentOutOfRangeException(nameof(pbeParameters)); if (safeContents.ConfidentialityMode != Pkcs12ConfidentialityMode.None) @@ -78,14 +74,10 @@ public void AddSafeContentsEncrypted( } public void AddSafeContentsEncrypted( - Pkcs12SafeContents safeContents, + Pkcs12SafeContents safeContents!!, ReadOnlySpan password, - PbeParameters pbeParameters) + PbeParameters pbeParameters!!) { - if (safeContents == null) - throw new ArgumentNullException(nameof(safeContents)); - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); if (pbeParameters.IterationCount < 1) throw new ArgumentOutOfRangeException(nameof(pbeParameters)); if (safeContents.ConfidentialityMode != Pkcs12ConfidentialityMode.None) @@ -113,10 +105,8 @@ public void AddSafeContentsEncrypted( }); } - public void AddSafeContentsUnencrypted(Pkcs12SafeContents safeContents) + public void AddSafeContentsUnencrypted(Pkcs12SafeContents safeContents!!) { - if (safeContents == null) - throw new ArgumentNullException(nameof(safeContents)); if (IsSealed) throw new InvalidOperationException(SR.Cryptography_Pkcs12_PfxIsSealed); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12CertBag.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12CertBag.cs index 8504678bd0c2e5..05631d3d26f279 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12CertBag.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12CertBag.cs @@ -82,10 +82,8 @@ public X509Certificate2 GetCertificate() return new X509Certificate2(PkcsHelpers.DecodeOctetString(_decoded.CertValue)); } - private static byte[] EncodeBagValue(Oid certificateType, ReadOnlyMemory encodedCertificate) + private static byte[] EncodeBagValue(Oid certificateType!!, ReadOnlyMemory encodedCertificate) { - if (certificateType == null) - throw new ArgumentNullException(nameof(certificateType)); if (certificateType.Value == null) throw new CryptographicException(SR.Argument_InvalidOidValue); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12SafeContents.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12SafeContents.cs index 03fc39cb90f9c6..d5a9412a78986b 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12SafeContents.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs12SafeContents.cs @@ -55,10 +55,8 @@ internal Pkcs12SafeContents(ContentInfoAsn contentInfoAsn) } } - public void AddSafeBag(Pkcs12SafeBag safeBag) + public void AddSafeBag(Pkcs12SafeBag safeBag!!) { - if (safeBag == null) - throw new ArgumentNullException(nameof(safeBag)); if (IsReadOnly) throw new InvalidOperationException(SR.Cryptography_Pkcs12_SafeContentsIsReadOnly); @@ -70,10 +68,8 @@ public void AddSafeBag(Pkcs12SafeBag safeBag) _bags.Add(safeBag); } - public Pkcs12CertBag AddCertificate(X509Certificate2 certificate) + public Pkcs12CertBag AddCertificate(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); if (IsReadOnly) throw new InvalidOperationException(SR.Cryptography_Pkcs12_SafeContentsIsReadOnly); @@ -82,10 +78,8 @@ public Pkcs12CertBag AddCertificate(X509Certificate2 certificate) return bag; } - public Pkcs12KeyBag AddKeyUnencrypted(AsymmetricAlgorithm key) + public Pkcs12KeyBag AddKeyUnencrypted(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); if (IsReadOnly) throw new InvalidOperationException(SR.Cryptography_Pkcs12_SafeContentsIsReadOnly); @@ -95,10 +89,8 @@ public Pkcs12KeyBag AddKeyUnencrypted(AsymmetricAlgorithm key) return bag; } - public Pkcs12SafeContentsBag AddNestedContents(Pkcs12SafeContents safeContents) + public Pkcs12SafeContentsBag AddNestedContents(Pkcs12SafeContents safeContents!!) { - if (safeContents == null) - throw new ArgumentNullException(nameof(safeContents)); if (safeContents.ConfidentialityMode != Pkcs12ConfidentialityMode.None) throw new ArgumentException(SR.Cryptography_Pkcs12_CannotProcessEncryptedSafeContents, nameof(safeContents)); if (IsReadOnly) @@ -122,12 +114,10 @@ public Pkcs12ShroudedKeyBag AddShroudedKey( } public Pkcs12ShroudedKeyBag AddShroudedKey( - AsymmetricAlgorithm key, + AsymmetricAlgorithm key!!, ReadOnlySpan passwordBytes, PbeParameters pbeParameters) { - if (key == null) - throw new ArgumentNullException(nameof(key)); if (IsReadOnly) throw new InvalidOperationException(SR.Cryptography_Pkcs12_SafeContentsIsReadOnly); @@ -150,12 +140,10 @@ public Pkcs12ShroudedKeyBag AddShroudedKey( } public Pkcs12ShroudedKeyBag AddShroudedKey( - AsymmetricAlgorithm key, + AsymmetricAlgorithm key!!, ReadOnlySpan password, PbeParameters pbeParameters) { - if (key == null) - throw new ArgumentNullException(nameof(key)); if (IsReadOnly) throw new InvalidOperationException(SR.Cryptography_Pkcs12_SafeContentsIsReadOnly); @@ -165,11 +153,8 @@ public Pkcs12ShroudedKeyBag AddShroudedKey( return bag; } - public Pkcs12SecretBag AddSecret(Oid secretType, ReadOnlyMemory secretValue) + public Pkcs12SecretBag AddSecret(Oid secretType!!, ReadOnlyMemory secretValue) { - if (secretType == null) - throw new ArgumentNullException(nameof(secretType)); - // Read to ensure that there is precisely one legally encoded value. PkcsHelpers.EnsureSingleBerValue(secretValue.Span); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs8PrivateKeyInfo.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs8PrivateKeyInfo.cs index 8d9678d21490b1..5d97f99be065d3 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs8PrivateKeyInfo.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs8PrivateKeyInfo.cs @@ -17,14 +17,11 @@ public sealed class Pkcs8PrivateKeyInfo public ReadOnlyMemory PrivateKeyBytes { get; } public Pkcs8PrivateKeyInfo( - Oid algorithmId, + Oid algorithmId!!, ReadOnlyMemory? algorithmParameters, ReadOnlyMemory privateKey, bool skipCopies = false) { - if (algorithmId == null) - throw new ArgumentNullException(nameof(algorithmId)); - if (algorithmParameters?.Length > 0) { // Read to ensure that there is precisely one legally encoded value. @@ -51,11 +48,8 @@ private Pkcs8PrivateKeyInfo( Attributes = attributes; } - public static Pkcs8PrivateKeyInfo Create(AsymmetricAlgorithm privateKey) + public static Pkcs8PrivateKeyInfo Create(AsymmetricAlgorithm privateKey!!) { - if (privateKey == null) - throw new ArgumentNullException(nameof(privateKey)); - byte[] pkcs8 = privateKey.ExportPkcs8PrivateKey(); return Decode(pkcs8, out _, skipCopy: true); } @@ -94,11 +88,8 @@ public byte[] Encode() return writer.Encode(); } - public byte[] Encrypt(ReadOnlySpan password, PbeParameters pbeParameters) + public byte[] Encrypt(ReadOnlySpan password, PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -111,11 +102,8 @@ public byte[] Encrypt(ReadOnlySpan password, PbeParameters pbeParameters) } } - public byte[] Encrypt(ReadOnlySpan passwordBytes, PbeParameters pbeParameters) + public byte[] Encrypt(ReadOnlySpan passwordBytes, PbeParameters pbeParameters!!) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -134,13 +122,10 @@ public bool TryEncode(Span destination, out int bytesWritten) public bool TryEncrypt( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -153,13 +138,10 @@ public bool TryEncrypt( public bool TryEncrypt( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9AttributeObject.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9AttributeObject.cs index b0696f9b9ec0bd..e9810d2af658db 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9AttributeObject.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9AttributeObject.cs @@ -56,10 +56,8 @@ internal Pkcs9AttributeObject(Oid oid) } } - public override void CopyFrom(AsnEncodedData asnEncodedData) + public override void CopyFrom(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); if (!(asnEncodedData is Pkcs9AttributeObject)) throw new ArgumentException(SR.Cryptography_Pkcs9_AttributeMismatch); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentDescription.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentDescription.cs index 4624b91bcd23f7..617fcb304e961d 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentDescription.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentDescription.cs @@ -62,11 +62,8 @@ public override void CopyFrom(AsnEncodedData asnEncodedData) return octets.OctetStringToUnicode(); } - private static byte[] Encode(string documentDescription) + private static byte[] Encode(string documentDescription!!) { - if (documentDescription == null) - throw new ArgumentNullException(nameof(documentDescription)); - byte[] octets = documentDescription.UnicodeToOctetString(); return PkcsHelpers.EncodeOctetString(octets); } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentName.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentName.cs index 889c98010bf52a..5344eb70c3f267 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentName.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Pkcs9DocumentName.cs @@ -62,11 +62,8 @@ public override void CopyFrom(AsnEncodedData asnEncodedData) return octets.OctetStringToUnicode(); } - private static byte[] Encode(string documentName) + private static byte[] Encode(string documentName!!) { - if (documentName == null) - throw new ArgumentNullException(nameof(documentName)); - byte[] octets = documentName.UnicodeToOctetString(); return PkcsHelpers.EncodeOctetString(octets); } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/RecipientInfoCollection.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/RecipientInfoCollection.cs index 62397bdc0fba96..bbf8a92377b658 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/RecipientInfoCollection.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/RecipientInfoCollection.cs @@ -54,10 +54,8 @@ IEnumerator IEnumerable.GetEnumerator() return ((RecipientInfoCollection)this).GetEnumerator(); } - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) @@ -71,10 +69,8 @@ public void CopyTo(Array array, int index) } } - public void CopyTo(RecipientInfo[] array, int index) + public void CopyTo(RecipientInfo[] array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || index >= array.Length) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); _recipientInfos.CopyTo(array, index); diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampRequest.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampRequest.cs index e2f30dd54bb779..e834302c7b3aa7 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampRequest.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampRequest.cs @@ -162,18 +162,13 @@ public bool TryEncode(Span destination, out int bytesWritten) } public static Rfc3161TimestampRequest CreateFromSignerInfo( - SignerInfo signerInfo, + SignerInfo signerInfo!!, HashAlgorithmName hashAlgorithm, Oid? requestedPolicyId = null, ReadOnlyMemory? nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection? extensions = null) { - if (signerInfo == null) - { - throw new ArgumentNullException(nameof(signerInfo)); - } - // https://tools.ietf.org/html/rfc3161, Appendix A. // // The value of messageImprint field within TimeStampToken shall be a diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampToken.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampToken.cs index 7d0d6b08cc50f3..b5773082db3706 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampToken.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampToken.cs @@ -120,15 +120,10 @@ public bool VerifySignatureForHash( public bool VerifySignatureForHash( ReadOnlySpan hash, - Oid hashAlgorithmId, + Oid hashAlgorithmId!!, [NotNullWhen(true)] out X509Certificate2? signerCertificate, X509Certificate2Collection? extraCandidates = null) { - if (hashAlgorithmId == null) - { - throw new ArgumentNullException(nameof(hashAlgorithmId)); - } - signerCertificate = null; X509Certificate2? cert = GetSignerCertificate(extraCandidates); @@ -152,15 +147,10 @@ public bool VerifySignatureForHash( } public bool VerifySignatureForSignerInfo( - SignerInfo signerInfo, + SignerInfo signerInfo!!, [NotNullWhen(true)] out X509Certificate2? signerCertificate, X509Certificate2Collection? extraCandidates = null) { - if (signerInfo == null) - { - throw new ArgumentNullException(nameof(signerInfo)); - } - return VerifySignatureForData( signerInfo.GetSignatureMemory().Span, out signerCertificate, diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampTokenInfo.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampTokenInfo.cs index f3e70b14d2a166..a1e54d08e9592e 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampTokenInfo.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/Rfc3161TimestampTokenInfo.cs @@ -312,8 +312,8 @@ private static bool TryDecode( } private static byte[] Encode( - Oid policyId, - Oid hashAlgorithmId, + Oid policyId!!, + Oid hashAlgorithmId!!, ReadOnlyMemory messageHash, ReadOnlyMemory serialNumber, DateTimeOffset timestamp, @@ -323,11 +323,6 @@ private static byte[] Encode( ReadOnlyMemory? tsaName, X509ExtensionCollection? extensions) { - if (policyId == null) - throw new ArgumentNullException(nameof(policyId)); - if (hashAlgorithmId == null) - throw new ArgumentNullException(nameof(hashAlgorithmId)); - var tstInfo = new Rfc3161TstInfo { // The only legal value as of 2017. diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignedCms.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignedCms.cs index bc38187f6edc23..b5dc24bf3f20db 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignedCms.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignedCms.cs @@ -40,10 +40,8 @@ public sealed partial class SignedCms public ContentInfo ContentInfo { get; private set; } public bool Detached { get; private set; } - public SignedCms(SubjectIdentifierType signerIdentifierType, ContentInfo contentInfo, bool detached) + public SignedCms(SubjectIdentifierType signerIdentifierType, ContentInfo contentInfo!!, bool detached) { - if (contentInfo == null) - throw new ArgumentNullException(nameof(contentInfo)); if (contentInfo.Content == null) throw new ArgumentException(SR.Format(SR.Arg_EmptyOrNullString_Named, "contentInfo.Content"), nameof(contentInfo)); @@ -158,11 +156,8 @@ public byte[] Encode() } } - public void Decode(byte[] encodedMessage) + public void Decode(byte[] encodedMessage!!) { - if (encodedMessage == null) - throw new ArgumentNullException(nameof(encodedMessage)); - Decode(new ReadOnlySpan(encodedMessage)); } @@ -298,13 +293,8 @@ internal static ReadOnlyMemory GetContent( public void ComputeSignature(CmsSigner signer) => ComputeSignature(signer, true); - public void ComputeSignature(CmsSigner signer, bool silent) + public void ComputeSignature(CmsSigner signer!!, bool silent) { - if (signer == null) - { - throw new ArgumentNullException(nameof(signer)); - } - // While it shouldn't be possible to change the length of ContentInfo.Content // after it's built, use the property at this stage, then use the saved value // (if applicable) after this point. @@ -407,11 +397,8 @@ public void RemoveSignature(int index) UpdateMetadata(); } - public void RemoveSignature(SignerInfo signerInfo) + public void RemoveSignature(SignerInfo signerInfo!!) { - if (signerInfo == null) - throw new ArgumentNullException(nameof(signerInfo)); - int idx = SignerInfos.FindIndexForSigner(signerInfo); if (idx < 0) diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfo.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfo.cs index 9c7874b451c428..d216044736fa73 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfo.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfo.cs @@ -433,11 +433,8 @@ public void RemoveCounterSignature(int index) } } - public void RemoveCounterSignature(SignerInfo counterSignerInfo) + public void RemoveCounterSignature(SignerInfo counterSignerInfo!!) { - if (counterSignerInfo == null) - throw new ArgumentNullException(nameof(counterSignerInfo)); - SignerInfoCollection docSigners = _document.SignerInfos; int index = docSigners.FindIndexForSigner(this); @@ -460,11 +457,8 @@ public void RemoveCounterSignature(SignerInfo counterSignerInfo) public void CheckSignature(bool verifySignatureOnly) => CheckSignature(new X509Certificate2Collection(), verifySignatureOnly); - public void CheckSignature(X509Certificate2Collection extraStore, bool verifySignatureOnly) + public void CheckSignature(X509Certificate2Collection extraStore!!, bool verifySignatureOnly) { - if (extraStore == null) - throw new ArgumentNullException(nameof(extraStore)); - X509Certificate2? certificate = Certificate; if (certificate == null) diff --git a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfoCollection.cs b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfoCollection.cs index 27193a75102844..fabde3dedb6a0e 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfoCollection.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/src/System/Security/Cryptography/Pkcs/SignerInfoCollection.cs @@ -51,10 +51,8 @@ public SignerInfo this[int index] public SignerInfoEnumerator GetEnumerator() => new SignerInfoEnumerator(this); IEnumerator IEnumerable.GetEnumerator() => new SignerInfoEnumerator(this); - public void CopyTo(Array array, int index) + public void CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported, nameof(array)); if (index < 0 || index >= array.Length) diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/Certificates.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/Certificates.cs index 028defaf5eafda..fb95bd9e36387d 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/Certificates.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/Certificates.cs @@ -1996,6 +1996,7 @@ private static class RawData : TlsClientServerEkuPfx_TripleDESContentEncryption; internal static readonly byte[] s_RSAKeyTransfer4_ExplicitSkiCer = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURhakNDQWxLZ0F3SUJBZ0lKQUppdWpocnpi" + "Sk9XTUEwR0NTcUdTSWIzRFFFQkN3VUFNR014Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlE" + "QXBYWVhOb2FXNW5kRzl1TVJBd0RnWURWUVFIREFkU1pXUnRiMjVrTVJJdwpFQVlEVlFRS0RBbE5h" + @@ -2020,6 +2021,7 @@ private static class RawData "ClEveU9MN2psMGFnT1dTcngwWnM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"); private static readonly byte[] s_RSAKeyTransfer4_ExplicitSkiPfx_RC2ContentEncryption = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "MIIJqQIBAzCCCW8GCSqGSIb3DQEHAaCCCWAEgglcMIIJWDCCBA8GCSqGSIb3DQEHBqCCBAAwggP8" + "AgEAMIID9QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQI2rQEBhq4HAUCAggAgIIDyEn+zCF3" + "wteqkmcbOFO7Aa2HbI8d1Dbp8M2QESYZhIZr/nX69etCuh4UewErHwwxfJYVQjhKO9NhWO4wB3UP" + @@ -2066,6 +2068,7 @@ private static class RawData "sbfisMs0Ll8CgjH2BAhMwg4eZANcOgICCAA="); private static readonly byte[] s_RSAKeyTransfer4_ExplicitSkiPfx_TripleDESContentEncryption = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "MIIJuwIBAzCCCXcGCSqGSIb3DQEHAaCCCWgEgglkMIIJYDCCBBcGCSqGSIb3DQEHBqCCBAgwggQE" + "AgEAMIID/QYJKoZIhvcNAQcBMCQGCiqGSIb3DQEMAQMwFgQQzMqKF6TLC64Jd+DF7mgQmQICB9CA" + "ggPIoCkOExBhWQ0rnLj6ZlwP9pkKhnC07NHHXBuRKQTLdZgQlchqjz6wMebmc+ZlwVQbaPvJmXMF" + @@ -2117,6 +2120,7 @@ private static class RawData : s_RSAKeyTransfer4_ExplicitSkiPfx_TripleDESContentEncryption; internal static readonly byte[] s_RSAKeyTransfer5_ExplicitSkiOfRSAKeyTransfer4Cer = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURhakNDQWxLZ0F3SUJBZ0lKQUs0cjJQai96" + "ZnF2TUEwR0NTcUdTSWIzRFFFQkN3VUFNR014Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlE" + "QXBYWVhOb2FXNW5kRzl1TVJBd0RnWURWUVFIREFkU1pXUnRiMjVrTVJJdwpFQVlEVlFRS0RBbE5h" + @@ -2141,6 +2145,7 @@ private static class RawData "CkZDUFYveUJyVm5Md0ZHR3NheFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"); private static readonly byte[] s_RSAKeyTransfer5_ExplicitSkiOfRSAKeyTransfer4Pfx_RC2ContentEncryption = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "MIIJqQIBAzCCCW8GCSqGSIb3DQEHAaCCCWAEgglcMIIJWDCCBA8GCSqGSIb3DQEHBqCCBAAwggP8" + "AgEAMIID9QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQITLms5nr095wCAggAgIIDyPyxib5c" + "oCEPC3OpfmCzzieARKf56sQZU31qlDJNDet7v1R68T7X9vu236kHOphKvqedPVNXKEPpaQXIxkSY" + @@ -2187,6 +2192,7 @@ private static class RawData "f0PE6idyhcH963CyBAiMLpuBSuzCdgICCAA="); private static readonly byte[] s_RSAKeyTransfer5_ExplicitSkiOfRSAKeyTransfer4Pfx_TripleDESContentEncryption = Convert.FromBase64String( + // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Suppression approved. Dummy certificate for testing.")] "MIIJuwIBAzCCCXcGCSqGSIb3DQEHAaCCCWgEgglkMIIJYDCCBBcGCSqGSIb3DQEHBqCCBAgwggQE" + "AgEAMIID/QYJKoZIhvcNAQcBMCQGCiqGSIb3DQEMAQMwFgQQcikkI3mNYPzp9KgATYd+sgICB9CA" + "ggPI8jMlpeNA98igwqedfn4BlSDksVxqex+KPgGDn/UYx/S5yfQMUxq2vocr3mXGBGm5B7/4v7mV" + diff --git a/src/libraries/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj b/src/libraries/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj index 7307e2d836b798..4880ca0aa094d8 100644 --- a/src/libraries/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj +++ b/src/libraries/System.Security.Cryptography.ProtectedData/src/System.Security.Cryptography.ProtectedData.csproj @@ -39,6 +39,10 @@ System.Security.Cryptography.ProtectedData + + + @@ -52,4 +56,4 @@ System.Security.Cryptography.ProtectedData - \ No newline at end of file + diff --git a/src/libraries/System.Security.Cryptography.ProtectedData/src/System/Security/Cryptography/ProtectedData.cs b/src/libraries/System.Security.Cryptography.ProtectedData/src/System/Security/Cryptography/ProtectedData.cs index d67da72075b395..61e40cdde4da18 100644 --- a/src/libraries/System.Security.Cryptography.ProtectedData/src/System/Security/Cryptography/ProtectedData.cs +++ b/src/libraries/System.Security.Cryptography.ProtectedData/src/System/Security/Cryptography/ProtectedData.cs @@ -14,19 +14,13 @@ public static partial class ProtectedData { private static readonly byte[] s_nonEmpty = new byte[1]; - public static byte[] Protect(byte[] userData, byte[]? optionalEntropy, DataProtectionScope scope) + public static byte[] Protect(byte[] userData!!, byte[]? optionalEntropy, DataProtectionScope scope) { - if (userData == null) - throw new ArgumentNullException(nameof(userData)); - return ProtectOrUnprotect(userData, optionalEntropy, scope, protect: true); } - public static byte[] Unprotect(byte[] encryptedData, byte[]? optionalEntropy, DataProtectionScope scope) + public static byte[] Unprotect(byte[] encryptedData!!, byte[]? optionalEntropy, DataProtectionScope scope) { - if (encryptedData == null) - throw new ArgumentNullException(nameof(encryptedData)); - return ProtectOrUnprotect(encryptedData, optionalEntropy, scope, protect: false); } diff --git a/src/libraries/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj b/src/libraries/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj index 6499e5c2e944d2..2155c7384eff53 100644 --- a/src/libraries/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj +++ b/src/libraries/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj @@ -76,6 +76,8 @@ + diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalXml.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalXml.cs index e55dd306cc0a50..5c9cc7e70a3ce7 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalXml.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalXml.cs @@ -17,11 +17,8 @@ internal sealed class CanonicalXml // private static string defaultXPathWithComments = "(//. | //@* | //namespace::*)"; // private static string defaultXPathWithComments = "(//. | //@* | //namespace::*)"; - internal CanonicalXml(Stream inputStream, bool includeComments, XmlResolver resolver, string strBaseUri) + internal CanonicalXml(Stream inputStream!!, bool includeComments, XmlResolver resolver, string strBaseUri) { - if (inputStream == null) - throw new ArgumentNullException(nameof(inputStream)); - _c14nDoc = new CanonicalXmlDocument(true, includeComments); _c14nDoc.XmlResolver = resolver; _c14nDoc.Load(Utils.PreProcessStreamInput(inputStream, resolver, strBaseUri)); @@ -29,22 +26,16 @@ internal CanonicalXml(Stream inputStream, bool includeComments, XmlResolver reso } internal CanonicalXml(XmlDocument document, XmlResolver resolver) : this(document, resolver, false) { } - internal CanonicalXml(XmlDocument document, XmlResolver resolver, bool includeComments) + internal CanonicalXml(XmlDocument document!!, XmlResolver resolver, bool includeComments) { - if (document == null) - throw new ArgumentNullException(nameof(document)); - _c14nDoc = new CanonicalXmlDocument(true, includeComments); _c14nDoc.XmlResolver = resolver; _c14nDoc.Load(new XmlNodeReader(document)); _ancMgr = new C14NAncestralNamespaceContextManager(); } - internal CanonicalXml(XmlNodeList nodeList, XmlResolver resolver, bool includeComments) + internal CanonicalXml(XmlNodeList nodeList!!, XmlResolver resolver, bool includeComments) { - if (nodeList == null) - throw new ArgumentNullException(nameof(nodeList)); - XmlDocument doc = Utils.GetOwnerDocument(nodeList); if (doc == null) throw new ArgumentException(nameof(nodeList)); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalizationDispatcher.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalizationDispatcher.cs index b634b00fae4d97..62b92652924afc 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalizationDispatcher.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CanonicalizationDispatcher.cs @@ -22,11 +22,8 @@ public static void Write(XmlNode node, StringBuilder strBuilder, DocPosition doc } } - public static void WriteGenericNode(XmlNode node, StringBuilder strBuilder, DocPosition docPos, AncestralNamespaceContextManager anc) + public static void WriteGenericNode(XmlNode node!!, StringBuilder strBuilder, DocPosition docPos, AncestralNamespaceContextManager anc) { - if (node == null) - throw new ArgumentNullException(nameof(node)); - XmlNodeList childNodes = node.ChildNodes; foreach (XmlNode childNode in childNodes) { @@ -46,11 +43,8 @@ public static void WriteHash(XmlNode node, HashAlgorithm hash, DocPosition docPo } } - public static void WriteHashGenericNode(XmlNode node, HashAlgorithm hash, DocPosition docPos, AncestralNamespaceContextManager anc) + public static void WriteHashGenericNode(XmlNode node!!, HashAlgorithm hash, DocPosition docPos, AncestralNamespaceContextManager anc) { - if (node == null) - throw new ArgumentNullException(nameof(node)); - XmlNodeList childNodes = node.ChildNodes; foreach (XmlNode childNode in childNodes) { diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherData.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherData.cs index 4283eed5cd3818..e03b4004a79f97 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherData.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherData.cs @@ -90,11 +90,8 @@ internal XmlElement GetXml(XmlDocument document) return cipherDataElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherReference.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherReference.cs index d8be38d6a3762f..04e7e8aaa9d8f3 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherReference.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/CipherReference.cs @@ -65,11 +65,8 @@ public override XmlElement GetXml() return referenceElement; } - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - ReferenceType = value.LocalName; string uri = Utils.GetAttribute(value, "URI", EncryptedXml.XmlEncNamespaceUrl); Uri = uri ?? throw new CryptographicException(SR.Cryptography_Xml_UriRequired); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DSAKeyValue.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DSAKeyValue.cs index 3eba3433590a95..f43b5de2c2dfbb 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DSAKeyValue.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DSAKeyValue.cs @@ -138,12 +138,8 @@ internal override XmlElement GetXml(XmlDocument xmlDocument) /// /// The XML has the incorrect schema or the DSA parameters are invalid. /// - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (value.Name != KeyValueElementName || value.NamespaceURI != SignedXml.XmlDsigNamespaceUrl) { diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DataObject.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DataObject.cs index 498c97a31b25ac..146e1ccffe21dc 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DataObject.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/DataObject.cs @@ -23,11 +23,8 @@ public DataObject() _elData = new CanonicalXmlNodeList(); } - public DataObject(string id, string mimeType, string encoding, XmlElement data) + public DataObject(string id, string mimeType, string encoding, XmlElement data!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - _id = id; _mimeType = mimeType; _encoding = encoding; @@ -131,11 +128,8 @@ internal XmlElement GetXml(XmlDocument document) return objectElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - _id = Utils.GetAttribute(value, "Id", SignedXml.XmlDsigNamespaceUrl); _mimeType = Utils.GetAttribute(value, "MimeType", SignedXml.XmlDsigNamespaceUrl); _encoding = Utils.GetAttribute(value, "Encoding", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedData.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedData.cs index 9d085a5e3c2001..56e570ff6a84ad 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedData.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedData.cs @@ -7,11 +7,8 @@ namespace System.Security.Cryptography.Xml { public sealed class EncryptedData : EncryptedType { - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); nsm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedKey.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedKey.cs index a379d78f0b9b66..d57eb24215abe3 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedKey.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedKey.cs @@ -59,11 +59,8 @@ public void AddReference(KeyReference keyReference) ReferenceList.Add(keyReference); } - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); nsm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedReference.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedReference.cs index 2e356d8df4aff0..8bbeffb18e99c9 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedReference.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedReference.cs @@ -103,11 +103,8 @@ internal XmlElement GetXml(XmlDocument document) return referenceElement; } - public virtual void LoadXml(XmlElement value) + public virtual void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - ReferenceType = value.LocalName; string uri = Utils.GetAttribute(value, "URI", EncryptedXml.XmlEncNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs index 15315fd464eda9..4ea614d17c1fac 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs @@ -178,11 +178,8 @@ public string Recipient // private methods // - private byte[] GetCipherValue(CipherData cipherData) + private byte[] GetCipherValue(CipherData cipherData!!) { - if (cipherData == null) - throw new ArgumentNullException(nameof(cipherData)); - Stream inputStream = null; if (cipherData.CipherValue != null) @@ -264,11 +261,8 @@ public virtual XmlElement GetIdElement(XmlDocument document, string idValue) } // default behaviour is to look for the IV in the CipherValue - public virtual byte[] GetDecryptionIV(EncryptedData encryptedData, string symmetricAlgorithmUri) + public virtual byte[] GetDecryptionIV(EncryptedData encryptedData!!, string symmetricAlgorithmUri) { - if (encryptedData == null) - throw new ArgumentNullException(nameof(encryptedData)); - int initBytesSize; // If the Uri is not provided by the application, try to get it from the EncryptionMethod if (symmetricAlgorithmUri == null) @@ -300,11 +294,8 @@ public virtual byte[] GetDecryptionIV(EncryptedData encryptedData, string symmet // default behaviour is to look for keys defined by an EncryptedKey clause // either directly or through a KeyInfoRetrievalMethod, and key names in the key mapping - public virtual SymmetricAlgorithm GetDecryptionKey(EncryptedData encryptedData, string symmetricAlgorithmUri) + public virtual SymmetricAlgorithm GetDecryptionKey(EncryptedData encryptedData!!, string symmetricAlgorithmUri) { - if (encryptedData == null) - throw new ArgumentNullException(nameof(encryptedData)); - if (encryptedData.KeyInfo == null) return null; IEnumerator keyInfoEnum = encryptedData.KeyInfo.GetEnumerator(); @@ -385,10 +376,8 @@ public virtual SymmetricAlgorithm GetDecryptionKey(EncryptedData encryptedData, } // Try to decrypt the EncryptedKey given the key mapping - public virtual byte[] DecryptEncryptedKey(EncryptedKey encryptedKey) + public virtual byte[] DecryptEncryptedKey(EncryptedKey encryptedKey!!) { - if (encryptedKey == null) - throw new ArgumentNullException(nameof(encryptedKey)); if (encryptedKey.KeyInfo == null) return null; @@ -504,13 +493,8 @@ public virtual byte[] DecryptEncryptedKey(EncryptedKey encryptedKey) // defines a key name mapping. Default behaviour is to require the key object // to be an RSA key or a SymmetricAlgorithm - public void AddKeyNameMapping(string keyName, object keyObject) + public void AddKeyNameMapping(string keyName!!, object keyObject!!) { - if (keyName == null) - throw new ArgumentNullException(nameof(keyName)); - if (keyObject == null) - throw new ArgumentNullException(nameof(keyObject)); - if (!(keyObject is SymmetricAlgorithm) && !(keyObject is RSA)) throw new CryptographicException(SR.Cryptography_Xml_NotSupportedCryptographicTransform); _keyNameMapping.Add(keyName, keyObject); @@ -523,13 +507,8 @@ public void ClearKeyNameMappings() // Encrypts the given element with the certificate specified. The certificate is added as // an X509Data KeyInfo to an EncryptedKey (AES session key) generated randomly. - public EncryptedData Encrypt(XmlElement inputElement, X509Certificate2 certificate) + public EncryptedData Encrypt(XmlElement inputElement!!, X509Certificate2 certificate!!) { - if (inputElement == null) - throw new ArgumentNullException(nameof(inputElement)); - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - using (RSA rsaPublicKey = certificate.GetRSAPublicKey()) { if (rsaPublicKey == null) @@ -563,13 +542,8 @@ public EncryptedData Encrypt(XmlElement inputElement, X509Certificate2 certifica // Encrypts the given element with the key name specified. A corresponding key name mapping // has to be defined before calling this method. The key name is added as // a KeyNameInfo KeyInfo to an EncryptedKey (AES session key) generated randomly. - public EncryptedData Encrypt(XmlElement inputElement, string keyName) + public EncryptedData Encrypt(XmlElement inputElement!!, string keyName!!) { - if (inputElement == null) - throw new ArgumentNullException(nameof(inputElement)); - if (keyName == null) - throw new ArgumentNullException(nameof(keyName)); - object encryptionKey = null; if (_keyNameMapping != null) encryptionKey = _keyNameMapping[keyName]; @@ -664,13 +638,8 @@ public void DecryptDocument() } // encrypts the supplied arbitrary data - public byte[] EncryptData(byte[] plaintext, SymmetricAlgorithm symmetricAlgorithm) + public byte[] EncryptData(byte[] plaintext!!, SymmetricAlgorithm symmetricAlgorithm!!) { - if (plaintext == null) - throw new ArgumentNullException(nameof(plaintext)); - if (symmetricAlgorithm == null) - throw new ArgumentNullException(nameof(symmetricAlgorithm)); - // save the original symmetric algorithm CipherMode origMode = symmetricAlgorithm.Mode; PaddingMode origPadding = symmetricAlgorithm.Padding; @@ -707,25 +676,15 @@ public byte[] EncryptData(byte[] plaintext, SymmetricAlgorithm symmetricAlgorith } // encrypts the supplied input element - public byte[] EncryptData(XmlElement inputElement, SymmetricAlgorithm symmetricAlgorithm, bool content) + public byte[] EncryptData(XmlElement inputElement!!, SymmetricAlgorithm symmetricAlgorithm!!, bool content) { - if (inputElement == null) - throw new ArgumentNullException(nameof(inputElement)); - if (symmetricAlgorithm == null) - throw new ArgumentNullException(nameof(symmetricAlgorithm)); - byte[] plainText = (content ? _encoding.GetBytes(inputElement.InnerXml) : _encoding.GetBytes(inputElement.OuterXml)); return EncryptData(plainText, symmetricAlgorithm); } // decrypts the supplied EncryptedData - public byte[] DecryptData(EncryptedData encryptedData, SymmetricAlgorithm symmetricAlgorithm) + public byte[] DecryptData(EncryptedData encryptedData!!, SymmetricAlgorithm symmetricAlgorithm!!) { - if (encryptedData == null) - throw new ArgumentNullException(nameof(encryptedData)); - if (symmetricAlgorithm == null) - throw new ArgumentNullException(nameof(symmetricAlgorithm)); - // get the cipher value and decrypt byte[] cipherValue = GetCipherValue(encryptedData.CipherData); @@ -766,13 +725,8 @@ public byte[] DecryptData(EncryptedData encryptedData, SymmetricAlgorithm symmet } // This method replaces an EncryptedData element with the decrypted sequence of bytes - public void ReplaceData(XmlElement inputElement, byte[] decryptedData) + public void ReplaceData(XmlElement inputElement!!, byte[] decryptedData!!) { - if (inputElement == null) - throw new ArgumentNullException(nameof(inputElement)); - if (decryptedData == null) - throw new ArgumentNullException(nameof(decryptedData)); - XmlNode parent = inputElement.ParentNode; if (parent.NodeType == XmlNodeType.Document) { @@ -836,13 +790,8 @@ public void ReplaceData(XmlElement inputElement, byte[] decryptedData) // // replaces the inputElement with the provided EncryptedData - public static void ReplaceElement(XmlElement inputElement, EncryptedData encryptedData, bool content) + public static void ReplaceElement(XmlElement inputElement!!, EncryptedData encryptedData!!, bool content) { - if (inputElement == null) - throw new ArgumentNullException(nameof(inputElement)); - if (encryptedData == null) - throw new ArgumentNullException(nameof(encryptedData)); - // First, get the XML representation of the EncryptedData object XmlElement elemED = encryptedData.GetXml(inputElement.OwnerDocument); switch (content) @@ -862,13 +811,8 @@ public static void ReplaceElement(XmlElement inputElement, EncryptedData encrypt } // wraps the supplied input key data using the provided symmetric algorithm - public static byte[] EncryptKey(byte[] keyData, SymmetricAlgorithm symmetricAlgorithm) + public static byte[] EncryptKey(byte[] keyData!!, SymmetricAlgorithm symmetricAlgorithm!!) { - if (keyData == null) - throw new ArgumentNullException(nameof(keyData)); - if (symmetricAlgorithm == null) - throw new ArgumentNullException(nameof(symmetricAlgorithm)); - if (symmetricAlgorithm is TripleDES) { // CMS Triple DES Key Wrap @@ -888,13 +832,8 @@ public static byte[] EncryptKey(byte[] keyData, SymmetricAlgorithm symmetricAlgo // encrypts the supplied input key data using an RSA key and specifies whether we want to use OAEP // padding or PKCS#1 v1.5 padding as described in the PKCS specification - public static byte[] EncryptKey(byte[] keyData, RSA rsa, bool useOAEP) + public static byte[] EncryptKey(byte[] keyData!!, RSA rsa!!, bool useOAEP) { - if (keyData == null) - throw new ArgumentNullException(nameof(keyData)); - if (rsa == null) - throw new ArgumentNullException(nameof(rsa)); - if (useOAEP) { RSAOAEPKeyExchangeFormatter rsaFormatter = new RSAOAEPKeyExchangeFormatter(rsa); @@ -908,13 +847,8 @@ public static byte[] EncryptKey(byte[] keyData, RSA rsa, bool useOAEP) } // decrypts the supplied wrapped key using the provided symmetric algorithm - public static byte[] DecryptKey(byte[] keyData, SymmetricAlgorithm symmetricAlgorithm) + public static byte[] DecryptKey(byte[] keyData!!, SymmetricAlgorithm symmetricAlgorithm!!) { - if (keyData == null) - throw new ArgumentNullException(nameof(keyData)); - if (symmetricAlgorithm == null) - throw new ArgumentNullException(nameof(symmetricAlgorithm)); - if (symmetricAlgorithm is TripleDES) { // CMS Triple DES Key Wrap @@ -933,13 +867,8 @@ public static byte[] DecryptKey(byte[] keyData, SymmetricAlgorithm symmetricAlgo // decrypts the supplied data using an RSA key and specifies whether we want to use OAEP // padding or PKCS#1 v1.5 padding as described in the PKCS specification - public static byte[] DecryptKey(byte[] keyData, RSA rsa, bool useOAEP) + public static byte[] DecryptKey(byte[] keyData!!, RSA rsa!!, bool useOAEP) { - if (keyData == null) - throw new ArgumentNullException(nameof(keyData)); - if (rsa == null) - throw new ArgumentNullException(nameof(rsa)); - if (useOAEP) { RSAOAEPKeyExchangeDeformatter rsaDeformatter = new RSAOAEPKeyExchangeDeformatter(rsa); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionMethod.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionMethod.cs index 215b5697720900..ee19948e7b7773 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionMethod.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionMethod.cs @@ -77,11 +77,8 @@ internal XmlElement GetXml(XmlDocument document) return encryptionMethodElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionProperty.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionProperty.cs index d2f901609718f0..e7e0c6131025c6 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionProperty.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptionProperty.cs @@ -15,10 +15,8 @@ public sealed class EncryptionProperty // We are being lax here as per the spec public EncryptionProperty() { } - public EncryptionProperty(XmlElement elementProperty) + public EncryptionProperty(XmlElement elementProperty!!) { - if (elementProperty == null) - throw new ArgumentNullException(nameof(elementProperty)); if (elementProperty.LocalName != "EncryptionProperty" || elementProperty.NamespaceURI != EncryptedXml.XmlEncNamespaceUrl) throw new CryptographicException(SR.Cryptography_Xml_InvalidEncryptionProperty); @@ -73,10 +71,8 @@ internal XmlElement GetXml(XmlDocument document) return document.ImportNode(_elemProp, true) as XmlElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); if (value.LocalName != "EncryptionProperty" || value.NamespaceURI != EncryptedXml.XmlEncNamespaceUrl) throw new CryptographicException(SR.Cryptography_Xml_InvalidEncryptionProperty); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ExcCanonicalXml.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ExcCanonicalXml.cs index 90dde6370104c0..723109d4214dee 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ExcCanonicalXml.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ExcCanonicalXml.cs @@ -12,33 +12,24 @@ internal sealed class ExcCanonicalXml private readonly CanonicalXmlDocument _c14nDoc; private readonly ExcAncestralNamespaceContextManager _ancMgr; - internal ExcCanonicalXml(Stream inputStream, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver, string strBaseUri) + internal ExcCanonicalXml(Stream inputStream!!, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver, string strBaseUri) { - if (inputStream == null) - throw new ArgumentNullException(nameof(inputStream)); - _c14nDoc = new CanonicalXmlDocument(true, includeComments); _c14nDoc.XmlResolver = resolver; _c14nDoc.Load(Utils.PreProcessStreamInput(inputStream, resolver, strBaseUri)); _ancMgr = new ExcAncestralNamespaceContextManager(inclusiveNamespacesPrefixList); } - internal ExcCanonicalXml(XmlDocument document, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver) + internal ExcCanonicalXml(XmlDocument document!!, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver) { - if (document == null) - throw new ArgumentNullException(nameof(document)); - _c14nDoc = new CanonicalXmlDocument(true, includeComments); _c14nDoc.XmlResolver = resolver; _c14nDoc.Load(new XmlNodeReader(document)); _ancMgr = new ExcAncestralNamespaceContextManager(inclusiveNamespacesPrefixList); } - internal ExcCanonicalXml(XmlNodeList nodeList, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver) + internal ExcCanonicalXml(XmlNodeList nodeList!!, bool includeComments, string inclusiveNamespacesPrefixList, XmlResolver resolver) { - if (nodeList == null) - throw new ArgumentNullException(nameof(nodeList)); - XmlDocument doc = Utils.GetOwnerDocument(nodeList); if (doc == null) throw new ArgumentException(nameof(nodeList)); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfo.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfo.cs index e69d101f1f907e..e50050440597b3 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfo.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfo.cs @@ -58,11 +58,8 @@ internal XmlElement GetXml(XmlDocument xmlDocument) return keyInfoElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlElement keyInfoElement = value; _id = Utils.GetAttribute(keyInfoElement, "Id", SignedXml.XmlDsigNamespaceUrl); if (!Utils.VerifyAttributes(keyInfoElement, "Id")) diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoName.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoName.cs index 47ed8746223438..217e3532f85967 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoName.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoName.cs @@ -48,10 +48,8 @@ internal override XmlElement GetXml(XmlDocument xmlDocument) return nameElement; } - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); XmlElement nameElement = value; _keyName = nameElement.InnerText.Trim(); } diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoRetrievalMethod.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoRetrievalMethod.cs index 05af3036e01677..64fbea25761a54 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoRetrievalMethod.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoRetrievalMethod.cs @@ -63,11 +63,8 @@ internal override XmlElement GetXml(XmlDocument xmlDocument) return retrievalMethodElement; } - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - _uri = Utils.GetAttribute(value, "URI", SignedXml.XmlDsigNamespaceUrl); _type = Utils.GetAttribute(value, "Type", SignedXml.XmlDsigNamespaceUrl); } diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoX509Data.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoX509Data.cs index 545c42499cb856..5271eb57a3d662 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoX509Data.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/KeyInfoX509Data.cs @@ -39,11 +39,8 @@ public KeyInfoX509Data(X509Certificate cert) AddCertificate(cert); } - public KeyInfoX509Data(X509Certificate cert, X509IncludeOption includeOption) + public KeyInfoX509Data(X509Certificate cert!!, X509IncludeOption includeOption) { - if (cert == null) - throw new ArgumentNullException(nameof(cert)); - X509Certificate2 certificate = new X509Certificate2(cert); X509ChainElementCollection elements; X509Chain chain; @@ -100,11 +97,8 @@ public ArrayList Certificates get { return _certificates; } } - public void AddCertificate(X509Certificate certificate) + public void AddCertificate(X509Certificate certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (_certificates == null) _certificates = new ArrayList(); @@ -262,11 +256,8 @@ internal override XmlElement GetXml(XmlDocument xmlDocument) return x509DataElement; } - public override void LoadXml(XmlElement element) + public override void LoadXml(XmlElement element!!) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - XmlNamespaceManager nsm = new XmlNamespaceManager(element.OwnerDocument.NameTable); nsm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/RSAKeyValue.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/RSAKeyValue.cs index a0e8bd941c6fd0..45817f9184ebce 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/RSAKeyValue.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/RSAKeyValue.cs @@ -93,12 +93,8 @@ internal override XmlElement GetXml(XmlDocument xmlDocument) /// /// The XML has the incorrect schema or the RSA parameters are invalid. /// - public override void LoadXml(XmlElement value) + public override void LoadXml(XmlElement value!!) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } if (value.LocalName != KeyValueElementName || value.NamespaceURI != SignedXml.XmlDsigNamespaceUrl) { diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs index 581e8dc21afbda..3c19d1537dc23e 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Reference.cs @@ -205,11 +205,8 @@ internal XmlElement GetXml(XmlDocument document) return referenceElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - _id = Utils.GetAttribute(value, "Id", SignedXml.XmlDsigNamespaceUrl); _uri = Utils.GetAttribute(value, "URI", SignedXml.XmlDsigNamespaceUrl); _type = Utils.GetAttribute(value, "Type", SignedXml.XmlDsigNamespaceUrl); @@ -314,11 +311,8 @@ public void LoadXml(XmlElement value) _cachedXml = value; } - public void AddTransform(Transform transform) + public void AddTransform(Transform transform!!) { - if (transform == null) - throw new ArgumentNullException(nameof(transform)); - transform.Reference = this; TransformChain.Add(transform); } diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ReferenceList.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ReferenceList.cs index 263c789ae27551..6c4dc63a443179 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ReferenceList.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/ReferenceList.cs @@ -24,11 +24,8 @@ public int Count get { return _references.Count; } } - public int Add(object value) + public int Add(object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SR.Cryptography_Xml_IncorrectObjectType, nameof(value)); @@ -50,11 +47,8 @@ public int IndexOf(object value) return _references.IndexOf(value); } - public void Insert(int index, object value) + public void Insert(int index, object value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SR.Cryptography_Xml_IncorrectObjectType, nameof(value)); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Signature.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Signature.cs index f60c078778ccf3..7d97d7bf88d052 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Signature.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Signature.cs @@ -133,12 +133,8 @@ internal XmlElement GetXml(XmlDocument document) return signatureElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - // Make sure we don't get passed null - if (value == null) - throw new ArgumentNullException(nameof(value)); - // Signature XmlElement signatureElement = value; if (!signatureElement.LocalName.Equals("Signature")) diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedInfo.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedInfo.cs index fa61cdc33f864e..91ae7009eddffe 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedInfo.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedInfo.cs @@ -197,11 +197,8 @@ internal XmlElement GetXml(XmlDocument document) return signedInfoElement; } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - // SignedInfo XmlElement signedInfoElement = value; if (!signedInfoElement.LocalName.Equals("SignedInfo")) @@ -274,11 +271,8 @@ public void LoadXml(XmlElement value) _cachedXml = signedInfoElement; } - public void AddReference(Reference reference) + public void AddReference(Reference reference!!) { - if (reference == null) - throw new ArgumentNullException(nameof(reference)); - reference.SignedXml = SignedXml; _references.Add(reference); } diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs index fbedd3a907cdd9..48b75deec69584 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/SignedXml.cs @@ -90,17 +90,13 @@ public SignedXml() Initialize(null); } - public SignedXml(XmlDocument document) + public SignedXml(XmlDocument document!!) { - if (document == null) - throw new ArgumentNullException(nameof(document)); Initialize(document.DocumentElement); } - public SignedXml(XmlElement elem) + public SignedXml(XmlElement elem!!) { - if (elem == null) - throw new ArgumentNullException(nameof(elem)); Initialize(elem); } @@ -211,11 +207,8 @@ public XmlElement GetXml() return m_signature.GetXml(); } - public void LoadXml(XmlElement value) + public void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - m_signature.LoadXml(value); if (_context == null) @@ -418,11 +411,8 @@ public void ComputeSignature() m_signature.SignatureValue = asymmetricSignatureFormatter.CreateSignature(hashAlg); } - public void ComputeSignature(KeyedHashAlgorithm macAlg) + public void ComputeSignature(KeyedHashAlgorithm macAlg!!) { - if (macAlg == null) - throw new ArgumentNullException(nameof(macAlg)); - HMAC hash = macAlg as HMAC; if (hash == null) throw new CryptographicException(SR.Cryptography_Xml_SignatureMethodKeyMismatch); @@ -991,11 +981,8 @@ private bool CheckSignatureFormat() return formatValid; } - private bool CheckSignedInfo(AsymmetricAlgorithm key) + private bool CheckSignedInfo(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - SignedXmlDebugLog.LogBeginCheckSignedInfo(this, m_signature.SignedInfo); SignatureDescription signatureDescription = CryptoHelpers.CreateFromName(SignatureMethod); @@ -1023,11 +1010,8 @@ private bool CheckSignedInfo(AsymmetricAlgorithm key) return asymmetricSignatureDeformatter.VerifySignature(hashval, m_signature.SignatureValue); } - private bool CheckSignedInfo(KeyedHashAlgorithm macAlg) + private bool CheckSignedInfo(KeyedHashAlgorithm macAlg!!) { - if (macAlg == null) - throw new ArgumentNullException(nameof(macAlg)); - SignedXmlDebugLog.LogBeginCheckSignedInfo(this, m_signature.SignedInfo); int signatureLength; diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/TransformChain.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/TransformChain.cs index b9bdf2401f8373..2b208fda41a54e 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/TransformChain.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/TransformChain.cs @@ -176,11 +176,8 @@ internal XmlElement GetXml(XmlDocument document, string ns) return transformsElement; } - internal void LoadXml(XmlElement value) + internal void LoadXml(XmlElement value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Utils.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Utils.cs index 2bbc23cc66612e..a3b766792701b6 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Utils.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/Utils.cs @@ -31,21 +31,15 @@ private static bool HasNamespace(XmlElement element, string prefix, string value } // A helper function that determines if a namespace node is a committed attribute - internal static bool IsCommittedNamespace(XmlElement element, string prefix, string value) + internal static bool IsCommittedNamespace(XmlElement element!!, string prefix, string value) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - string name = ((prefix.Length > 0) ? "xmlns:" + prefix : "xmlns"); if (element.HasAttribute(name) && element.GetAttribute(name) == value) return true; return false; } - internal static bool IsRedundantNamespace(XmlElement element, string prefix, string value) + internal static bool IsRedundantNamespace(XmlElement element!!, string prefix, string value) { - if (element == null) - throw new ArgumentNullException(nameof(element)); - XmlNode ancestorNode = ((XmlNode)element).ParentNode; while (ancestorNode != null) { @@ -196,11 +190,8 @@ internal static XmlReaderSettings GetSecureXmlReaderSettings(XmlResolver xmlReso return settings; } - internal static XmlDocument PreProcessDocumentInput(XmlDocument document, XmlResolver xmlResolver, string baseUri) + internal static XmlDocument PreProcessDocumentInput(XmlDocument document!!, XmlResolver xmlResolver, string baseUri) { - if (document == null) - throw new ArgumentNullException(nameof(document)); - MyXmlDocument doc = new MyXmlDocument(); doc.PreserveWhitespace = document.PreserveWhitespace; @@ -218,11 +209,8 @@ internal static XmlDocument PreProcessDocumentInput(XmlDocument document, XmlRes return doc; } - internal static XmlDocument PreProcessElementInput(XmlElement elem, XmlResolver xmlResolver, string baseUri) + internal static XmlDocument PreProcessElementInput(XmlElement elem!!, XmlResolver xmlResolver, string baseUri) { - if (elem == null) - throw new ArgumentNullException(nameof(elem)); - MyXmlDocument doc = new MyXmlDocument(); doc.PreserveWhitespace = true; // Normalize the document diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDecryptionTransform.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDecryptionTransform.cs index 9c7f1ff3682cbb..e7a4a6beab2cb5 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDecryptionTransform.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDecryptionTransform.cs @@ -76,10 +76,8 @@ public override Type[] OutputTypes get { return _outputTypes; } } - public void AddExceptUri(string uri) + public void AddExceptUri(string uri!!) { - if (uri == null) - throw new ArgumentNullException(nameof(uri)); ExceptUris.Add(uri); } @@ -157,10 +155,8 @@ private void LoadStreamInput(Stream stream) _encryptedDataList = document.SelectNodes("//enc:EncryptedData", _nsm); } - private void LoadXmlDocumentInput(XmlDocument document) + private void LoadXmlDocumentInput(XmlDocument document!!) { - if (document == null) - throw new ArgumentNullException(nameof(document)); _containingDocument = document; _nsm = new XmlNamespaceManager(document.NameTable); _nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDsigEnvelopedSignatureTransform.cs b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDsigEnvelopedSignatureTransform.cs index d4be6ffa73f0f6..2fac6deb654884 100644 --- a/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDsigEnvelopedSignatureTransform.cs +++ b/src/libraries/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/XmlDsigEnvelopedSignatureTransform.cs @@ -89,11 +89,8 @@ private void LoadStreamInput(Stream stream) _nsm.AddNamespace("dsig", SignedXml.XmlDsigNamespaceUrl); } - private void LoadXmlNodeListInput(XmlNodeList nodeList) + private void LoadXmlNodeListInput(XmlNodeList nodeList!!) { - // Empty node list is not acceptable - if (nodeList == null) - throw new ArgumentNullException(nameof(nodeList)); _containingDocument = Utils.GetOwnerDocument(nodeList); if (_containingDocument == null) throw new CryptographicException(SR.Cryptography_Xml_EnvelopedSignatureRequiresContext); @@ -103,10 +100,8 @@ private void LoadXmlNodeListInput(XmlNodeList nodeList) _inputNodeList = nodeList; } - private void LoadXmlDocumentInput(XmlDocument doc) + private void LoadXmlDocumentInput(XmlDocument doc!!) { - if (doc == null) - throw new ArgumentNullException(nameof(doc)); _containingDocument = doc; _nsm = new XmlNamespaceManager(_containingDocument.NameTable); _nsm.AddNamespace("dsig", SignedXml.XmlDsigNamespaceUrl); diff --git a/src/libraries/System.Security.Cryptography/src/Microsoft/Win32/SafeHandles/NCryptSafeHandles.cs b/src/libraries/System.Security.Cryptography/src/Microsoft/Win32/SafeHandles/NCryptSafeHandles.cs index 9808e723e2a0bc..aa79115fd978ab 100644 --- a/src/libraries/System.Security.Cryptography/src/Microsoft/Win32/SafeHandles/NCryptSafeHandles.cs +++ b/src/libraries/System.Security.Cryptography/src/Microsoft/Win32/SafeHandles/NCryptSafeHandles.cs @@ -72,11 +72,9 @@ protected SafeNCryptHandle() : base(true) } [SupportedOSPlatform("windows")] - protected SafeNCryptHandle(IntPtr handle, SafeHandle parentHandle) + protected SafeNCryptHandle(IntPtr handle, SafeHandle parentHandle!!) : base(true) { - if (parentHandle == null) - throw new ArgumentNullException(nameof(parentHandle)); if (parentHandle.IsClosed || parentHandle.IsInvalid) throw new ArgumentException(SR.Argument_Invalid_SafeHandleInvalidOrClosed, nameof(parentHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System.Security.Cryptography.csproj b/src/libraries/System.Security.Cryptography/src/System.Security.Cryptography.csproj index 073513a0de966d..b503389947d916 100644 --- a/src/libraries/System.Security.Cryptography/src/System.Security.Cryptography.csproj +++ b/src/libraries/System.Security.Cryptography/src/System.Security.Cryptography.csproj @@ -20,6 +20,8 @@ + - @@ -1721,6 +1722,7 @@ + diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AeadCommon.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AeadCommon.cs deleted file mode 100644 index d2e9320e3e87f4..00000000000000 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AeadCommon.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Internal.Cryptography; - -namespace System.Security.Cryptography -{ - internal static partial class AeadCommon - { - public static void CheckArgumentsForNull( - byte[] nonce, - byte[] plaintext, - byte[] ciphertext, - byte[] tag) - { - if (nonce == null) - throw new ArgumentNullException(nameof(nonce)); - - if (plaintext == null) - throw new ArgumentNullException(nameof(plaintext)); - - if (ciphertext == null) - throw new ArgumentNullException(nameof(ciphertext)); - - if (tag == null) - throw new ArgumentNullException(nameof(tag)); - } - } -} diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCcm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCcm.cs index de01bd16773e7f..98b49e12766d82 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCcm.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCcm.cs @@ -26,16 +26,14 @@ public AesCcm(byte[] key) { ThrowIfNotSupported(); - if (key == null) - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(key); AesAEAD.CheckKeySize(key.Length); ImportKey(key); } - public void Encrypt(byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[]? associatedData = null) + public void Encrypt(byte[] nonce!!, byte[] plaintext!!, byte[] ciphertext!!, byte[] tag!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Encrypt((ReadOnlySpan)nonce, plaintext, ciphertext, tag, associatedData); } @@ -50,9 +48,8 @@ public void Encrypt( EncryptCore(nonce, plaintext, ciphertext, tag, associatedData); } - public void Decrypt(byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[]? associatedData = null) + public void Decrypt(byte[] nonce!!, byte[] ciphertext!!, byte[] tag!!, byte[] plaintext!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Decrypt((ReadOnlySpan)nonce, ciphertext, tag, plaintext, associatedData); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCng.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCng.Windows.cs index 19046e7bdf3287..970b1a1b137468 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCng.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesCng.Windows.cs @@ -103,16 +103,16 @@ protected override bool TryDecryptEcbCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: null, + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv: default, encrypting: false, paddingMode, CipherMode.ECB, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -122,16 +122,16 @@ protected override bool TryEncryptEcbCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: null, + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv: default, encrypting: true, paddingMode, CipherMode.ECB, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } @@ -142,16 +142,16 @@ protected override bool TryEncryptCbcCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: true, paddingMode, CipherMode.CBC, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } @@ -162,16 +162,16 @@ protected override bool TryDecryptCbcCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: false, paddingMode, CipherMode.CBC, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -183,16 +183,16 @@ protected override bool TryDecryptCfbCore( int feedbackSizeInBits, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: false, paddingMode, CipherMode.CFB, feedbackSizeInBits); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -204,16 +204,16 @@ protected override bool TryEncryptCfbCore( int feedbackSizeInBits, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: true, paddingMode, CipherMode.CFB, feedbackSizeInBits); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesGcm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesGcm.cs index c4ae2cc689a34e..3dca06a54f5124 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesGcm.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesGcm.cs @@ -27,16 +27,14 @@ public AesGcm(byte[] key) { ThrowIfNotSupported(); - if (key == null) - throw new ArgumentNullException(nameof(key)); + ArgumentNullException.ThrowIfNull(key); AesAEAD.CheckKeySize(key.Length); ImportKey(key); } - public void Encrypt(byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[]? associatedData = null) + public void Encrypt(byte[] nonce!!, byte[] plaintext!!, byte[] ciphertext!!, byte[] tag!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Encrypt((ReadOnlySpan)nonce, plaintext, ciphertext, tag, associatedData); } @@ -51,9 +49,8 @@ public void Encrypt( EncryptCore(nonce, plaintext, ciphertext, tag, associatedData); } - public void Decrypt(byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[]? associatedData = null) + public void Decrypt(byte[] nonce!!, byte[] ciphertext!!, byte[] tag!!, byte[] plaintext!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Decrypt((ReadOnlySpan)nonce, ciphertext, tag, plaintext, associatedData); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesImplementation.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesImplementation.cs index 9b413892203448..98c0bf9f4d6b04 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesImplementation.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AesImplementation.cs @@ -178,13 +178,10 @@ protected override bool TryEncryptCfbCore( } } - private ICryptoTransform CreateTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting) + private ICryptoTransform CreateTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting) { // note: rbgIV is guaranteed to be cloned before this method, so no need to clone it again - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - long keySize = rgbKey.Length * (long)BitsPerByte; if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(this.LegalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedData.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedData.cs index 0a1555d698c9d8..d914da039ad1f8 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedData.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedData.cs @@ -32,10 +32,8 @@ public AsnEncodedData(ReadOnlySpan rawData) Reset(null, rawData); } - public AsnEncodedData(AsnEncodedData asnEncodedData) + public AsnEncodedData(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); Reset(asnEncodedData._oid, asnEncodedData._rawData); } @@ -96,16 +94,13 @@ public byte[] RawData [MemberNotNull(nameof(_rawData))] set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); _rawData = value.CloneByteArray(); } } - public virtual void CopyFrom(AsnEncodedData asnEncodedData) + public virtual void CopyFrom(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); Reset(asnEncodedData._oid, asnEncodedData._rawData); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedDataCollection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedDataCollection.cs index a726efe6850430..396fc8447e35be 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedDataCollection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsnEncodedDataCollection.cs @@ -21,20 +21,15 @@ public AsnEncodedDataCollection(AsnEncodedData asnEncodedData) _list.Add(asnEncodedData); } - public int Add(AsnEncodedData asnEncodedData) + public int Add(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); - int indexOfNewItem = _list.Count; _list.Add(asnEncodedData); return indexOfNewItem; } - public void Remove(AsnEncodedData asnEncodedData) + public void Remove(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); _list.Remove(asnEncodedData); } @@ -64,10 +59,8 @@ IEnumerator IEnumerable.GetEnumerator() return GetEnumerator(); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) @@ -82,13 +75,11 @@ void ICollection.CopyTo(Array array, int index) } } - public void CopyTo(AsnEncodedData[] array, int index) + public void CopyTo(AsnEncodedData[] array!!, int index) { // Need to do part of the argument validation ourselves as AsnEncodedDataCollection throws // ArgumentOutOfRangeException where List<>.CopyTo() throws ArgumentException. - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || index >= array.Length) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureDeformatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureDeformatter.cs index 2cd815e66dec61..a47c6d8dca0e94 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureDeformatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureDeformatter.cs @@ -12,11 +12,8 @@ protected AsymmetricSignatureDeformatter() { } public abstract void SetKey(AsymmetricAlgorithm key); public abstract void SetHashAlgorithm(string strName); - public virtual bool VerifySignature(HashAlgorithm hash, byte[] rgbSignature) + public virtual bool VerifySignature(HashAlgorithm hash!!, byte[] rgbSignature) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - SetHashAlgorithm(hash.ToAlgorithmName()!); Debug.Assert(hash.Hash != null); return VerifySignature(hash.Hash, rgbSignature); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureFormatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureFormatter.cs index 4fd2bd0869004e..1b3dbca3950153 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureFormatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/AsymmetricSignatureFormatter.cs @@ -12,11 +12,8 @@ protected AsymmetricSignatureFormatter() { } public abstract void SetKey(AsymmetricAlgorithm key); public abstract void SetHashAlgorithm(string strName); - public virtual byte[] CreateSignature(HashAlgorithm hash) + public virtual byte[] CreateSignature(HashAlgorithm hash!!) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - SetHashAlgorithm(hash.ToAlgorithmName()!); Debug.Assert(hash.Hash != null); return CreateSignature(hash.Hash); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherLiteNCrypt.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherLiteNCrypt.cs new file mode 100644 index 00000000000000..3eb41f07400952 --- /dev/null +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherLiteNCrypt.cs @@ -0,0 +1,165 @@ +// 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.Diagnostics; +using System.Runtime.InteropServices; +using System.Text; +using Internal.Cryptography; +using Internal.NativeCrypto; +using Microsoft.Win32.SafeHandles; + +using ErrorCode = Interop.NCrypt.ErrorCode; +using AsymmetricPaddingMode = Interop.NCrypt.AsymmetricPaddingMode; + +namespace System.Security.Cryptography +{ + internal sealed class BasicSymmetricCipherLiteNCrypt : ILiteSymmetricCipher + { + private static readonly CngProperty s_ECBMode = + new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_ECB + "\0"), CngPropertyOptions.None); + private static readonly CngProperty s_CBCMode = + new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_CBC + "\0"), CngPropertyOptions.None); + private static readonly CngProperty s_CFBMode = + new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_CFB + "\0"), CngPropertyOptions.None); + + private readonly bool _encrypting; + private CngKey _key; + + public int BlockSizeInBytes { get; } + public int PaddingSizeInBytes { get; } + + public BasicSymmetricCipherLiteNCrypt( + Func cngKeyFactory, + CipherMode cipherMode, + int blockSizeInBytes, + ReadOnlySpan iv, + bool encrypting, + int paddingSizeInBytes) + { + BlockSizeInBytes = blockSizeInBytes; + PaddingSizeInBytes = paddingSizeInBytes; + _encrypting = encrypting; + _key = cngKeyFactory(); + CngProperty chainingModeProperty = cipherMode switch + { + CipherMode.ECB => s_ECBMode, + CipherMode.CBC => s_CBCMode, + CipherMode.CFB => s_CFBMode, + _ => throw new CryptographicException(SR.Cryptography_InvalidCipherMode), + }; + _key.SetProperty(chainingModeProperty); + + Reset(iv); + } + + public int Transform(ReadOnlySpan input, Span output) + { + Debug.Assert(input.Length > 0); + Debug.Assert((input.Length % PaddingSizeInBytes) == 0); + + int numBytesWritten = 0; + + // NCryptEncrypt and NCryptDecrypt can do in place encryption, but if the buffers overlap + // the offset must be zero. In that case, we need to copy to a temporary location. + if (input.Overlaps(output, out int offset) && offset != 0) + { + byte[] rented = CryptoPool.Rent(output.Length); + + try + { + numBytesWritten = NCryptTransform(input, rented); + rented.AsSpan(0, numBytesWritten).CopyTo(output); + } + finally + { + CryptoPool.Return(rented, clearSize: numBytesWritten); + } + } + else + { + numBytesWritten = NCryptTransform(input, output); + } + + if (numBytesWritten != input.Length) + { + // CNG gives us no way to tell NCryptDecrypt() that we're decrypting the final block, nor is it performing any + // padding /depadding for us. So there's no excuse for a provider to hold back output for "future calls." Though + // this isn't technically our problem to detect, we might as well detect it now for easier diagnosis. + throw new CryptographicException(SR.Cryptography_UnexpectedTransformTruncation); + } + + return numBytesWritten; + + int NCryptTransform(ReadOnlySpan input, Span output) + { + int bytesWritten; + + // The Handle property duplicates the handle. + using (SafeNCryptKeyHandle keyHandle = _key.Handle) + { + unsafe + { + ErrorCode errorCode = _encrypting ? + Interop.NCrypt.NCryptEncrypt(keyHandle, input, input.Length, null, output, output.Length, out bytesWritten, AsymmetricPaddingMode.None) : + Interop.NCrypt.NCryptDecrypt(keyHandle, input, input.Length, null, output, output.Length, out bytesWritten, AsymmetricPaddingMode.None); + + if (errorCode != ErrorCode.ERROR_SUCCESS) + { + throw errorCode.ToCryptographicException(); + } + } + } + + return bytesWritten; + } + } + + public unsafe void Reset(ReadOnlySpan iv) + { + if (!iv.IsEmpty) + { + fixed (byte* pIv = &MemoryMarshal.GetReference(iv)) + { + // The Handle property duplicates the handle. + using (SafeNCryptKeyHandle keyHandle = _key.Handle) + { + ErrorCode errorCode = Interop.NCrypt.NCryptSetProperty( + keyHandle, + KeyPropertyName.InitializationVector, + pIv, + iv.Length, + CngPropertyOptions.None); + + if (errorCode != ErrorCode.ERROR_SUCCESS) + { + throw errorCode.ToCryptographicException(); + } + } + } + } + } + + public int TransformFinal(ReadOnlySpan input, Span output) + { + Debug.Assert((input.Length % PaddingSizeInBytes) == 0); + + int numBytesWritten = 0; + + if (input.Length != 0) + { + numBytesWritten = Transform(input, output); + Debug.Assert(numBytesWritten == input.Length); // Our implementation of Transform() guarantees this. See comment above. + } + + return numBytesWritten; + } + + public void Dispose() + { + _key?.Dispose(); + _key = null!; + } + + } +} diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherNCrypt.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherNCrypt.cs index ffe1c8fa13e674..90c1f49b20175d 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherNCrypt.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/BasicSymmetricCipherNCrypt.cs @@ -1,99 +1,41 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Text; using Internal.Cryptography; -using Internal.NativeCrypto; -using Microsoft.Win32.SafeHandles; - -using ErrorCode = Interop.NCrypt.ErrorCode; -using AsymmetricPaddingMode = Interop.NCrypt.AsymmetricPaddingMode; namespace System.Security.Cryptography { internal sealed class BasicSymmetricCipherNCrypt : BasicSymmetricCipher { + private BasicSymmetricCipherLiteNCrypt _cipher; + // // The first parameter is a delegate that instantiates a CngKey rather than a CngKey itself. That's because CngKeys are stateful objects // and concurrent encryptions on the same CngKey will corrupt each other. // // The delegate must instantiate a new CngKey, based on a new underlying NCryptKeyHandle, each time is called. // - public BasicSymmetricCipherNCrypt(Func cngKeyFactory, CipherMode cipherMode, int blockSizeInBytes, byte[]? iv, bool encrypting, int paddingSize) - : base(iv, blockSizeInBytes, paddingSize) + public BasicSymmetricCipherNCrypt(Func cngKeyFactory, CipherMode cipherMode, int blockSizeInBytes, byte[]? iv, bool encrypting, int paddingSizeInBytes) + : base(iv, blockSizeInBytes, paddingSizeInBytes) { - _encrypting = encrypting; - _cngKey = cngKeyFactory(); - CngProperty chainingModeProperty = cipherMode switch - { - CipherMode.ECB => s_ECBMode, - CipherMode.CBC => s_CBCMode, - CipherMode.CFB => s_CFBMode, - _ => throw new CryptographicException(SR.Cryptography_InvalidCipherMode), - }; - _cngKey.SetProperty(chainingModeProperty); - - Reset(); + _cipher = new BasicSymmetricCipherLiteNCrypt(cngKeyFactory, cipherMode, blockSizeInBytes, iv, encrypting, paddingSizeInBytes); } - public sealed override int Transform(ReadOnlySpan input, Span output) - { - Debug.Assert(input.Length > 0); - Debug.Assert((input.Length % PaddingSizeInBytes) == 0); - - int numBytesWritten; - ErrorCode errorCode; - using (SafeNCryptKeyHandle keyHandle = _cngKey!.Handle) - { - unsafe - { - errorCode = _encrypting ? - Interop.NCrypt.NCryptEncrypt(keyHandle, input, input.Length, null, output, output.Length, out numBytesWritten, AsymmetricPaddingMode.None) : - Interop.NCrypt.NCryptDecrypt(keyHandle, input, input.Length, null, output, output.Length, out numBytesWritten, AsymmetricPaddingMode.None); - } - } - if (errorCode != ErrorCode.ERROR_SUCCESS) - { - throw errorCode.ToCryptographicException(); - } - - if (numBytesWritten != input.Length) - { - // CNG gives us no way to tell NCryptDecrypt() that we're decrypting the final block, nor is it performing any padding/depadding for us. - // So there's no excuse for a provider to hold back output for "future calls." Though this isn't technically our problem to detect, we might as well - // detect it now for easier diagnosis. - throw new CryptographicException(SR.Cryptography_UnexpectedTransformTruncation); - } - - return numBytesWritten; - } + public sealed override int Transform(ReadOnlySpan input, Span output) => _cipher.Transform(input, output); public sealed override int TransformFinal(ReadOnlySpan input, Span output) { - Debug.Assert((input.Length % PaddingSizeInBytes) == 0); - - int numBytesWritten = 0; - - if (input.Length != 0) - { - numBytesWritten = Transform(input, output); - Debug.Assert(numBytesWritten == input.Length); // Our implementation of Transform() guarantees this. See comment above. - } - + int written = _cipher.TransformFinal(input, output); Reset(); - return numBytesWritten; + return written; } protected sealed override void Dispose(bool disposing) { if (disposing) { - if (_cngKey != null) - { - _cngKey.Dispose(); - _cngKey = null!; - } + _cipher?.Dispose(); + _cipher = null!; } base.Dispose(disposing); @@ -101,21 +43,10 @@ protected sealed override void Dispose(bool disposing) private void Reset() { - if (IV != null) + if (IV is not null) { - CngProperty prop = new CngProperty(KeyPropertyName.InitializationVector, IV, CngPropertyOptions.None); - _cngKey!.SetProperty(prop); + _cipher.Reset(IV); } } - - private CngKey _cngKey; - private readonly bool _encrypting; - - private static readonly CngProperty s_ECBMode = - new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_ECB + "\0"), CngPropertyOptions.None); - private static readonly CngProperty s_CBCMode = - new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_CBC + "\0"), CngPropertyOptions.None); - private static readonly CngProperty s_CFBMode = - new CngProperty(KeyPropertyName.ChainingMode, Encoding.Unicode.GetBytes(Cng.BCRYPT_CHAIN_MODE_CFB + "\0"), CngPropertyOptions.None); } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Unix.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Unix.cs index 8fcf4603e95789..5b94f72103120f 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Unix.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Unix.cs @@ -18,11 +18,8 @@ internal static partial class CapiHelper private const string OID_SHA512 = "2.16.840.1.101.3.4.2.3"; // For backwards compat with CapiHelper.ObjToHashAlgorithm, use "hashAlg" as name - internal static HashAlgorithmName ObjToHashAlgorithmName(object hashAlg) + internal static HashAlgorithmName ObjToHashAlgorithmName(object hashAlg!!) { - if (hashAlg == null) - throw new ArgumentNullException(nameof(hashAlg)); - HashAlgorithmName? name = null; if (hashAlg is string) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Windows.cs index 591470ad24e922..358cb2101828b0 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CapiHelper.Windows.cs @@ -87,7 +87,7 @@ internal static string GetDefaultProvider(int dwType) throw GetErrorCode().ToCryptographicException(); } //allocate memory for the provider name - StringBuilder providerName = new StringBuilder((int)sizeofProviderName); + char[] providerName = new char[sizeofProviderName]; //Now call the function CryptGetDefaultProvider again to get the name of the provider if (!Interop.Advapi32.CryptGetDefaultProvider(dwType, IntPtr.Zero, @@ -98,7 +98,7 @@ internal static string GetDefaultProvider(int dwType) } // check to see if there are upgrades available for the requested CSP - string providerNameString = providerName.ToString(); + string providerNameString = new string(providerName.AsSpan().Slice(0, providerName.AsSpan().IndexOf('\0'))); string? wszUpgrade = null; if (dwType == (int)ProviderType.PROV_RSA_FULL) { @@ -1048,11 +1048,8 @@ public static int NameOrOidToHashAlgId(string? nameOrOid, OidGroup oidGroup) /// /// Helper for signing and verifications that accept a string/Type/HashAlgorithm to specify a hashing algorithm. /// - public static int ObjToHashAlgId(object hashAlg) + public static int ObjToHashAlgId(object hashAlg!!) { - if (hashAlg == null) - throw new ArgumentNullException(nameof(hashAlg)); - string? hashAlgString = hashAlg as string; if (hashAlgString != null) { diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ChaCha20Poly1305.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ChaCha20Poly1305.cs index e08762d0bfb642..3ec803bcba92fe 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ChaCha20Poly1305.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ChaCha20Poly1305.cs @@ -27,13 +27,10 @@ public ChaCha20Poly1305(ReadOnlySpan key) ImportKey(key); } - public ChaCha20Poly1305(byte[] key) + public ChaCha20Poly1305(byte[] key!!) { ThrowIfNotSupported(); - if (key == null) - throw new ArgumentNullException(nameof(key)); - CheckKeySize(key.Length); ImportKey(key); } @@ -46,9 +43,8 @@ private static void CheckKeySize(int keySizeInBytes) } } - public void Encrypt(byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[]? associatedData = null) + public void Encrypt(byte[] nonce!!, byte[] plaintext!!, byte[] ciphertext!!, byte[] tag!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Encrypt((ReadOnlySpan)nonce, plaintext, ciphertext, tag, associatedData); } @@ -63,9 +59,8 @@ public void Encrypt( EncryptCore(nonce, plaintext, ciphertext, tag, associatedData); } - public void Decrypt(byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[]? associatedData = null) + public void Decrypt(byte[] nonce!!, byte[] ciphertext!!, byte[] tag!!, byte[] plaintext!!, byte[]? associatedData = null) { - AeadCommon.CheckArgumentsForNull(nonce, plaintext, ciphertext, tag); Decrypt((ReadOnlySpan)nonce, ciphertext, tag, plaintext, associatedData); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Create.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Create.cs index a8ee97a859d692..f60cd54f9ac1a1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Create.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Create.cs @@ -32,11 +32,8 @@ public static CngKey Create(CngAlgorithm algorithm, string? keyName) } [SupportedOSPlatform("windows")] - public static CngKey Create(CngAlgorithm algorithm, string? keyName, CngKeyCreationParameters? creationParameters) + public static CngKey Create(CngAlgorithm algorithm!!, string? keyName, CngKeyCreationParameters? creationParameters) { - if (algorithm == null) - throw new ArgumentNullException(nameof(algorithm)); - if (creationParameters == null) creationParameters = new CngKeyCreationParameters(); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Exists.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Exists.cs index ff1ba4a7c83380..34980a84e07385 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Exists.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Exists.cs @@ -32,14 +32,8 @@ public static bool Exists(string keyName, CngProvider provider) } [SupportedOSPlatform("windows")] - public static bool Exists(string keyName, CngProvider provider, CngKeyOpenOptions options) + public static bool Exists(string keyName!!, CngProvider provider!!, CngKeyOpenOptions options) { - if (keyName == null) - throw new ArgumentNullException(nameof(keyName)); - - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - using (SafeNCryptProviderHandle providerHandle = provider.OpenStorageProvider()) { SafeNCryptKeyHandle? keyHandle = null; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Export.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Export.cs index 272b6708efeb9c..5bb45c5dab5a5c 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Export.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Export.cs @@ -18,11 +18,8 @@ public sealed partial class CngKey : IDisposable /// /// Export the key out of the KSP /// - public byte[] Export(CngKeyBlobFormat format) + public byte[] Export(CngKeyBlobFormat format!!) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - int numBytesNeeded; ErrorCode errorCode = Interop.NCrypt.NCryptExportKey(_keyHandle, IntPtr.Zero, format.Format, IntPtr.Zero, null, 0, out numBytesNeeded, 0); if (errorCode != ErrorCode.ERROR_SUCCESS) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Import.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Import.cs index 4a7e64000cbd92..9a7cc942199c9d 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Import.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Import.cs @@ -102,28 +102,20 @@ ref MemoryMarshal.GetReference(keyBlob), } internal static CngKey Import( - byte[] keyBlob, + byte[] keyBlob!!, string? curveName, CngKeyBlobFormat format, CngProvider provider) { - if (keyBlob == null) - throw new ArgumentNullException(nameof(keyBlob)); - return Import(new ReadOnlySpan(keyBlob), curveName, format, provider); } internal static CngKey Import( ReadOnlySpan keyBlob, string? curveName, - CngKeyBlobFormat format, - CngProvider provider) + CngKeyBlobFormat format!!, + CngProvider provider!!) { - if (format == null) - throw new ArgumentNullException(nameof(format)); - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - SafeNCryptProviderHandle providerHandle = provider.OpenStorageProvider(); SafeNCryptKeyHandle? keyHandle; ErrorCode errorCode; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Open.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Open.cs index 4f6344baf2a514..b2933879c8a5f1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Open.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Open.cs @@ -32,13 +32,8 @@ public static CngKey Open(string keyName, CngProvider provider) } [SupportedOSPlatform("windows")] - public static CngKey Open(string keyName, CngProvider provider, CngKeyOpenOptions openOptions) + public static CngKey Open(string keyName!!, CngProvider provider!!, CngKeyOpenOptions openOptions) { - if (keyName == null) - throw new ArgumentNullException(nameof(keyName)); - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - SafeNCryptProviderHandle providerHandle = provider.OpenStorageProvider(); SafeNCryptKeyHandle keyHandle; ErrorCode errorCode = Interop.NCrypt.NCryptOpenKey(providerHandle, out keyHandle, keyName, 0, openOptions); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.OpenHandle.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.OpenHandle.cs index 51a70f8d9468b1..968e94627adc8b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.OpenHandle.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.OpenHandle.cs @@ -15,10 +15,8 @@ public sealed partial class CngKey : IDisposable /// Wrap an existing key handle with a CngKey object /// [SupportedOSPlatform("windows")] - public static CngKey Open(SafeNCryptKeyHandle keyHandle, CngKeyHandleOpenOptions keyHandleOpenOptions) + public static CngKey Open(SafeNCryptKeyHandle keyHandle!!, CngKeyHandleOpenOptions keyHandleOpenOptions) { - if (keyHandle == null) - throw new ArgumentNullException(nameof(keyHandle)); if (keyHandle.IsClosed || keyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(keyHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Properties.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Properties.cs index 4507c0fccf48f6..d20f7fe9522f2e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Properties.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKey.Properties.cs @@ -15,11 +15,8 @@ public sealed partial class CngKey : IDisposable /// /// Get the value of an arbitrary property /// - public CngProperty GetProperty(string name, CngPropertyOptions options) + public CngProperty GetProperty(string name!!, CngPropertyOptions options) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - byte[]? value = _keyHandle.GetProperty(name, options); if (value == null) throw ErrorCode.NTE_NOT_FOUND.ToCryptographicException(); @@ -33,11 +30,8 @@ public CngProperty GetProperty(string name, CngPropertyOptions options) /// /// Determine if a property exists on the key /// - public bool HasProperty(string name, CngPropertyOptions options) + public bool HasProperty(string name!!, CngPropertyOptions options) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - unsafe { ErrorCode errorCode = Interop.NCrypt.NCryptGetProperty(_keyHandle, name, null, 0, out _, options); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyCreationParameters.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyCreationParameters.cs index 7c5e16c6219e66..ad742335f7ae66 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyCreationParameters.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngKeyCreationParameters.cs @@ -55,9 +55,7 @@ public CngProvider Provider set { - if (value == null) - throw new ArgumentNullException(nameof(value)); - + ArgumentNullException.ThrowIfNull(value); _provider = value; } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngProperty.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngProperty.cs index 329c581d765152..83f4dcf7dbe508 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngProperty.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngProperty.cs @@ -16,12 +16,9 @@ namespace System.Security.Cryptography [StructLayout(LayoutKind.Sequential)] // The [StructLayout] is here to prevent a spurious ApiReviewer alert. We do not actually depend on the layout of this struct. public struct CngProperty : IEquatable { - public CngProperty(string name, byte[]? value, CngPropertyOptions options) + public CngProperty(string name!!, byte[]? value, CngPropertyOptions options) : this() { - if (name == null) - throw new ArgumentNullException(nameof(name)); - Name = name; Options = options; _lazyHashCode = default(int?); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngSymmetricAlgorithmCore.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngSymmetricAlgorithmCore.cs index 654a06a95e5588..f13e177426eb11 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngSymmetricAlgorithmCore.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CngSymmetricAlgorithmCore.cs @@ -27,13 +27,8 @@ public CngSymmetricAlgorithmCore(ICngSymmetricAlgorithm outer) /// /// Constructs the core to use a stored CNG key. /// - public CngSymmetricAlgorithmCore(ICngSymmetricAlgorithm outer, string keyName, CngProvider provider, CngKeyOpenOptions openOptions) + public CngSymmetricAlgorithmCore(ICngSymmetricAlgorithm outer, string keyName!!, CngProvider provider!!, CngKeyOpenOptions openOptions) { - if (keyName == null) - throw new ArgumentNullException(nameof(keyName)); - if (provider == null) - throw new ArgumentNullException(nameof(provider)); - _outer = outer; _keyName = keyName; @@ -128,39 +123,56 @@ private ICryptoTransform CreateCryptoTransform(bool encrypting) return CreatePersistedCryptoTransformCore(ProduceCngKey, _outer.IV, encrypting, _outer.Padding, _outer.Mode, _outer.FeedbackSize); } - public UniversalCryptoTransform CreateCryptoTransform(byte[]? iv, bool encrypting, PaddingMode padding, CipherMode mode, int feedbackSizeInBits) + public ILiteSymmetricCipher CreateLiteSymmetricCipher(ReadOnlySpan iv, bool encrypting, PaddingMode padding, CipherMode mode, int feedbackSizeInBits) { if (KeyInPlainText) { - return CreateCryptoTransform(_outer.BaseKey, iv, encrypting, padding, mode, feedbackSizeInBits); + return CreateLiteSymmetricCipher(_outer.BaseKey, iv, encrypting, padding, mode, feedbackSizeInBits); } - return CreatePersistedCryptoTransformCore(ProduceCngKey, iv, encrypting, padding, mode, feedbackSizeInBits); + return CreatePersistedLiteSymmetricCipher(ProduceCngKey, iv, encrypting, padding, mode, feedbackSizeInBits); } - private UniversalCryptoTransform CreateCryptoTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting, PaddingMode padding, CipherMode mode, int feedbackSizeInBits) + private ILiteSymmetricCipher CreateLiteSymmetricCipher( + ReadOnlySpan key, + ReadOnlySpan iv, + bool encrypting, + PaddingMode padding, + CipherMode mode, + int feedbackSizeInBits) { - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - ValidateFeedbackSize(mode, feedbackSizeInBits); - byte[] key = rgbKey.CloneByteArray(); - - long keySize = key.Length * (long)BitsPerByte; - if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(_outer.LegalKeySizes)) + if (!iv.IsEmpty && iv.Length != AsymmetricAlgorithmHelpers.BitsToBytes(_outer.BlockSize)) { - throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); + throw new ArgumentException(SR.Cryptography_InvalidIVSize, nameof(iv)); } - if (_outer.IsWeakKey(key)) + if (mode.UsesIv() && iv.IsEmpty) { - throw new CryptographicException( - SR.Format( - SR.Cryptography_InvalidKey_Weak, - _outer.GetNCryptAlgorithmIdentifier())); + throw new CryptographicException(SR.Cryptography_MissingIV); } + byte[] processedKey = CopyAndValidateKey(key); + int blockSizeInBytes = AsymmetricAlgorithmHelpers.BitsToBytes(_outer.BlockSize); + SafeAlgorithmHandle algorithmModeHandle = _outer.GetEphemeralModeHandle(mode, feedbackSizeInBits); + + return new BasicSymmetricCipherLiteBCrypt( + algorithmModeHandle, + mode, + blockSizeInBytes, + _outer.GetPaddingSize(mode, feedbackSizeInBits), + processedKey, + ownsParentHandle: false, + iv, + encrypting); + } + + private UniversalCryptoTransform CreateCryptoTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting, PaddingMode padding, CipherMode mode, int feedbackSizeInBits) + { + ValidateFeedbackSize(mode, feedbackSizeInBits); + byte[] key = CopyAndValidateKey(rgbKey); + if (rgbIV != null && rgbIV.Length != AsymmetricAlgorithmHelpers.BitsToBytes(_outer.BlockSize)) { throw new ArgumentException(SR.Cryptography_InvalidIVSize, nameof(rgbIV)); @@ -170,8 +182,6 @@ private UniversalCryptoTransform CreateCryptoTransform(byte[] rgbKey, byte[]? rg // is correct, and detached from the input parameter. byte[]? iv = mode.GetCipherIv(rgbIV).CloneByteArray(); - key = _outer.PreprocessKey(key); - return CreateEphemeralCryptoTransformCore(key, iv, encrypting, padding, mode, feedbackSizeInBits); } @@ -193,6 +203,27 @@ private UniversalCryptoTransform CreateEphemeralCryptoTransformCore(byte[] key, return UniversalCryptoTransform.Create(padding, cipher, encrypting); } + private ILiteSymmetricCipher CreatePersistedLiteSymmetricCipher( + Func cngKeyFactory, + ReadOnlySpan iv, + bool encrypting, + PaddingMode padding, + CipherMode mode, + int feedbackSizeInBits) + { + ValidateFeedbackSize(mode, feedbackSizeInBits); + Debug.Assert(mode == CipherMode.CFB ? feedbackSizeInBits == 8 : true); + int blockSizeInBytes = AsymmetricAlgorithmHelpers.BitsToBytes(_outer.BlockSize); + + return new BasicSymmetricCipherLiteNCrypt( + cngKeyFactory, + mode, + blockSizeInBytes, + iv, + encrypting, + _outer.GetPaddingSize(mode, feedbackSizeInBits)); + } + private UniversalCryptoTransform CreatePersistedCryptoTransformCore(Func cngKeyFactory, byte[]? iv, bool encrypting, PaddingMode padding, CipherMode mode, int feedbackSizeInBits) { // note: iv is guaranteed to be cloned before this method, so no need to clone it again @@ -243,6 +274,27 @@ private void ValidateFeedbackSize(CipherMode mode, int feedbackSizeInBits) } } + private byte[] CopyAndValidateKey(ReadOnlySpan rgbKey) + { + long keySize = rgbKey.Length * (long)BitsPerByte; + if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(_outer.LegalKeySizes)) + { + throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); + } + + byte[] key = rgbKey.ToArray(); + + if (_outer.IsWeakKey(key)) + { + throw new CryptographicException( + SR.Format( + SR.Cryptography_InvalidKey_Weak, + _outer.GetNCryptAlgorithmIdentifier())); + } + + return _outer.PreprocessKey(key); + } + private readonly ICngSymmetricAlgorithm _outer; // If using a stored CNG key, these fields provide the CngKey.Open() parameters. If using a plaintext key, _keyName is set to null. diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoConfig.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoConfig.cs index e03c5e3756dc18..1f05cf20b8331f 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoConfig.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoConfig.cs @@ -306,12 +306,10 @@ public static void AddAlgorithm(Type algorithm, params string[] names) #if BROWSER throw new PlatformNotSupportedException(SR.SystemSecurityCryptography_PlatformNotSupported); #else - if (algorithm == null) - throw new ArgumentNullException(nameof(algorithm)); + ArgumentNullException.ThrowIfNull(algorithm); if (!algorithm.IsVisible) throw new ArgumentException(SR.Cryptography_AlgorithmTypesMustBeVisible, nameof(algorithm)); - if (names == null) - throw new ArgumentNullException(nameof(names)); + ArgumentNullException.ThrowIfNull(names); string[] algorithmNames = new string[names.Length]; Array.Copy(names, algorithmNames, algorithmNames.Length); @@ -335,11 +333,8 @@ public static void AddAlgorithm(Type algorithm, params string[] names) } [RequiresUnreferencedCode("The default algorithm implementations might be removed, use strong type references like 'RSA.Create()' instead.")] - public static object? CreateFromName(string name, params object?[]? args) + public static object? CreateFromName(string name!!, params object?[]? args) { - if (name == null) - throw new ArgumentNullException(nameof(name)); - #if BROWSER switch (name) { @@ -494,10 +489,8 @@ public static void AddOID(string oid, params string[] names) #if BROWSER throw new PlatformNotSupportedException(SR.SystemSecurityCryptography_PlatformNotSupported); #else - if (oid == null) - throw new ArgumentNullException(nameof(oid)); - if (names == null) - throw new ArgumentNullException(nameof(names)); + ArgumentNullException.ThrowIfNull(oid); + ArgumentNullException.ThrowIfNull(names); string[] oidNames = new string[names.Length]; Array.Copy(names, oidNames, oidNames.Length); @@ -526,8 +519,7 @@ public static void AddOID(string oid, params string[] names) #if BROWSER throw new PlatformNotSupportedException(SR.SystemSecurityCryptography_PlatformNotSupported); #else - if (name == null) - throw new ArgumentNullException(nameof(name)); + ArgumentNullException.ThrowIfNull(name); appOidHT.TryGetValue(name, out string? oidName); @@ -552,8 +544,7 @@ public static byte[] EncodeOID(string str) #if BROWSER throw new PlatformNotSupportedException(SR.SystemSecurityCryptography_PlatformNotSupported); #else - if (str == null) - throw new ArgumentNullException(nameof(str)); + ArgumentNullException.ThrowIfNull(str); string[] oidString = str.Split('.'); // valid ASN.1 separator uint[] oidNums = new uint[oidString.Length]; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoStream.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoStream.cs index e3cb8b85b3bdaf..25678e56ac838a 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoStream.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/CryptoStream.cs @@ -35,13 +35,8 @@ public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode { } - public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode, bool leaveOpen) + public CryptoStream(Stream stream, ICryptoTransform transform!!, CryptoStreamMode mode, bool leaveOpen) { - if (transform is null) - { - throw new ArgumentNullException(nameof(transform)); - } - _stream = stream; _transform = transform; _leaveOpen = leaveOpen; @@ -719,11 +714,8 @@ private async Task CopyToAsyncInternal(Stream destination, int bufferSize, Cance ArrayPool.Shared.Return(rentedBuffer); } - private void CheckCopyToArguments(Stream destination, int bufferSize) + private void CheckCopyToArguments(Stream destination!!, int bufferSize) { - if (destination is null) - throw new ArgumentNullException(nameof(destination)); - EnsureNotDisposed(destination, nameof(destination)); if (!destination.CanWrite) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DES.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DES.cs index ebf918c65a4410..9784a0f7225499 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DES.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DES.cs @@ -47,8 +47,7 @@ public override byte[] Key } set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (!(value.Length * 8).IsLegalSize(s_legalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DESCryptoServiceProvider.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DESCryptoServiceProvider.Windows.cs index 3dd55e352f74a1..8b1415ba8289f5 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DESCryptoServiceProvider.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DESCryptoServiceProvider.Windows.cs @@ -60,13 +60,10 @@ public override ICryptoTransform CreateEncryptor(byte[] rgbKey, byte[]? rgbIV) } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA5351", Justification = "This is the implementation of DES")] - private ICryptoTransform CreateTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting) + private ICryptoTransform CreateTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting) { // note: rgbIV is guaranteed to be cloned before this method, so no need to clone it again - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - long keySize = rgbKey.Length * (long)BitsPerByte; if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(LegalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.Android.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.Android.cs index 7dff1107e8dc80..b4d76655dcbe7b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.Android.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.Android.cs @@ -10,4 +10,4 @@ private static DSA CreateCore() return new DSAImplementation.DSAAndroid(); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.NotSupported.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.NotSupported.cs index c9421b066260ab..2dc4fa228bff6c 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.NotSupported.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.Create.NotSupported.cs @@ -12,4 +12,4 @@ private static DSA CreateCore() throw new PlatformNotSupportedException(); } } -} \ No newline at end of file +} diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.cs index 0990807ceed7ad..707a62213ef532 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSA.cs @@ -95,10 +95,8 @@ protected virtual byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) throw DerivedClassMustOverride(); } - public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + public byte[] SignData(byte[] data!!, HashAlgorithmName hashAlgorithm) { - if (data == null) - throw new ArgumentNullException(nameof(data)); // hashAlgorithm is verified in the overload return SignData(data, 0, data.Length, hashAlgorithm); @@ -125,9 +123,8 @@ public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) /// /// An error occurred in the hashing or signing operation. /// - public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) + public byte[] SignData(byte[] data!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -135,9 +132,8 @@ public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, DSASignatur return SignDataCore(data, hashAlgorithm, signatureFormat); } - public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) + public virtual byte[] SignData(byte[] data!!, int offset, int count, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); if (offset < 0 || offset > data.Length) throw new ArgumentOutOfRangeException(nameof(offset)); if (count < 0 || count > data.Length - offset) @@ -185,13 +181,12 @@ public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithm /// An error occurred in the hashing or signing operation. /// public byte[] SignData( - byte[] data, + byte[] data!!, int offset, int count, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); if (offset < 0 || offset > data.Length) throw new ArgumentOutOfRangeException(nameof(offset)); if (count < 0 || count > data.Length - offset) @@ -234,9 +229,8 @@ protected virtual byte[] SignDataCore( return AsymmetricAlgorithmHelpers.ConvertFromIeeeP1363Signature(sig, signatureFormat); } - public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm) + public virtual byte[] SignData(Stream data!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); byte[] hash = HashData(data, hashAlgorithm); @@ -264,9 +258,8 @@ public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm) /// /// An error occurred in the hashing or signing operation. /// - public byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) + public byte[] SignData(Stream data!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -292,13 +285,8 @@ protected virtual byte[] SignDataCore(Stream data, HashAlgorithmName hashAlgorit return CreateSignatureCore(hash, signatureFormat); } - public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm) + public bool VerifyData(byte[] data!!, byte[] signature, HashAlgorithmName hashAlgorithm) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - return VerifyData(data, 0, data.Length, signature, hashAlgorithm); } @@ -374,10 +362,8 @@ public bool VerifyData( return VerifyDataCore(new ReadOnlySpan(data, offset, count), signature, hashAlgorithm, signatureFormat); } - public virtual bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm) + public virtual bool VerifyData(Stream data!!, byte[] signature!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); byte[] hash = HashData(data, hashAlgorithm); @@ -401,10 +387,8 @@ public virtual bool VerifyData(Stream data, byte[] signature, HashAlgorithmName /// /// An error occurred in the signing operation. /// - public byte[] CreateSignature(byte[] rgbHash, DSASignatureFormat signatureFormat) + public byte[] CreateSignature(byte[] rgbHash!!, DSASignatureFormat signatureFormat) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -641,13 +625,11 @@ public virtual bool VerifyData( /// An error occurred in the hashing or verification operation. /// public bool VerifyData( - byte[] data, - byte[] signature, + byte[] data!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -678,13 +660,11 @@ public bool VerifyData( /// An error occurred in the hashing or verification operation. /// public bool VerifyData( - Stream data, - byte[] signature, + Stream data!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -787,12 +767,8 @@ protected virtual bool VerifyDataCore( /// /// An error occurred in the verification operation. /// - public bool VerifySignature(byte[] rgbHash, byte[] rgbSignature, DSASignatureFormat signatureFormat) + public bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!, DSASignatureFormat signatureFormat) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -906,13 +882,10 @@ private static Exception DerivedClassMustOverride() => public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -930,13 +903,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACng.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACng.cs index 4bdd219dfb8f64..b158cd76619e06 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACng.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACng.cs @@ -20,11 +20,8 @@ public sealed partial class DSACng : DSA /// if is not an DSA key /// if is null. [SupportedOSPlatform("windows")] - public DSACng(CngKey key) + public DSACng(CngKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (key.AlgorithmGroup != CngAlgorithmGroup.Dsa) throw new ArgumentException(SR.Cryptography_ArgDSARequiresDSAKey, nameof(key)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Unix.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Unix.cs index 252f93272e783f..9a62c5f90f6aaa 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Unix.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Unix.cs @@ -226,10 +226,8 @@ public override bool TrySignData(ReadOnlySpan data, Span destination } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA5351", Justification = "This is the implementation of DSACryptoServiceProvider")] - public byte[] SignHash(byte[] rgbHash, string str) + public byte[] SignHash(byte[] rgbHash!!, string str) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (PublicOnly) throw new CryptographicException(SR.Cryptography_CSP_NoPrivateKey); if (rgbHash.Length != SHA1_HASHSIZE) @@ -245,13 +243,8 @@ public byte[] SignHash(byte[] rgbHash, string str) public bool VerifyData(byte[] rgbData, byte[] rgbSignature) => _impl.VerifyData(rgbData, rgbSignature, HashAlgorithmName.SHA1); - public bool VerifyHash(byte[] rgbHash, string str, byte[] rgbSignature) + public bool VerifyHash(byte[] rgbHash!!, string str, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); - // For compat with Windows, no check for rgbHash.Length != SHA1_HASHSIZE // Only SHA1 allowed; the default value is SHA1 @@ -297,11 +290,8 @@ public override bool VerifySignature(ReadOnlySpan hash, ReadOnlySpan /// /// Find whether a DSS key blob is public. /// - private static bool IsPublic(byte[] keyBlob) + private static bool IsPublic(byte[] keyBlob!!) { - if (keyBlob == null) - throw new ArgumentNullException(nameof(keyBlob)); - // The CAPI DSS public key representation consists of the following sequence: // - BLOBHEADER (the first byte is bType) // - DSSPUBKEY or DSSPUBKEY_VER3 (the first field is the magic field) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Windows.cs index 99525802e1ebd6..afbfb5500c7b0e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSACryptoServiceProvider.Windows.cs @@ -478,10 +478,8 @@ protected override byte[] HashData(Stream data, HashAlgorithmName hashAlgorithm) /// The hash value of the data to be signed. /// The name of the hash algorithm used to create the hash value of the data. /// The DSA signature for the specified hash value. - public byte[] SignHash(byte[] rgbHash, string? str) + public byte[] SignHash(byte[] rgbHash!!, string? str) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (PublicOnly) throw new CryptographicException(SR.Cryptography_CSP_NoPrivateKey); @@ -506,13 +504,8 @@ public byte[] SignHash(byte[] rgbHash, string? str) /// The name of the hash algorithm used to create the hash value of the data. /// The signature data to be verified. /// true if the signature verifies as valid; otherwise, false. - public bool VerifyHash(byte[] rgbHash, string? str, byte[] rgbSignature) + public bool VerifyHash(byte[] rgbHash!!, string? str, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); - int calgHash = CapiHelper.NameOrOidToHashAlgId(str, OidGroup.HashAlgorithm); return CapiHelper.VerifySign( @@ -527,13 +520,8 @@ public bool VerifyHash(byte[] rgbHash, string? str, byte[] rgbSignature) /// /// Find whether a DSS key blob is public. /// - private static bool IsPublic(byte[] keyBlob) + private static bool IsPublic(byte[] keyBlob!!) { - if (keyBlob == null) - { - throw new ArgumentNullException(nameof(keyBlob)); - } - // The CAPI DSS public key representation consists of the following sequence: // - BLOBHEADER (the first byte is bType) // - DSSPUBKEY or DSSPUBKEY_VER3 (the first field is the magic field) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSAOpenSsl.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSAOpenSsl.cs index 6847a0a1f56a75..add003a1273889 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSAOpenSsl.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSAOpenSsl.cs @@ -36,10 +36,8 @@ public DSAOpenSsl(DSAParameters parameters) [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] [UnsupportedOSPlatform("windows")] - public DSAOpenSsl(SafeEvpPKeyHandle pkeyHandle) + public DSAOpenSsl(SafeEvpPKeyHandle pkeyHandle!!) { - if (pkeyHandle == null) - throw new ArgumentNullException(nameof(pkeyHandle)); if (pkeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(pkeyHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureDeformatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureDeformatter.cs index 8bc3023057a26a..7843f4e7505918 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureDeformatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureDeformatter.cs @@ -9,19 +9,13 @@ public class DSASignatureDeformatter : AsymmetricSignatureDeformatter public DSASignatureDeformatter() { } - public DSASignatureDeformatter(AsymmetricAlgorithm key) : this() + public DSASignatureDeformatter(AsymmetricAlgorithm key!!) : this() { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _dsaKey = (DSA)key; } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _dsaKey = (DSA)key; } @@ -34,12 +28,8 @@ public override void SetHashAlgorithm(string strName) } } - public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) + public override bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); if (_dsaKey == null) throw new CryptographicUnexpectedOperationException(SR.Cryptography_FormatterMissingKey); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureFormatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureFormatter.cs index 9e2a9ef0aa376a..80575403ac50ff 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureFormatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DSASignatureFormatter.cs @@ -9,19 +9,13 @@ public class DSASignatureFormatter : AsymmetricSignatureFormatter public DSASignatureFormatter() { } - public DSASignatureFormatter(AsymmetricAlgorithm key) : this() + public DSASignatureFormatter(AsymmetricAlgorithm key!!) : this() { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _dsaKey = (DSA)key; } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _dsaKey = (DSA)key; } @@ -34,10 +28,8 @@ public override void SetHashAlgorithm(string strName) } } - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (_dsaKey == null) throw new CryptographicUnexpectedOperationException(SR.Cryptography_FormatterMissingKey); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DesImplementation.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DesImplementation.cs index d22e7d79725f7c..dd73c5d6f57970 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DesImplementation.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/DesImplementation.cs @@ -47,13 +47,10 @@ public sealed override void GenerateKey() KeyValue = key; } - private ICryptoTransform CreateTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting) + private ICryptoTransform CreateTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting) { // note: rgbIV is guaranteed to be cloned before this method, so no need to clone it again - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - long keySize = rgbKey.Length * (long)BitsPerByte; if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(LegalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECAlgorithm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECAlgorithm.cs index d5c34e18d9fb01..3926fa6adbcaa2 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECAlgorithm.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECAlgorithm.cs @@ -121,13 +121,10 @@ public virtual void GenerateKey(ECCurve curve) /// public override unsafe bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters is null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, @@ -194,13 +191,10 @@ public override unsafe bool TryExportEncryptedPkcs8PrivateKey( /// public override unsafe bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECCurve.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECCurve.cs index 5876e483bcb6de..d5d17cdc2c1468 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECCurve.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECCurve.cs @@ -75,8 +75,7 @@ public Oid Oid get => _oid; private set { - if (value == null) - throw new ArgumentNullException(nameof(Oid)); + ArgumentNullException.ThrowIfNull(value, nameof(Oid)); if (string.IsNullOrEmpty(value.Value) && string.IsNullOrEmpty(value.FriendlyName)) throw new ArgumentException(SR.Format(SR.Cryptography_InvalidCurveOid, value.Value)); @@ -103,12 +102,8 @@ public static ECCurve CreateFromOid(Oid curveOid) /// /// The Oid friendly name to use. /// An ECCurve representing a named curve. - public static ECCurve CreateFromFriendlyName(string oidFriendlyName) + public static ECCurve CreateFromFriendlyName(string oidFriendlyName!!) { - if (oidFriendlyName == null) - { - throw new ArgumentNullException(nameof(oidFriendlyName)); - } return ECCurve.CreateFromValueAndName(null, oidFriendlyName); } @@ -117,12 +112,8 @@ public static ECCurve CreateFromFriendlyName(string oidFriendlyName) /// /// The Oid value to use. /// An ECCurve representing a named curve. - public static ECCurve CreateFromValue(string oidValue) + public static ECCurve CreateFromValue(string oidValue!!) { - if (oidValue == null) - { - throw new ArgumentNullException(nameof(oidValue)); - } return ECCurve.CreateFromValueAndName(oidValue, null); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellman.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellman.cs index c0bfb6f798953d..7040290e496c87 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellman.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellman.cs @@ -32,13 +32,8 @@ public override string? SignatureAlgorithm public static partial ECDiffieHellman Create(ECParameters parameters); [RequiresUnreferencedCode(CryptoConfig.CreateFromNameUnreferencedCodeMessage)] - public static new ECDiffieHellman? Create(string algorithm) + public static new ECDiffieHellman? Create(string algorithm!!) { - if (algorithm == null) - { - throw new ArgumentNullException(nameof(algorithm)); - } - return CryptoConfig.CreateFromName(algorithm) as ECDiffieHellman; } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Derive.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Derive.cs index deca9cfd932eeb..84082e23bb507e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Derive.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Derive.cs @@ -8,11 +8,8 @@ namespace System.Security.Cryptography { public sealed partial class ECDiffieHellmanCng : ECDiffieHellman { - public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey) + public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPublicKey!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (otherPartyPublicKey is ECDiffieHellmanCngPublicKey otherKey) { using (CngKey import = otherKey.Import()) @@ -40,10 +37,8 @@ public override byte[] DeriveKeyMaterial(ECDiffieHellmanPublicKey otherPartyPubl } } - public byte[] DeriveKeyMaterial(CngKey otherPartyPublicKey) + public byte[] DeriveKeyMaterial(CngKey otherPartyPublicKey!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); if (otherPartyPublicKey.AlgorithmGroup != CngAlgorithmGroup.ECDiffieHellman) throw new ArgumentException(SR.Cryptography_ArgECDHRequiresECDHKey, nameof(otherPartyPublicKey)); if (otherPartyPublicKey.KeySize != KeySize) @@ -96,11 +91,8 @@ public byte[] DeriveKeyMaterial(CngKey otherPartyPublicKey) /// /// Get a handle to the secret agreement generated between two parties /// - public SafeNCryptSecretHandle DeriveSecretAgreementHandle(ECDiffieHellmanPublicKey otherPartyPublicKey) + public SafeNCryptSecretHandle DeriveSecretAgreementHandle(ECDiffieHellmanPublicKey otherPartyPublicKey!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); - if (otherPartyPublicKey is ECDiffieHellmanCngPublicKey otherKey) { using (CngKey importedKey = otherKey.Import()) @@ -126,10 +118,8 @@ public SafeNCryptSecretHandle DeriveSecretAgreementHandle(ECDiffieHellmanPublicK /// /// Get a handle to the secret agreement between two parties /// - public SafeNCryptSecretHandle DeriveSecretAgreementHandle(CngKey otherPartyPublicKey) + public SafeNCryptSecretHandle DeriveSecretAgreementHandle(CngKey otherPartyPublicKey!!) { - if (otherPartyPublicKey == null) - throw new ArgumentNullException(nameof(otherPartyPublicKey)); if (otherPartyPublicKey.AlgorithmGroup != CngAlgorithmGroup.ECDiffieHellman) throw new ArgumentException(SR.Cryptography_ArgECDHRequiresECDHKey, nameof(otherPartyPublicKey)); if (otherPartyPublicKey.KeySize != KeySize) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Key.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Key.cs index baf5046f242e37..dac2ee2d481776 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Key.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.Key.cs @@ -36,8 +36,7 @@ public CngKey Key private set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (value.AlgorithmGroup != CngAlgorithmGroup.ECDiffieHellman) throw new ArgumentException(SR.Cryptography_ArgECDHRequiresECDHKey, nameof(value)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.cs index f4a574a67dcc38..9e88e2c0db8dc1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCng.cs @@ -20,11 +20,8 @@ public sealed partial class ECDiffieHellmanCng : ECDiffieHellman private byte[]? _seed; [SupportedOSPlatform("windows")] - public ECDiffieHellmanCng(CngKey key) + public ECDiffieHellmanCng(CngKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (key.AlgorithmGroup != CngAlgorithmGroup.ECDiffieHellman) throw new ArgumentException(SR.Cryptography_ArgECDHRequiresECDHKey, nameof(key)); @@ -43,10 +40,7 @@ public CngAlgorithm HashAlgorithm set { - if (_hashAlgorithm == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value, nameof(value)); _hashAlgorithm = value; } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCngPublicKey.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCngPublicKey.cs index 886e5161f0af0c..979f24305cc588 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCngPublicKey.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanCngPublicKey.cs @@ -59,13 +59,8 @@ public CngKeyBlobFormat BlobFormat /// Hydrate a public key from a blob /// [SupportedOSPlatform("windows")] - public static ECDiffieHellmanPublicKey FromByteArray(byte[] publicKeyBlob, CngKeyBlobFormat format) + public static ECDiffieHellmanPublicKey FromByteArray(byte[] publicKeyBlob!!, CngKeyBlobFormat format!!) { - if (publicKeyBlob == null) - throw new ArgumentNullException(nameof(publicKeyBlob)); - if (format == null) - throw new ArgumentNullException(nameof(format)); - // Verify that the key can import successfully, because we did in the past. using (CngKey imported = CngKey.Import(publicKeyBlob, format)) { diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.cs index 870e7291563a60..f3baa43a7a208c 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanOpenSsl.cs @@ -22,10 +22,8 @@ public sealed partial class ECDiffieHellmanOpenSsl : ECDiffieHellman [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] [UnsupportedOSPlatform("windows")] - public ECDiffieHellmanOpenSsl(SafeEvpPKeyHandle pkeyHandle) + public ECDiffieHellmanOpenSsl(SafeEvpPKeyHandle pkeyHandle!!) { - if (pkeyHandle == null) - throw new ArgumentNullException(nameof(pkeyHandle)); if (pkeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(pkeyHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanPublicKey.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanPublicKey.cs index eb72cb592deae3..26fb83ebc9f67e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanPublicKey.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDiffieHellmanPublicKey.cs @@ -15,13 +15,8 @@ protected ECDiffieHellmanPublicKey() _keyBlob = Array.Empty(); } - protected ECDiffieHellmanPublicKey(byte[] keyBlob) + protected ECDiffieHellmanPublicKey(byte[] keyBlob!!) { - if (keyBlob == null) - { - throw new ArgumentNullException(nameof(keyBlob)); - } - _keyBlob = (byte[])keyBlob.Clone(); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsa.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsa.cs index 735230cb2a9d95..bfeb7d190f5d2a 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsa.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsa.cs @@ -30,28 +30,20 @@ protected ECDsa() { } public static partial ECDsa Create(ECParameters parameters); [RequiresUnreferencedCode(CryptoConfig.CreateFromNameUnreferencedCodeMessage)] - public static new ECDsa? Create(string algorithm) + public static new ECDsa? Create(string algorithm!!) { - if (algorithm == null) - { - throw new ArgumentNullException(nameof(algorithm)); - } - return CryptoConfig.CreateFromName(algorithm) as ECDsa; } - public virtual byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm) + public virtual byte[] SignData(byte[] data!!, HashAlgorithmName hashAlgorithm) { - if (data == null) - throw new ArgumentNullException(nameof(data)); // hashAlgorithm is verified in the overload return SignData(data, 0, data.Length, hashAlgorithm); } - public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm) + public virtual byte[] SignData(byte[] data!!, int offset, int count, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); if (offset < 0 || offset > data.Length) throw new ArgumentOutOfRangeException(nameof(offset)); if (count < 0 || count > data.Length - offset) @@ -99,13 +91,12 @@ public virtual byte[] SignData(byte[] data, int offset, int count, HashAlgorithm /// An error occurred in the hashing or signing operation. /// public byte[] SignData( - byte[] data, + byte[] data!!, int offset, int count, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); if (offset < 0 || offset > data.Length) throw new ArgumentOutOfRangeException(nameof(offset)); if (count < 0 || count > data.Length - offset) @@ -194,9 +185,8 @@ protected virtual byte[] SignDataCore( /// /// An error occurred in the hashing or signing operation. /// - public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) + public byte[] SignData(byte[] data!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -225,9 +215,8 @@ public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, DSASignatur /// /// An error occurred in the hashing or signing operation. /// - public byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) + public byte[] SignData(Stream data!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -273,10 +262,8 @@ protected virtual byte[] SignDataCore( /// /// An error occurred in the signing operation. /// - public byte[] SignHash(byte[] hash, DSASignatureFormat signatureFormat) + public byte[] SignHash(byte[] hash!!, DSASignatureFormat signatureFormat) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -419,20 +406,16 @@ protected virtual bool TrySignDataCore( return TrySignHashCore(hash, destination, signatureFormat, out bytesWritten); } - public virtual byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm) + public virtual byte[] SignData(Stream data!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); byte[] hash = HashData(data, hashAlgorithm); return SignHash(hash); } - public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm) + public bool VerifyData(byte[] data!!, byte[] signature, HashAlgorithmName hashAlgorithm) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - return VerifyData(data, 0, data.Length, signature, hashAlgorithm); } @@ -534,10 +517,8 @@ public bool VerifyData( /// /// An error occurred in the hashing or verification operation. /// - public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) + public bool VerifyData(byte[] data!!, byte[] signature!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -619,10 +600,8 @@ protected virtual bool VerifyDataCore( return VerifyHashCore(hashSpan, signature, signatureFormat); } - public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgorithm) + public bool VerifyData(Stream data!!, byte[] signature!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); byte[] hash = HashData(data, hashAlgorithm); @@ -652,13 +631,11 @@ public bool VerifyData(Stream data, byte[] signature, HashAlgorithmName hashAlgo /// An error occurred in the hashing or verification operation. /// public bool VerifyData( - Stream data, - byte[] signature, + Stream data!!, + byte[] signature!!, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat) { - ArgumentNullException.ThrowIfNull(data); - ArgumentNullException.ThrowIfNull(signature); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); @@ -829,12 +806,8 @@ public virtual bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signa /// /// An error occurred in the verification operation. /// - public bool VerifyHash(byte[] hash, byte[] signature, DSASignatureFormat signatureFormat) + public bool VerifyHash(byte[] hash!!, byte[] signature!!, DSASignatureFormat signatureFormat) { - if (hash == null) - throw new ArgumentNullException(nameof(hash)); - if (signature == null) - throw new ArgumentNullException(nameof(signature)); if (!signatureFormat.IsKnownValue()) throw DSASignatureFormatHelpers.CreateUnknownValueException(signatureFormat); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.Key.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.Key.cs index aabaf167957532..baa804096c1e18 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.Key.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.Key.cs @@ -25,8 +25,7 @@ public CngKey Key private set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (!IsEccAlgorithmGroup(value.AlgorithmGroup)) throw new ArgumentException(SR.Cryptography_ArgECDsaRequiresECDsaKey, nameof(value)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.cs index 597f077883686b..117d9452f1433e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaCng.cs @@ -23,7 +23,8 @@ public CngAlgorithm HashAlgorithm } set { - _hashAlgorithm = value ?? throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); + _hashAlgorithm = value; } } @@ -37,11 +38,8 @@ public CngAlgorithm HashAlgorithm /// if is not an ECDsa key /// if is null. [SupportedOSPlatform("windows")] - public ECDsaCng(CngKey key) + public ECDsaCng(CngKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (!IsEccAlgorithmGroup(key.AlgorithmGroup)) throw new ArgumentException(SR.Cryptography_ArgECDsaRequiresECDsaKey, nameof(key)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaOpenSsl.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaOpenSsl.cs index aeac93ad1637f3..e45bb748e8232c 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaOpenSsl.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/ECDsaOpenSsl.cs @@ -22,10 +22,8 @@ public sealed partial class ECDsaOpenSsl : ECDsa [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] [UnsupportedOSPlatform("windows")] - public ECDsaOpenSsl(SafeEvpPKeyHandle pkeyHandle) + public ECDsaOpenSsl(SafeEvpPKeyHandle pkeyHandle!!) { - if (pkeyHandle == null) - throw new ArgumentNullException(nameof(pkeyHandle)); if (pkeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(pkeyHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HKDF.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HKDF.cs index 5c883c6e64acd8..6d3b9bf593c054 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HKDF.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HKDF.cs @@ -25,11 +25,8 @@ public static class HKDF /// The input keying material. /// The optional salt value (a non-secret random value). If not provided it defaults to a byte array of zeros. /// The pseudo random key (prk). - public static byte[] Extract(HashAlgorithmName hashAlgorithmName, byte[] ikm, byte[]? salt = null) + public static byte[] Extract(HashAlgorithmName hashAlgorithmName, byte[] ikm!!, byte[]? salt = null) { - if (ikm == null) - throw new ArgumentNullException(nameof(ikm)); - int hashLength = HashLength(hashAlgorithmName); byte[] prk = new byte[hashLength]; @@ -82,11 +79,8 @@ private static void Extract(HashAlgorithmName hashAlgorithmName, int hashLength, /// The output keying material. /// is . /// is less than 1. - public static byte[] Expand(HashAlgorithmName hashAlgorithmName, byte[] prk, int outputLength, byte[]? info = null) + public static byte[] Expand(HashAlgorithmName hashAlgorithmName, byte[] prk!!, int outputLength, byte[]? info = null) { - if (prk == null) - throw new ArgumentNullException(nameof(prk)); - if (outputLength <= 0) throw new ArgumentOutOfRangeException(nameof(outputLength), SR.ArgumentOutOfRange_NeedPosNum); @@ -208,11 +202,8 @@ private static void Expand(HashAlgorithmName hashAlgorithmName, int hashLength, /// The output keying material. /// is . /// is less than 1. - public static byte[] DeriveKey(HashAlgorithmName hashAlgorithmName, byte[] ikm, int outputLength, byte[]? salt = null, byte[]? info = null) + public static byte[] DeriveKey(HashAlgorithmName hashAlgorithmName, byte[] ikm!!, int outputLength, byte[]? salt = null, byte[]? info = null) { - if (ikm == null) - throw new ArgumentNullException(nameof(ikm)); - if (outputLength <= 0) throw new ArgumentOutOfRangeException(nameof(outputLength), SR.ArgumentOutOfRange_NeedPosNum); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMAC.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMAC.cs index 779c6c00cbb9c0..55a0ad0b688ad2 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMAC.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMAC.cs @@ -31,10 +31,7 @@ public string HashName get => _hashName; set { - if (value == null) - { - throw new ArgumentNullException(nameof(HashName)); - } + ArgumentNullException.ThrowIfNull(value, nameof(HashName)); // On the desktop, setting the HashName selects (or switches over to) a new hashing algorithm via CryptoConfig. // Our intended refactoring turns HMAC back into an abstract class with no algorithm-specific implementation. diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACMD5.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACMD5.cs index eff5baa635b8d6..4c0a6d4e9c543e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACMD5.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACMD5.cs @@ -33,13 +33,8 @@ public HMACMD5() { } - public HMACMD5(byte[] key) + public HMACMD5(byte[] key!!) { - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } - this.HashName = HashAlgorithmNames.MD5; _hMacCommon = new HMACCommon(HashAlgorithmNames.MD5, key, BlockSize); base.Key = _hMacCommon.ActualKey!; @@ -58,11 +53,7 @@ public override byte[] Key } set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _hMacCommon.ChangeKey(value); base.Key = _hMacCommon.ActualKey!; } @@ -91,13 +82,8 @@ protected override bool TryHashFinal(Span destination, out int bytesWritte /// /// or is . /// - public static byte[] HashData(byte[] key, byte[] source) + public static byte[] HashData(byte[] key!!, byte[] source!!) { - if (key is null) - throw new ArgumentNullException(nameof(key)); - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(key), new ReadOnlySpan(source)); } @@ -185,10 +171,8 @@ public static bool TryHashData(ReadOnlySpan key, ReadOnlySpan source /// does not support reading. ///

/// - public static int HashData(ReadOnlySpan key, Stream source, Span destination) + public static int HashData(ReadOnlySpan key, Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -210,10 +194,8 @@ public static int HashData(ReadOnlySpan key, Stream source, Span des /// /// does not support reading. /// - public static byte[] HashData(ReadOnlySpan key, Stream source) + public static byte[] HashData(ReadOnlySpan key, Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -232,9 +214,8 @@ public static byte[] HashData(ReadOnlySpan key, Stream source) /// /// does not support reading. /// - public static byte[] HashData(byte[] key, Stream source) + public static byte[] HashData(byte[] key!!, Stream source) { - ArgumentNullException.ThrowIfNull(key); return HashData(new ReadOnlySpan(key), source); } @@ -254,10 +235,8 @@ public static byte[] HashData(byte[] key, Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -280,10 +259,8 @@ public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream s /// /// does not support reading. /// - public static ValueTask HashDataAsync(byte[] key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(byte[] key!!, Stream source, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(key); - return HashDataAsync(new ReadOnlyMemory(key), source, cancellationToken); } @@ -313,12 +290,10 @@ public static ValueTask HashDataAsync(byte[] key, Stream source, Cancell /// public static ValueTask HashDataAsync( ReadOnlyMemory key, - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA1.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA1.cs index cc8d5619da2084..6f8d583b3e33ea 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA1.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA1.cs @@ -34,13 +34,8 @@ public HMACSHA1() { } - public HMACSHA1(byte[] key) + public HMACSHA1(byte[] key!!) { - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } - this.HashName = HashAlgorithmNames.SHA1; _hMacCommon = new HMACCommon(HashAlgorithmNames.SHA1, key, BlockSize); base.Key = _hMacCommon.ActualKey!; @@ -66,11 +61,7 @@ public override byte[] Key } set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _hMacCommon.ChangeKey(value); base.Key = _hMacCommon.ActualKey!; } @@ -99,13 +90,8 @@ protected override bool TryHashFinal(Span destination, out int bytesWritte /// /// or is . /// - public static byte[] HashData(byte[] key, byte[] source) + public static byte[] HashData(byte[] key!!, byte[] source!!) { - if (key is null) - throw new ArgumentNullException(nameof(key)); - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(key), new ReadOnlySpan(source)); } @@ -193,10 +179,8 @@ public static bool TryHashData(ReadOnlySpan key, ReadOnlySpan source /// does not support reading. ///

/// - public static int HashData(ReadOnlySpan key, Stream source, Span destination) + public static int HashData(ReadOnlySpan key, Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -218,10 +202,8 @@ public static int HashData(ReadOnlySpan key, Stream source, Span des /// /// does not support reading. /// - public static byte[] HashData(ReadOnlySpan key, Stream source) + public static byte[] HashData(ReadOnlySpan key, Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -240,9 +222,8 @@ public static byte[] HashData(ReadOnlySpan key, Stream source) /// /// does not support reading. /// - public static byte[] HashData(byte[] key, Stream source) + public static byte[] HashData(byte[] key!!, Stream source) { - ArgumentNullException.ThrowIfNull(key); return HashData(new ReadOnlySpan(key), source); } @@ -262,10 +243,8 @@ public static byte[] HashData(byte[] key, Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -288,10 +267,8 @@ public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream s /// /// does not support reading. /// - public static ValueTask HashDataAsync(byte[] key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(byte[] key!!, Stream source, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(key); - return HashDataAsync(new ReadOnlyMemory(key), source, cancellationToken); } @@ -321,12 +298,10 @@ public static ValueTask HashDataAsync(byte[] key, Stream source, Cancell /// public static ValueTask HashDataAsync( ReadOnlyMemory key, - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA256.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA256.cs index 797f60dd3b49b0..a2c21d0a70cab1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA256.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA256.cs @@ -33,13 +33,8 @@ public HMACSHA256() { } - public HMACSHA256(byte[] key) + public HMACSHA256(byte[] key!!) { - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } - this.HashName = HashAlgorithmNames.SHA256; _hMacCommon = new HMACCommon(HashAlgorithmNames.SHA256, key, BlockSize); base.Key = _hMacCommon.ActualKey!; @@ -58,11 +53,7 @@ public override byte[] Key } set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _hMacCommon.ChangeKey(value); base.Key = _hMacCommon.ActualKey!; } @@ -91,13 +82,8 @@ protected override bool TryHashFinal(Span destination, out int bytesWritte /// /// or is . /// - public static byte[] HashData(byte[] key, byte[] source) + public static byte[] HashData(byte[] key!!, byte[] source!!) { - if (key is null) - throw new ArgumentNullException(nameof(key)); - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(key), new ReadOnlySpan(source)); } @@ -185,10 +171,8 @@ public static bool TryHashData(ReadOnlySpan key, ReadOnlySpan source /// does not support reading. ///

/// - public static int HashData(ReadOnlySpan key, Stream source, Span destination) + public static int HashData(ReadOnlySpan key, Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -210,10 +194,8 @@ public static int HashData(ReadOnlySpan key, Stream source, Span des /// /// does not support reading. /// - public static byte[] HashData(ReadOnlySpan key, Stream source) + public static byte[] HashData(ReadOnlySpan key, Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -232,9 +214,8 @@ public static byte[] HashData(ReadOnlySpan key, Stream source) /// /// does not support reading. /// - public static byte[] HashData(byte[] key, Stream source) + public static byte[] HashData(byte[] key!!, Stream source) { - ArgumentNullException.ThrowIfNull(key); return HashData(new ReadOnlySpan(key), source); } @@ -254,10 +235,8 @@ public static byte[] HashData(byte[] key, Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -280,10 +259,8 @@ public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream s /// /// does not support reading. /// - public static ValueTask HashDataAsync(byte[] key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(byte[] key!!, Stream source, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(key); - return HashDataAsync(new ReadOnlyMemory(key), source, cancellationToken); } @@ -313,12 +290,10 @@ public static ValueTask HashDataAsync(byte[] key, Stream source, Cancell /// public static ValueTask HashDataAsync( ReadOnlyMemory key, - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA384.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA384.cs index 1162850933c35e..970bf891f8f5b1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA384.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA384.cs @@ -33,13 +33,8 @@ public HMACSHA384() { } - public HMACSHA384(byte[] key) + public HMACSHA384(byte[] key!!) { - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } - this.HashName = HashAlgorithmNames.SHA384; _hMacCommon = new HMACCommon(HashAlgorithmNames.SHA384, key, BlockSize); base.Key = _hMacCommon.ActualKey!; @@ -75,11 +70,7 @@ public override byte[] Key } set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _hMacCommon.ChangeKey(value); base.Key = _hMacCommon.ActualKey!; } @@ -108,13 +99,8 @@ protected override bool TryHashFinal(Span destination, out int bytesWritte /// /// or is . /// - public static byte[] HashData(byte[] key, byte[] source) + public static byte[] HashData(byte[] key!!, byte[] source!!) { - if (key is null) - throw new ArgumentNullException(nameof(key)); - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(key), new ReadOnlySpan(source)); } @@ -202,10 +188,8 @@ public static bool TryHashData(ReadOnlySpan key, ReadOnlySpan source /// does not support reading. ///

/// - public static int HashData(ReadOnlySpan key, Stream source, Span destination) + public static int HashData(ReadOnlySpan key, Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -227,10 +211,8 @@ public static int HashData(ReadOnlySpan key, Stream source, Span des /// /// does not support reading. /// - public static byte[] HashData(ReadOnlySpan key, Stream source) + public static byte[] HashData(ReadOnlySpan key, Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -249,9 +231,8 @@ public static byte[] HashData(ReadOnlySpan key, Stream source) /// /// does not support reading. /// - public static byte[] HashData(byte[] key, Stream source) + public static byte[] HashData(byte[] key!!, Stream source) { - ArgumentNullException.ThrowIfNull(key); return HashData(new ReadOnlySpan(key), source); } @@ -271,10 +252,8 @@ public static byte[] HashData(byte[] key, Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -297,10 +276,8 @@ public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream s /// /// does not support reading. /// - public static ValueTask HashDataAsync(byte[] key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(byte[] key!!, Stream source, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(key); - return HashDataAsync(new ReadOnlyMemory(key), source, cancellationToken); } @@ -330,12 +307,10 @@ public static ValueTask HashDataAsync(byte[] key, Stream source, Cancell /// public static ValueTask HashDataAsync( ReadOnlyMemory key, - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA512.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA512.cs index 079798b459a2b7..a1c3393064728e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA512.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HMACSHA512.cs @@ -33,13 +33,8 @@ public HMACSHA512() { } - public HMACSHA512(byte[] key) + public HMACSHA512(byte[] key!!) { - if (key is null) - { - throw new ArgumentNullException(nameof(key)); - } - this.HashName = HashAlgorithmNames.SHA512; _hMacCommon = new HMACCommon(HashAlgorithmNames.SHA512, key, BlockSize); base.Key = _hMacCommon.ActualKey!; @@ -72,11 +67,7 @@ public override byte[] Key } set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } - + ArgumentNullException.ThrowIfNull(value); _hMacCommon.ChangeKey(value); base.Key = _hMacCommon.ActualKey!; } @@ -105,13 +96,8 @@ protected override bool TryHashFinal(Span destination, out int bytesWritte /// /// or is . /// - public static byte[] HashData(byte[] key, byte[] source) + public static byte[] HashData(byte[] key!!, byte[] source!!) { - if (key is null) - throw new ArgumentNullException(nameof(key)); - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(key), new ReadOnlySpan(source)); } @@ -199,10 +185,8 @@ public static bool TryHashData(ReadOnlySpan key, ReadOnlySpan source /// does not support reading. ///

/// - public static int HashData(ReadOnlySpan key, Stream source, Span destination) + public static int HashData(ReadOnlySpan key, Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -224,10 +208,8 @@ public static int HashData(ReadOnlySpan key, Stream source, Span des /// /// does not support reading. /// - public static byte[] HashData(ReadOnlySpan key, Stream source) + public static byte[] HashData(ReadOnlySpan key, Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -246,9 +228,8 @@ public static byte[] HashData(ReadOnlySpan key, Stream source) /// /// does not support reading. /// - public static byte[] HashData(byte[] key, Stream source) + public static byte[] HashData(byte[] key!!, Stream source) { - ArgumentNullException.ThrowIfNull(key); return HashData(new ReadOnlySpan(key), source); } @@ -268,10 +249,8 @@ public static byte[] HashData(byte[] key, Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -294,10 +273,8 @@ public static ValueTask HashDataAsync(ReadOnlyMemory key, Stream s /// /// does not support reading. /// - public static ValueTask HashDataAsync(byte[] key, Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(byte[] key!!, Stream source, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(key); - return HashDataAsync(new ReadOnlyMemory(key), source, cancellationToken); } @@ -327,12 +304,10 @@ public static ValueTask HashDataAsync(byte[] key, Stream source, Cancell /// public static ValueTask HashDataAsync( ReadOnlyMemory key, - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithm.cs index b49d29bd4ad7ca..b816674e858516 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithm.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithm.cs @@ -45,8 +45,7 @@ public byte[] ComputeHash(byte[] buffer) { if (_disposed) throw new ObjectDisposedException(null); - if (buffer == null) - throw new ArgumentNullException(nameof(buffer)); + ArgumentNullException.ThrowIfNull(buffer); HashCore(buffer, 0, buffer.Length); return CaptureHashCodeAndReinitialize(); @@ -78,10 +77,8 @@ public bool TryComputeHash(ReadOnlySpan source, Span destination, ou return true; } - public byte[] ComputeHash(byte[] buffer, int offset, int count) + public byte[] ComputeHash(byte[] buffer!!, int offset, int count) { - if (buffer == null) - throw new ArgumentNullException(nameof(buffer)); if (offset < 0) throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0 || (count > buffer.Length)) @@ -123,11 +120,9 @@ public byte[] ComputeHash(Stream inputStream) } public Task ComputeHashAsync( - Stream inputStream, + Stream inputStream!!, CancellationToken cancellationToken = default) { - if (inputStream == null) - throw new ArgumentNullException(nameof(inputStream)); if (_disposed) throw new ObjectDisposedException(null); @@ -240,10 +235,8 @@ public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int input return outputBytes; } - private void ValidateTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount) + private void ValidateTransformBlock(byte[] inputBuffer!!, int inputOffset, int inputCount) { - if (inputBuffer == null) - throw new ArgumentNullException(nameof(inputBuffer)); if (inputOffset < 0) throw new ArgumentOutOfRangeException(nameof(inputOffset), SR.ArgumentOutOfRange_NeedNonNegNum); if (inputCount < 0 || inputCount > inputBuffer.Length) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithmName.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithmName.cs index 07e332f82f384f..ae5ac7ae45d8f2 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithmName.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/HashAlgorithmName.cs @@ -121,13 +121,8 @@ public override int GetHashCode() /// /// is null. /// - public static bool TryFromOid(string oidValue, out HashAlgorithmName value) + public static bool TryFromOid(string oidValue!!, out HashAlgorithmName value) { - if (oidValue is null) - { - throw new ArgumentNullException(nameof(oidValue)); - } - switch (oidValue) { case Oids.Md5: diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Helpers.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Helpers.cs index 7a60ff24841bb1..88f76a25b04c00 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Helpers.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Helpers.cs @@ -12,14 +12,6 @@ namespace Internal.Cryptography { internal static partial class Helpers { - internal static ReadOnlySpan AsSpanParameter(this byte[] array, string paramName) - { - if (array == null) - throw new ArgumentNullException(paramName); - - return new ReadOnlySpan(array); - } - internal static void AddRange(this ICollection coll, IEnumerable newData) { foreach (T datum in newData) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/IncrementalHash.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/IncrementalHash.cs index 23fbadceab2554..b33c4d7477377a 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/IncrementalHash.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/IncrementalHash.cs @@ -56,11 +56,8 @@ private IncrementalHash(HashAlgorithmName name, HMACCommon hmac) /// The data to process. /// is null. /// The object has already been disposed. - public void AppendData(byte[] data) + public void AppendData(byte[] data!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - AppendData(new ReadOnlySpan(data)); } @@ -84,10 +81,8 @@ public void AppendData(byte[] data) /// . - . /// /// The object has already been disposed. - public void AppendData(byte[] data, int offset, int count) + public void AppendData(byte[] data!!, int offset, int count) { - if (data == null) - throw new ArgumentNullException(nameof(data)); if (offset < 0) throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0 || (count > data.Length)) @@ -347,11 +342,8 @@ public static IncrementalHash CreateHash(HashAlgorithmName hashAlgorithm) /// /// is not a known hash algorithm. [UnsupportedOSPlatform("browser")] - public static IncrementalHash CreateHMAC(HashAlgorithmName hashAlgorithm, byte[] key) + public static IncrementalHash CreateHMAC(HashAlgorithmName hashAlgorithm, byte[] key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - return CreateHMAC(hashAlgorithm, (ReadOnlySpan)key); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MD5.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MD5.cs index c1ba826d593559..edbb9b610f1b3f 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MD5.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/MD5.cs @@ -48,11 +48,8 @@ protected MD5() /// /// is . /// - public static byte[] HashData(byte[] source) + public static byte[] HashData(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(source)); } @@ -134,10 +131,8 @@ public static bool TryHashData(ReadOnlySpan source, Span destination /// does not support reading. ///

/// - public static int HashData(Stream source, Span destination) + public static int HashData(Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -158,10 +153,8 @@ public static int HashData(Stream source, Span destination) /// /// does not support reading. /// - public static byte[] HashData(Stream source) + public static byte[] HashData(Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -183,10 +176,8 @@ public static byte[] HashData(Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -217,12 +208,10 @@ public static ValueTask HashDataAsync(Stream source, CancellationToken c ///

/// public static ValueTask HashDataAsync( - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Oid.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Oid.cs index c3f6a28ff077b9..3ec5be3a97f6a8 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Oid.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Oid.cs @@ -32,23 +32,16 @@ public Oid(string? value, string? friendlyName) _hasInitializedFriendlyName = friendlyName != null; } - public Oid(Oid oid) + public Oid(Oid oid!!) { - if (oid == null) - throw new ArgumentNullException(nameof(oid)); _value = oid._value; _friendlyName = oid._friendlyName; _group = oid._group; _hasInitializedFriendlyName = oid._hasInitializedFriendlyName; } - public static Oid FromFriendlyName(string friendlyName, OidGroup group) + public static Oid FromFriendlyName(string friendlyName!!, OidGroup group) { - if (friendlyName == null) - { - throw new ArgumentNullException(nameof(friendlyName)); - } - string? oidValue = OidLookup.ToOid(friendlyName, group, fallBackToAllGroups: false); if (oidValue == null) throw new CryptographicException(SR.Cryptography_Oid_InvalidName); @@ -56,11 +49,8 @@ public static Oid FromFriendlyName(string friendlyName, OidGroup group) return new Oid(oidValue, friendlyName, group); } - public static Oid FromOidValue(string oidValue, OidGroup group) + public static Oid FromOidValue(string oidValue!!, OidGroup group) { - if (oidValue == null) - throw new ArgumentNullException(nameof(oidValue)); - string? friendlyName = OidLookup.ToFriendlyName(oidValue, group, fallBackToAllGroups: false); if (friendlyName == null) throw new CryptographicException(SR.Cryptography_Oid_InvalidValue); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidCollection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidCollection.cs index 4b76860a983ba7..56c0c0c42d46f3 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidCollection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidCollection.cs @@ -66,10 +66,8 @@ public Oid? this[string oid] IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) @@ -84,13 +82,10 @@ void ICollection.CopyTo(Array array, int index) } } - public void CopyTo(Oid[] array, int index) + public void CopyTo(Oid[] array!!, int index) { // Need to do part of the argument validation ourselves as OidCollection throws // ArgumentOutOfRangeException where List<>.CopyTo() throws ArgumentException. - - if (array == null) - throw new ArgumentNullException(nameof(array)); if (index < 0 || index >= array.Length) throw new ArgumentOutOfRangeException(nameof(index), SR.ArgumentOutOfRange_Index); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidLookup.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidLookup.cs index fd96651c342fbd..17031b902e7c59 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidLookup.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/OidLookup.cs @@ -18,11 +18,8 @@ internal static partial class OidLookup // // Attempts to map a friendly name to an OID. Returns null if not a known name. // - public static string? ToFriendlyName(string oid, OidGroup oidGroup, bool fallBackToAllGroups) + public static string? ToFriendlyName(string oid!!, OidGroup oidGroup, bool fallBackToAllGroups) { - if (oid == null) - throw new ArgumentNullException(nameof(oid)); - string? mappedName; bool shouldUseCache = ShouldUseCache(oidGroup); @@ -57,10 +54,8 @@ internal static partial class OidLookup // // Attempts to retrieve the friendly name for an OID. Returns null if not a known or valid OID. // - public static string? ToOid(string friendlyName, OidGroup oidGroup, bool fallBackToAllGroups) + public static string? ToOid(string friendlyName!!, OidGroup oidGroup, bool fallBackToAllGroups) { - if (friendlyName == null) - throw new ArgumentNullException(nameof(friendlyName)); if (friendlyName.Length == 0) return null; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RC2Implementation.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RC2Implementation.cs index 79cc9ecd83b642..597b47f4a14f8a 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RC2Implementation.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RC2Implementation.cs @@ -54,13 +54,10 @@ public sealed override void GenerateKey() Key = RandomNumberGenerator.GetBytes(KeySize / BitsPerByte); } - private ICryptoTransform CreateTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting) + private ICryptoTransform CreateTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting) { // note: rgbIV is guaranteed to be cloned before this method, so no need to clone it again - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - if (!ValidKeySize(rgbKey.Length)) throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSA.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSA.cs index da0a5aedd5b2f9..eb09a9d09f7599 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSA.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSA.cs @@ -151,13 +151,8 @@ public virtual byte[] DecryptValue(byte[] rgb) => public virtual byte[] EncryptValue(byte[] rgb) => throw new NotSupportedException(SR.NotSupported_Method); // Same as Desktop - public byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) + public byte[] SignData(byte[] data!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (data == null) - { - throw new ArgumentNullException(nameof(data)); - } - return SignData(data, 0, data.Length, hashAlgorithm, padding); } @@ -205,11 +200,8 @@ public virtual bool TrySignData(ReadOnlySpan data, Span destination, return false; } - public bool VerifyData(byte[] data, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) + public bool VerifyData(byte[] data!!, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - return VerifyData(data, 0, data.Length, signature, hashAlgorithm, padding); } @@ -372,13 +364,10 @@ private unsafe AsnWriter WritePkcs8PrivateKey() public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan password, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, password, @@ -396,13 +385,10 @@ public override bool TryExportEncryptedPkcs8PrivateKey( public override bool TryExportEncryptedPkcs8PrivateKey( ReadOnlySpan passwordBytes, - PbeParameters pbeParameters, + PbeParameters pbeParameters!!, Span destination, out int bytesWritten) { - if (pbeParameters == null) - throw new ArgumentNullException(nameof(pbeParameters)); - PasswordBasedEncryption.ValidatePbeParameters( pbeParameters, ReadOnlySpan.Empty, diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACng.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACng.cs index 6038ea68ce7e14..f51f993a3c45d3 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACng.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACng.cs @@ -20,11 +20,8 @@ public sealed partial class RSACng : RSA /// if is not an RSA key /// if is null. [SupportedOSPlatform("windows")] - public RSACng(CngKey key) + public RSACng(CngKey key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (key.AlgorithmGroup != CngAlgorithmGroup.Rsa) throw new ArgumentException(SR.Cryptography_ArgRSARequiresRSAKey, nameof(key)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Unix.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Unix.cs index 70ba680b3f6fdd..636d917c9dc890 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Unix.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Unix.cs @@ -40,11 +40,8 @@ public RSACryptoServiceProvider(CspParameters parameters) => public CspKeyContainerInfo CspKeyContainerInfo => throw new PlatformNotSupportedException(SR.Format(SR.Cryptography_CAPI_Required, nameof(CspKeyContainerInfo))); - public byte[] Decrypt(byte[] rgb, bool fOAEP) + public byte[] Decrypt(byte[] rgb!!, bool fOAEP) { - if (rgb == null) - throw new ArgumentNullException(nameof(rgb)); - // size check -- must be exactly the modulus size if (rgb.Length != (KeySize / 8)) throw new CryptographicException(SR.Cryptography_RSA_DecryptWrongSize); @@ -52,23 +49,16 @@ public byte[] Decrypt(byte[] rgb, bool fOAEP) return _impl.Decrypt(rgb, fOAEP ? RSAEncryptionPadding.OaepSHA1 : RSAEncryptionPadding.Pkcs1); } - public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Decrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - return padding == RSAEncryptionPadding.Pkcs1 ? Decrypt(data, fOAEP: false) : padding == RSAEncryptionPadding.OaepSHA1 ? Decrypt(data, fOAEP: true) : // For compat, this prevents OaepSHA2 options as fOAEP==true will cause Decrypt to use OaepSHA1 throw PaddingModeNotSupported(); } - public override bool TryDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryDecrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - throw new ArgumentNullException(nameof(padding)); if (data.Length != (KeySize / 8)) throw new CryptographicException(SR.Cryptography_RSA_DecryptWrongSize); if (padding != RSAEncryptionPadding.Pkcs1 && padding != RSAEncryptionPadding.OaepSHA1) @@ -86,31 +76,21 @@ protected override void Dispose(bool disposing) } } - public byte[] Encrypt(byte[] rgb, bool fOAEP) + public byte[] Encrypt(byte[] rgb!!, bool fOAEP) { - if (rgb == null) - throw new ArgumentNullException(nameof(rgb)); - return _impl.Encrypt(rgb, fOAEP ? RSAEncryptionPadding.OaepSHA1 : RSAEncryptionPadding.Pkcs1); } - public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Encrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - return padding == RSAEncryptionPadding.Pkcs1 ? Encrypt(data, fOAEP: false) : padding == RSAEncryptionPadding.OaepSHA1 ? Encrypt(data, fOAEP: true) : // For compat, this prevents OaepSHA2 options as fOAEP==true will cause Decrypt to use OaepSHA1 throw PaddingModeNotSupported(); } - public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding, out int bytesWritten) + public override bool TryEncrypt(ReadOnlySpan data, Span destination, RSAEncryptionPadding padding!!, out int bytesWritten) { - if (padding == null) - throw new ArgumentNullException(nameof(padding)); if (padding != RSAEncryptionPadding.Pkcs1 && padding != RSAEncryptionPadding.OaepSHA1) throw PaddingModeNotSupported(); @@ -190,18 +170,15 @@ public override int KeySize public override string SignatureAlgorithm => "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; - public override byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override byte[] SignData(Stream data, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.SignData(data, hashAlgorithm, padding); - public override byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override byte[] SignData(byte[] data, int offset, int count, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.SignData(data, offset, count, hashAlgorithm, padding); - public override bool TrySignData(ReadOnlySpan data, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override bool TrySignData(ReadOnlySpan data, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!, out int bytesWritten) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.TrySignData(data, destination, hashAlgorithm, padding, out bytesWritten); @@ -214,20 +191,16 @@ public byte[] SignData(byte[] buffer, object halg) => public byte[] SignData(Stream inputStream, object halg) => _impl.SignData(inputStream, CapiHelper.ObjToHashAlgorithmName(halg), RSASignaturePadding.Pkcs1); - public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override byte[] SignHash(byte[] hash, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.SignHash(hash, hashAlgorithm, padding); - public override bool TrySignHash(ReadOnlySpan hash, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override bool TrySignHash(ReadOnlySpan hash, Span destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!, out int bytesWritten) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.TrySignHash(hash, destination, hashAlgorithm, padding, out bytesWritten); - public byte[] SignHash(byte[] rgbHash, string str) + public byte[] SignHash(byte[] rgbHash!!, string str) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (PublicOnly) throw new CryptographicException(SR.Cryptography_CSP_NoPrivateKey); @@ -240,46 +213,25 @@ public byte[] SignHash(byte[] rgbHash, string str) public bool VerifyData(byte[] buffer, object halg, byte[] signature) => _impl.VerifyData(buffer, signature, CapiHelper.ObjToHashAlgorithmName(halg), RSASignaturePadding.Pkcs1); - public override bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override bool VerifyData(byte[] data, int offset, int count, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.VerifyData(data, offset, count, signature, hashAlgorithm, padding); - public override bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override bool VerifyData(ReadOnlySpan data, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.VerifyData(data, signature, hashAlgorithm, padding); - public override bool VerifyHash(byte[] hash, byte[] signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) + public override bool VerifyHash(byte[] hash!!, byte[] signature!!, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) { - if (hash == null) - { - throw new ArgumentNullException(nameof(hash)); - } - if (signature == null) - { - throw new ArgumentNullException(nameof(signature)); - } - return VerifyHash((ReadOnlySpan)hash, (ReadOnlySpan)signature, hashAlgorithm, padding); } - public override bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding) => - padding == null ? throw new ArgumentNullException(nameof(padding)) : + public override bool VerifyHash(ReadOnlySpan hash, ReadOnlySpan signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding!!) => padding != RSASignaturePadding.Pkcs1 ? throw PaddingModeNotSupported() : _impl.VerifyHash(hash, signature, hashAlgorithm, padding); - public bool VerifyHash(byte[] rgbHash, string str, byte[] rgbSignature) + public bool VerifyHash(byte[] rgbHash!!, string str, byte[] rgbSignature!!) { - if (rgbHash == null) - { - throw new ArgumentNullException(nameof(rgbHash)); - } - if (rgbSignature == null) - { - throw new ArgumentNullException(nameof(rgbSignature)); - } - return VerifyHash( (ReadOnlySpan)rgbHash, (ReadOnlySpan)rgbSignature, CapiHelper.NameOrOidToHashAlgorithmName(str), RSASignaturePadding.Pkcs1); @@ -296,11 +248,8 @@ private static Exception PaddingModeNotSupported() /// /// find whether an RSA key blob is public. /// - private static bool IsPublic(byte[] keyBlob) + private static bool IsPublic(byte[] keyBlob!!) { - if (keyBlob == null) - throw new ArgumentNullException(nameof(keyBlob)); - // The CAPI RSA public key representation consists of the following sequence: // - BLOBHEADER // - RSAPUBKEY diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Windows.cs index ed045ea21a9ce7..ba10764a98a228 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSACryptoServiceProvider.Windows.cs @@ -261,13 +261,8 @@ public static bool UseMachineKeyStore /// encrypted data /// true to use OAEP padding (PKCS #1 v2), false to use PKCS #1 type 2 padding /// decrypted data - public byte[] Decrypt(byte[] rgb, bool fOAEP) + public byte[] Decrypt(byte[] rgb!!, bool fOAEP) { - if (rgb == null) - { - throw new ArgumentNullException(nameof(rgb)); - } - // Save the KeySize value to a local because it has non-trivial cost. int keySize = KeySize; @@ -319,13 +314,8 @@ protected override void Dispose(bool disposing) /// raw data to encrypt /// true to use OAEP padding (PKCS #1 v2), false to use PKCS #1 type 2 padding /// Encrypted key - public byte[] Encrypt(byte[] rgb, bool fOAEP) + public byte[] Encrypt(byte[] rgb!!, bool fOAEP) { - if (rgb == null) - { - throw new ArgumentNullException(nameof(rgb)); - } - if (fOAEP) { int rsaSize = (KeySize + 7) / 8; @@ -484,10 +474,8 @@ public byte[] SignData(Stream inputStream, object halg) /// The input data for which to compute the hash /// The hash algorithm to use to create the hash value. /// The RSA signature for the specified data. - public byte[] SignHash(byte[] rgbHash, string? str) + public byte[] SignHash(byte[] rgbHash!!, string? str) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (PublicOnly) throw new CryptographicException(SR.Cryptography_CSP_NoPrivateKey); @@ -530,13 +518,8 @@ public bool VerifyData(byte[] buffer, object halg, byte[] signature) /// /// Verifies the signature of a hash value. /// - public bool VerifyHash(byte[] rgbHash, string str, byte[] rgbSignature) + public bool VerifyHash(byte[] rgbHash!!, string str, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); - int calgHash = CapiHelper.NameOrOidToHashAlgId(str, OidGroup.HashAlgorithm); return VerifyHash(rgbHash, calgHash, rgbSignature); } @@ -558,12 +541,8 @@ private bool VerifyHash(byte[] rgbHash, int calgHash, byte[] rgbSignature) /// /// find whether an RSA key blob is public. /// - private static bool IsPublic(byte[] keyBlob) + private static bool IsPublic(byte[] keyBlob!!) { - if (keyBlob == null) - { - throw new ArgumentNullException(nameof(keyBlob)); - } // The CAPI RSA public key representation consists of the following sequence: // - BLOBHEADER // - RSAPUBKEY @@ -630,13 +609,8 @@ private static int GetAlgorithmId(HashAlgorithmName hashAlgorithm) => _ => throw new CryptographicException(SR.Cryptography_UnknownHashAlgorithm, hashAlgorithm.Name), }; - public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Encrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - if (padding == RSAEncryptionPadding.Pkcs1) { return Encrypt(data, fOAEP: false); @@ -651,13 +625,8 @@ public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) } } - public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) + public override byte[] Decrypt(byte[] data!!, RSAEncryptionPadding padding!!) { - if (data == null) - throw new ArgumentNullException(nameof(data)); - if (padding == null) - throw new ArgumentNullException(nameof(padding)); - if (padding == RSAEncryptionPadding.Pkcs1) { return Decrypt(data, fOAEP: false); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeDeformatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeDeformatter.cs index 668d0784db8a95..4895e87d05ae83 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeDeformatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeDeformatter.cs @@ -8,11 +8,8 @@ public class RSAOAEPKeyExchangeDeformatter : AsymmetricKeyExchangeDeformatter private RSA? _rsaKey; public RSAOAEPKeyExchangeDeformatter() { } - public RSAOAEPKeyExchangeDeformatter(AsymmetricAlgorithm key) + public RSAOAEPKeyExchangeDeformatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -30,11 +27,8 @@ public override byte[] DecryptKeyExchange(byte[] rgbData) return _rsaKey.Decrypt(rgbData, RSAEncryptionPadding.OaepSHA1); } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeFormatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeFormatter.cs index dd8568c359453d..2026b7766ae80d 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeFormatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOAEPKeyExchangeFormatter.cs @@ -10,11 +10,8 @@ public class RSAOAEPKeyExchangeFormatter : AsymmetricKeyExchangeFormatter private RandomNumberGenerator? RngValue; public RSAOAEPKeyExchangeFormatter() { } - public RSAOAEPKeyExchangeFormatter(AsymmetricAlgorithm key) + public RSAOAEPKeyExchangeFormatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -53,11 +50,8 @@ public RandomNumberGenerator? Rng set { RngValue = value; } } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOpenSsl.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOpenSsl.cs index 1ef165c992e8ee..30891570cf0459 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOpenSsl.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAOpenSsl.cs @@ -65,10 +65,8 @@ public RSAOpenSsl(IntPtr handle) [UnsupportedOSPlatform("ios")] [UnsupportedOSPlatform("tvos")] [UnsupportedOSPlatform("windows")] - public RSAOpenSsl(SafeEvpPKeyHandle pkeyHandle) + public RSAOpenSsl(SafeEvpPKeyHandle pkeyHandle!!) { - if (pkeyHandle == null) - throw new ArgumentNullException(nameof(pkeyHandle)); if (pkeyHandle.IsInvalid) throw new ArgumentException(SR.Cryptography_OpenInvalidHandle, nameof(pkeyHandle)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeDeformatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeDeformatter.cs index ea54291305abcf..f01cdf3cbcb85d 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeDeformatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeDeformatter.cs @@ -12,11 +12,8 @@ public class RSAPKCS1KeyExchangeDeformatter : AsymmetricKeyExchangeDeformatter public RSAPKCS1KeyExchangeDeformatter() { } - public RSAPKCS1KeyExchangeDeformatter(AsymmetricAlgorithm key) + public RSAPKCS1KeyExchangeDeformatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -40,11 +37,8 @@ public override byte[] DecryptKeyExchange(byte[] rgbIn) return _rsaKey.Decrypt(rgbIn, RSAEncryptionPadding.Pkcs1); } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeFormatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeFormatter.cs index b9cd034075a406..58b439942a24cc 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeFormatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1KeyExchangeFormatter.cs @@ -12,11 +12,8 @@ public class RSAPKCS1KeyExchangeFormatter : AsymmetricKeyExchangeFormatter public RSAPKCS1KeyExchangeFormatter() { } - public RSAPKCS1KeyExchangeFormatter(AsymmetricAlgorithm key) + public RSAPKCS1KeyExchangeFormatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -34,11 +31,8 @@ public RandomNumberGenerator? Rng set { RngValue = value; } } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureDeformatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureDeformatter.cs index 22eeaae1fc6596..b3376f9b8ddc19 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureDeformatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureDeformatter.cs @@ -13,19 +13,13 @@ public class RSAPKCS1SignatureDeformatter : AsymmetricSignatureDeformatter private string? _algName; public RSAPKCS1SignatureDeformatter() { } - public RSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key) + public RSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -44,12 +38,8 @@ public override void SetHashAlgorithm(string strName) } } - public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) + public override bool VerifySignature(byte[] rgbHash!!, byte[] rgbSignature!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); - if (rgbSignature == null) - throw new ArgumentNullException(nameof(rgbSignature)); if (_algName == null) throw new CryptographicUnexpectedOperationException(SR.Cryptography_FormatterMissingAlgorithm); if (_rsaKey == null) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureFormatter.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureFormatter.cs index 938e2a60c3eb20..af101c039ab964 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureFormatter.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RSAPKCS1SignatureFormatter.cs @@ -14,19 +14,13 @@ public class RSAPKCS1SignatureFormatter : AsymmetricSignatureFormatter public RSAPKCS1SignatureFormatter() { } - public RSAPKCS1SignatureFormatter(AsymmetricAlgorithm key) + public RSAPKCS1SignatureFormatter(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } - public override void SetKey(AsymmetricAlgorithm key) + public override void SetKey(AsymmetricAlgorithm key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - _rsaKey = (RSA)key; } @@ -45,10 +39,8 @@ public override void SetHashAlgorithm(string strName) } } - public override byte[] CreateSignature(byte[] rgbHash) + public override byte[] CreateSignature(byte[] rgbHash!!) { - if (rgbHash == null) - throw new ArgumentNullException(nameof(rgbHash)); if (_algName == null) throw new CryptographicUnexpectedOperationException(SR.Cryptography_FormatterMissingAlgorithm); if (_rsaKey == null) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGenerator.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGenerator.cs index b299396c595d9a..b6d0c097b7913b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGenerator.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGenerator.cs @@ -163,10 +163,8 @@ public static byte[] GetBytes(int count) return ret; } - internal void VerifyGetBytes(byte[] data, int offset, int count) + internal void VerifyGetBytes(byte[] data!!, int offset, int count) { - if (data == null) - throw new ArgumentNullException(nameof(data)); if (offset < 0) throw new ArgumentOutOfRangeException(nameof(offset), SR.ArgumentOutOfRange_NeedNonNegNum); if (count < 0) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGeneratorImplementation.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGeneratorImplementation.cs index e00508d66c237f..2bc9b39aa4dfcf 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGeneratorImplementation.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/RandomNumberGeneratorImplementation.cs @@ -26,9 +26,8 @@ internal static unsafe void FillSpan(Span data) } } - public override void GetBytes(byte[] data) + public override void GetBytes(byte[] data!!) { - if (data == null) throw new ArgumentNullException(nameof(data)); GetBytes(new Span(data)); } @@ -46,9 +45,8 @@ public override unsafe void GetBytes(Span data) } } - public override void GetNonZeroBytes(byte[] data) + public override void GetNonZeroBytes(byte[] data!!) { - if (data == null) throw new ArgumentNullException(nameof(data)); GetNonZeroBytes(new Span(data)); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.OneShot.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.OneShot.cs index 20190fd32fcd98..e5251f5c8b9bb2 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.OneShot.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.OneShot.cs @@ -38,17 +38,12 @@ public partial class Rfc2898DeriveBytes /// , and . /// public static byte[] Pbkdf2( - byte[] password, - byte[] salt, + byte[] password!!, + byte[] salt!!, int iterations, HashAlgorithmName hashAlgorithm, int outputLength) { - if (password is null) - throw new ArgumentNullException(nameof(password)); - if (salt is null) - throw new ArgumentNullException(nameof(salt)); - return Pbkdf2(new ReadOnlySpan(password), new ReadOnlySpan(salt), iterations, hashAlgorithm, outputLength); } @@ -162,17 +157,12 @@ public static void Pbkdf2( /// and use . /// public static byte[] Pbkdf2( - string password, - byte[] salt, + string password!!, + byte[] salt!!, int iterations, HashAlgorithmName hashAlgorithm, int outputLength) { - if (password is null) - throw new ArgumentNullException(nameof(password)); - if (salt is null) - throw new ArgumentNullException(nameof(salt)); - return Pbkdf2(password.AsSpan(), new ReadOnlySpan(salt), iterations, hashAlgorithm, outputLength); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.cs index 9c0909109c5f8d..39791c72bc240b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/Rfc2898DeriveBytes.cs @@ -85,10 +85,8 @@ public Rfc2898DeriveBytes(string password, int saltSize, int iterations, HashAlg Initialize(); } - internal Rfc2898DeriveBytes(byte[] password, byte[] salt, int iterations, HashAlgorithmName hashAlgorithm, bool clearPassword) + internal Rfc2898DeriveBytes(byte[] password, byte[] salt!!, int iterations, HashAlgorithmName hashAlgorithm, bool clearPassword) { - if (salt is null) - throw new ArgumentNullException(nameof(salt)); if (iterations <= 0) throw new ArgumentOutOfRangeException(nameof(iterations), SR.ArgumentOutOfRange_NeedPosNum); if (password is null) @@ -135,9 +133,7 @@ public byte[] Salt set { - if (value == null) - throw new ArgumentNullException(nameof(value)); - + ArgumentNullException.ThrowIfNull(value); _salt = new byte[value.Length + sizeof(uint)]; value.AsSpan().CopyTo(_salt); Initialize(); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA1.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA1.cs index 684d69e9a228c4..d8623e523c2873 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA1.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA1.cs @@ -47,11 +47,8 @@ protected SHA1() /// /// is . /// - public static byte[] HashData(byte[] source) + public static byte[] HashData(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(source)); } @@ -133,10 +130,8 @@ public static bool TryHashData(ReadOnlySpan source, Span destination /// does not support reading. ///

/// - public static int HashData(Stream source, Span destination) + public static int HashData(Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -157,10 +152,8 @@ public static int HashData(Stream source, Span destination) /// /// does not support reading. /// - public static byte[] HashData(Stream source) + public static byte[] HashData(Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -182,10 +175,8 @@ public static byte[] HashData(Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -216,12 +207,10 @@ public static ValueTask HashDataAsync(Stream source, CancellationToken c ///

/// public static ValueTask HashDataAsync( - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA256.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA256.cs index fb48e9ffe00319..fd8a03ca96fbf5 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA256.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA256.cs @@ -46,11 +46,8 @@ protected SHA256() /// /// is . /// - public static byte[] HashData(byte[] source) + public static byte[] HashData(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(source)); } @@ -133,10 +130,8 @@ public static bool TryHashData(ReadOnlySpan source, Span destination /// does not support reading. ///

/// - public static int HashData(Stream source, Span destination) + public static int HashData(Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -157,10 +152,8 @@ public static int HashData(Stream source, Span destination) /// /// does not support reading. /// - public static byte[] HashData(Stream source) + public static byte[] HashData(Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -182,10 +175,8 @@ public static byte[] HashData(Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -216,12 +207,10 @@ public static ValueTask HashDataAsync(Stream source, CancellationToken c ///

/// public static ValueTask HashDataAsync( - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA384.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA384.cs index 89ba9d5c78b85c..fa8618d50118d8 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA384.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA384.cs @@ -46,11 +46,8 @@ protected SHA384() /// /// is . /// - public static byte[] HashData(byte[] source) + public static byte[] HashData(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(source)); } @@ -132,10 +129,8 @@ public static bool TryHashData(ReadOnlySpan source, Span destination /// does not support reading. ///

/// - public static int HashData(Stream source, Span destination) + public static int HashData(Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -156,10 +151,8 @@ public static int HashData(Stream source, Span destination) /// /// does not support reading. /// - public static byte[] HashData(Stream source) + public static byte[] HashData(Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -181,10 +174,8 @@ public static byte[] HashData(Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -215,12 +206,10 @@ public static ValueTask HashDataAsync(Stream source, CancellationToken c ///

/// public static ValueTask HashDataAsync( - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA512.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA512.cs index 924af115013d97..6833478ca89e0b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA512.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SHA512.cs @@ -46,11 +46,8 @@ protected SHA512() /// /// is . /// - public static byte[] HashData(byte[] source) + public static byte[] HashData(byte[] source!!) { - if (source is null) - throw new ArgumentNullException(nameof(source)); - return HashData(new ReadOnlySpan(source)); } @@ -132,10 +129,8 @@ public static bool TryHashData(ReadOnlySpan source, Span destination /// does not support reading. ///

/// - public static int HashData(Stream source, Span destination) + public static int HashData(Stream source!!, Span destination) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); @@ -156,10 +151,8 @@ public static int HashData(Stream source, Span destination) /// /// does not support reading. /// - public static byte[] HashData(Stream source) + public static byte[] HashData(Stream source!!) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -181,10 +174,8 @@ public static byte[] HashData(Stream source) /// /// does not support reading. /// - public static ValueTask HashDataAsync(Stream source, CancellationToken cancellationToken = default) + public static ValueTask HashDataAsync(Stream source!!, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (!source.CanRead) throw new ArgumentException(SR.Argument_StreamNotReadable, nameof(source)); @@ -215,12 +206,10 @@ public static ValueTask HashDataAsync(Stream source, CancellationToken c ///

/// public static ValueTask HashDataAsync( - Stream source, + Stream source!!, Memory destination, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(source); - if (destination.Length < HashSizeInBytes) throw new ArgumentException(SR.Argument_DestinationTooShort, nameof(destination)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SignatureDescription.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SignatureDescription.cs index 6415c9e5c03ae4..e50b658422a630 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SignatureDescription.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SignatureDescription.cs @@ -16,10 +16,8 @@ public SignatureDescription() { } - public SignatureDescription(SecurityElement el) + public SignatureDescription(SecurityElement el!!) { - if (el == null) - throw new ArgumentNullException(nameof(el)); KeyAlgorithm = el.SearchForTextOfTag("Key"); DigestAlgorithm = el.SearchForTextOfTag("Digest"); FormatterAlgorithm = el.SearchForTextOfTag("Formatter"); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SymmetricAlgorithm.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SymmetricAlgorithm.cs index 5e5cfa33a07b6a..fffae90dbbac62 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SymmetricAlgorithm.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/SymmetricAlgorithm.cs @@ -70,8 +70,7 @@ public virtual byte[] IV set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (value.Length != this.BlockSize / 8) throw new CryptographicException(SR.Cryptography_InvalidIVSize); @@ -90,8 +89,7 @@ public virtual byte[] Key set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); long bitLength = value.Length * 8L; if (bitLength > int.MaxValue || !ValidKeySize((int)bitLength)) @@ -447,12 +445,9 @@ public int GetCiphertextLengthCfb(int plaintextLength, PaddingMode paddingMode = /// /// This method's behavior is defined by . /// - public byte[] DecryptEcb(byte[] ciphertext, PaddingMode paddingMode) + public byte[] DecryptEcb(byte[] ciphertext!!, PaddingMode paddingMode) { // Padding mode is validated by callee. - if (ciphertext is null) - throw new ArgumentNullException(nameof(ciphertext)); - return DecryptEcb(new ReadOnlySpan(ciphertext), paddingMode); } @@ -566,12 +561,9 @@ public bool TryDecryptEcb(ReadOnlySpan ciphertext, Span destination, /// /// This method's behavior is defined by . /// - public byte[] EncryptEcb(byte[] plaintext, PaddingMode paddingMode) + public byte[] EncryptEcb(byte[] plaintext!!, PaddingMode paddingMode) { // paddingMode is validated by callee - if (plaintext is null) - throw new ArgumentNullException(nameof(plaintext)); - return EncryptEcb(new ReadOnlySpan(plaintext), paddingMode); } @@ -690,13 +682,8 @@ public bool TryEncryptEcb(ReadOnlySpan plaintext, Span destination, /// /// This method's behavior is defined by . /// - public byte[] DecryptCbc(byte[] ciphertext, byte[] iv, PaddingMode paddingMode = PaddingMode.PKCS7) + public byte[] DecryptCbc(byte[] ciphertext!!, byte[] iv!!, PaddingMode paddingMode = PaddingMode.PKCS7) { - if (ciphertext is null) - throw new ArgumentNullException(nameof(ciphertext)); - if (iv is null) - throw new ArgumentNullException(nameof(iv)); - return DecryptCbc(new ReadOnlySpan(ciphertext), new ReadOnlySpan(iv), paddingMode); } @@ -847,13 +834,8 @@ public bool TryDecryptCbc( /// /// This method's behavior is defined by . /// - public byte[] EncryptCbc(byte[] plaintext, byte[] iv, PaddingMode paddingMode = PaddingMode.PKCS7) + public byte[] EncryptCbc(byte[] plaintext!!, byte[] iv!!, PaddingMode paddingMode = PaddingMode.PKCS7) { - if (plaintext is null) - throw new ArgumentNullException(nameof(plaintext)); - if (iv is null) - throw new ArgumentNullException(nameof(iv)); - return EncryptCbc(new ReadOnlySpan(plaintext), new ReadOnlySpan(iv), paddingMode); } @@ -1021,13 +1003,8 @@ public bool TryEncryptCbc( /// /// This method's behavior is defined by . /// - public byte[] DecryptCfb(byte[] ciphertext, byte[] iv, PaddingMode paddingMode = PaddingMode.None, int feedbackSizeInBits = 8) + public byte[] DecryptCfb(byte[] ciphertext!!, byte[] iv!!, PaddingMode paddingMode = PaddingMode.None, int feedbackSizeInBits = 8) { - if (ciphertext is null) - throw new ArgumentNullException(nameof(ciphertext)); - if (iv is null) - throw new ArgumentNullException(nameof(iv)); - return DecryptCfb( new ReadOnlySpan(ciphertext), new ReadOnlySpan(iv), diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDES.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDES.cs index f81aa38669a04f..4ba3bfa9d536aa 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDES.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDES.cs @@ -47,8 +47,7 @@ public override byte[] Key set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); if (!(value.Length * 8).IsLegalSize(s_legalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDESCng.Windows.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDESCng.Windows.cs index 808b8902d34ebb..ade9fb34c8d679 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDESCng.Windows.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDESCng.Windows.cs @@ -104,16 +104,16 @@ protected override bool TryDecryptEcbCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: null, + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv: default, encrypting: false, paddingMode, CipherMode.ECB, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -123,16 +123,16 @@ protected override bool TryEncryptEcbCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: null, + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv: default, encrypting: true, paddingMode, CipherMode.ECB, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } @@ -143,16 +143,16 @@ protected override bool TryEncryptCbcCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: true, paddingMode, CipherMode.CBC, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } @@ -163,16 +163,16 @@ protected override bool TryDecryptCbcCore( PaddingMode paddingMode, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: false, paddingMode, CipherMode.CBC, feedbackSizeInBits: 0); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -184,16 +184,16 @@ protected override bool TryDecryptCfbCore( int feedbackSizeInBits, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: false, paddingMode, CipherMode.CFB, feedbackSizeInBits); - using (transform) + using (cipher) { - return transform.TransformOneShot(ciphertext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotDecrypt(cipher, paddingMode, ciphertext, destination, out bytesWritten); } } @@ -205,16 +205,16 @@ protected override bool TryEncryptCfbCore( int feedbackSizeInBits, out int bytesWritten) { - UniversalCryptoTransform transform = _core.CreateCryptoTransform( - iv: iv.ToArray(), + ILiteSymmetricCipher cipher = _core.CreateLiteSymmetricCipher( + iv, encrypting: true, paddingMode, CipherMode.CFB, feedbackSizeInBits); - using (transform) + using (cipher) { - return transform.TransformOneShot(plaintext, destination, out bytesWritten); + return UniversalCryptoOneShot.OneShotEncrypt(cipher, paddingMode, plaintext, destination, out bytesWritten); } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDesImplementation.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDesImplementation.cs index dfb681dc42519b..8add56937be4ba 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDesImplementation.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/TripleDesImplementation.cs @@ -47,13 +47,10 @@ public sealed override void GenerateKey() Key = RandomNumberGenerator.GetBytes(KeySize / BitsPerByte); } - private ICryptoTransform CreateTransform(byte[] rgbKey, byte[]? rgbIV, bool encrypting) + private ICryptoTransform CreateTransform(byte[] rgbKey!!, byte[]? rgbIV, bool encrypting) { // note: rgbIV is guaranteed to be cloned before this method, so no need to clone it again - if (rgbKey == null) - throw new ArgumentNullException(nameof(rgbKey)); - long keySize = rgbKey.Length * (long)BitsPerByte; if (keySize > int.MaxValue || !((int)keySize).IsLegalSize(LegalKeySizes)) throw new ArgumentException(SR.Cryptography_InvalidKeySize, nameof(rgbKey)); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateExtensionsCommon.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateExtensionsCommon.cs index 1476cea2d57f47..ceaba8195a80c0 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateExtensionsCommon.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateExtensionsCommon.cs @@ -8,13 +8,10 @@ namespace System.Security.Cryptography.X509Certificates internal static class CertificateExtensionsCommon { public static T? GetPublicKey( - this X509Certificate2 certificate, + this X509Certificate2 certificate!!, Predicate? matchesConstraints = null) where T : AsymmetricAlgorithm { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - string oidValue = GetExpectedOidValue(); PublicKey publicKey = certificate.PublicKey; Oid algorithmOid = publicKey.Oid; @@ -45,13 +42,10 @@ internal static class CertificateExtensionsCommon } public static T? GetPrivateKey( - this X509Certificate2 certificate, + this X509Certificate2 certificate!!, Predicate? matchesConstraints = null) where T : AsymmetricAlgorithm { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - string oidValue = GetExpectedOidValue(); if (!certificate.HasPrivateKey || oidValue != certificate.PublicKey.Oid.Value) return null; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs index 02061235b3935f..cf72e2f6239cbf 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/CertificateRequest.cs @@ -58,10 +58,8 @@ public sealed class CertificateRequest /// The hash algorithm to use when signing the certificate or certificate request. /// /// - public CertificateRequest(string subjectName, ECDsa key, HashAlgorithmName hashAlgorithm) + public CertificateRequest(string subjectName!!, ECDsa key!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(subjectName); - ArgumentNullException.ThrowIfNull(key); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); SubjectName = new X500DistinguishedName(subjectName); @@ -85,10 +83,8 @@ public CertificateRequest(string subjectName, ECDsa key, HashAlgorithmName hashA /// /// The hash algorithm to use when signing the certificate or certificate request. /// - public CertificateRequest(X500DistinguishedName subjectName, ECDsa key, HashAlgorithmName hashAlgorithm) + public CertificateRequest(X500DistinguishedName subjectName!!, ECDsa key!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(subjectName); - ArgumentNullException.ThrowIfNull(key); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); SubjectName = subjectName; @@ -180,10 +176,8 @@ public CertificateRequest( /// /// The hash algorithm to use when signing the certificate or certificate request. /// - public CertificateRequest(X500DistinguishedName subjectName, PublicKey publicKey, HashAlgorithmName hashAlgorithm) + public CertificateRequest(X500DistinguishedName subjectName!!, PublicKey publicKey!!, HashAlgorithmName hashAlgorithm) { - ArgumentNullException.ThrowIfNull(subjectName); - ArgumentNullException.ThrowIfNull(publicKey); ArgumentException.ThrowIfNullOrEmpty(hashAlgorithm.Name, nameof(hashAlgorithm)); SubjectName = subjectName; @@ -244,11 +238,8 @@ public byte[] CreateSigningRequest() /// /// A with which to sign the request. /// - public byte[] CreateSigningRequest(X509SignatureGenerator signatureGenerator) + public byte[] CreateSigningRequest(X509SignatureGenerator signatureGenerator!!) { - if (signatureGenerator == null) - throw new ArgumentNullException(nameof(signatureGenerator)); - X501Attribute[] attributes = Array.Empty(); if (CertificateExtensions.Count > 0) @@ -414,13 +405,11 @@ public X509Certificate2 Create( /// which does not accept a value. /// public X509Certificate2 Create( - X509Certificate2 issuerCertificate, + X509Certificate2 issuerCertificate!!, DateTimeOffset notBefore, DateTimeOffset notAfter, ReadOnlySpan serialNumber) { - if (issuerCertificate == null) - throw new ArgumentNullException(nameof(issuerCertificate)); if (!issuerCertificate.HasPrivateKey) throw new ArgumentException(SR.Cryptography_CertReq_IssuerRequiresPrivateKey, nameof(issuerCertificate)); if (notAfter < notBefore) @@ -592,16 +581,12 @@ public X509Certificate2 Create( /// has length 0. /// Any error occurs during the signing operation. public X509Certificate2 Create( - X500DistinguishedName issuerName, - X509SignatureGenerator generator, + X500DistinguishedName issuerName!!, + X509SignatureGenerator generator!!, DateTimeOffset notBefore, DateTimeOffset notAfter, ReadOnlySpan serialNumber) { - if (issuerName == null) - throw new ArgumentNullException(nameof(issuerName)); - if (generator == null) - throw new ArgumentNullException(nameof(generator)); if (notAfter < notBefore) throw new ArgumentException(SR.Cryptography_CertReq_DatesReversed); if (serialNumber == null || serialNumber.Length < 1) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs index ac63e7062228d0..62c0ca791c00ee 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/DSACertificateExtensions.cs @@ -30,13 +30,8 @@ public static class DSACertificateExtensions return certificate.GetPrivateKey(); } - public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, DSA privateKey) + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate!!, DSA privateKey!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (privateKey == null) - throw new ArgumentNullException(nameof(privateKey)); - if (certificate.HasPrivateKey) throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs index 8694dc25423a26..f41048bf494c91 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/ECDsaCertificateExtensions.cs @@ -27,13 +27,8 @@ public static class ECDsaCertificateExtensions return certificate.GetPrivateKey(cert => HasECDsaKeyUsage(cert)); } - public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, ECDsa privateKey) + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate!!, ECDsa privateKey!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (privateKey == null) - throw new ArgumentNullException(nameof(privateKey)); - if (certificate.HasPrivateKey) throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/FindPal.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/FindPal.cs index d62a967df7959c..15ec8ad9cae654 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/FindPal.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/FindPal.cs @@ -214,11 +214,8 @@ private static X509KeyUsageFlags ConfirmedX509KeyUsage(object findValue) // Enforce that no dot starts or ends the Oid, and disallow double dots. // Enforce there is at least one dot separator. // - internal static void ValidateOidValue(string keyValue) + internal static void ValidateOidValue(string keyValue!!) { - if (keyValue == null) - throw new ArgumentNullException(nameof(keyValue)); - int len = keyValue.Length; if (len < 2) throw new ArgumentException(SR.Argument_InvalidOidValue); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs index ae14cc735a48f3..3d2667c7c335e9 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs10CertificationRequestInfo.cs @@ -18,15 +18,10 @@ internal sealed class Pkcs10CertificationRequestInfo internal Collection Attributes { get; } = new Collection(); internal Pkcs10CertificationRequestInfo( - X500DistinguishedName subject, - PublicKey publicKey, + X500DistinguishedName subject!!, + PublicKey publicKey!!, IEnumerable attributes) { - if (subject == null) - throw new ArgumentNullException(nameof(subject)); - if (publicKey == null) - throw new ArgumentNullException(nameof(publicKey)); - Subject = subject; PublicKey = publicKey; diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs index da648c7c5edf9a..7ecc5f499c31a0 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/Pkcs9ExtensionRequest.cs @@ -14,11 +14,8 @@ internal Pkcs9ExtensionRequest(IEnumerable extensions) { } - private static byte[] EncodeAttribute(IEnumerable extensions) + private static byte[] EncodeAttribute(IEnumerable extensions!!) { - if (extensions == null) - throw new ArgumentNullException(nameof(extensions)); - AsnWriter writer = new AsnWriter(AsnEncodingRules.DER); using (writer.PushSequence()) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs index f88157eec37d4b..1aa566f2020d6e 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/RSACertificateExtensions.cs @@ -27,13 +27,8 @@ public static class RSACertificateExtensions return certificate.GetPrivateKey(); } - public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate, RSA privateKey) + public static X509Certificate2 CopyWithPrivateKey(this X509Certificate2 certificate!!, RSA privateKey!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (privateKey == null) - throw new ArgumentNullException(nameof(privateKey)); - if (certificate.HasPrivateKey) throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs index 099245168b6d1c..eb1e69c34ceedc 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/SubjectAlternativeNameBuilder.cs @@ -33,19 +33,13 @@ public void AddDnsName(string dnsName) AddGeneralName(new GeneralNameAsn { DnsName = s_idnMapping.GetAscii(dnsName) }); } - public void AddUri(Uri uri) + public void AddUri(Uri uri!!) { - if (uri == null) - throw new ArgumentNullException(nameof(uri)); - AddGeneralName(new GeneralNameAsn { Uri = uri.AbsoluteUri.ToString() }); } - public void AddIpAddress(IPAddress ipAddress) + public void AddIpAddress(IPAddress ipAddress!!) { - if (ipAddress == null) - throw new ArgumentNullException(nameof(ipAddress)); - AddGeneralName(new GeneralNameAsn { IPAddress = ipAddress.GetAddressBytes() }); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X500DistinguishedName.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X500DistinguishedName.cs index 0e8dc7efc9cab2..8ea61a2bcc00f9 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X500DistinguishedName.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X500DistinguishedName.cs @@ -69,10 +69,8 @@ public override string Format(bool multiLine) return X509Pal.Instance.X500DistinguishedNameFormat(RawData, multiLine); } - private static byte[] Encode(string distinguishedName, X500DistinguishedNameFlags flags) + private static byte[] Encode(string distinguishedName!!, X500DistinguishedNameFlags flags) { - if (distinguishedName == null) - throw new ArgumentNullException(nameof(distinguishedName)); ThrowIfInvalid(flags); return X509Pal.Instance.X500DistinguishedNameEncode(distinguishedName, flags); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate.cs index a17dbf0f21dd8a..6d9f3ad07d11ba 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate.cs @@ -156,11 +156,8 @@ public X509Certificate(string fileName, SecureString? password) } [UnsupportedOSPlatform("browser")] - public X509Certificate(string fileName, string? password, X509KeyStorageFlags keyStorageFlags) + public X509Certificate(string fileName!!, string? password, X509KeyStorageFlags keyStorageFlags) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -169,11 +166,8 @@ public X509Certificate(string fileName, string? password, X509KeyStorageFlags ke } } - private protected X509Certificate(string fileName, ReadOnlySpan password, X509KeyStorageFlags keyStorageFlags) + private protected X509Certificate(string fileName!!, ReadOnlySpan password, X509KeyStorageFlags keyStorageFlags) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -185,12 +179,9 @@ private protected X509Certificate(string fileName, ReadOnlySpan password, [UnsupportedOSPlatform("browser")] [CLSCompliantAttribute(false)] #pragma warning disable SYSLIB0026 - public X509Certificate(string fileName, SecureString? password, X509KeyStorageFlags keyStorageFlags) : this() + public X509Certificate(string fileName!!, SecureString? password, X509KeyStorageFlags keyStorageFlags) : this() #pragma warning restore SYSLIB0026 { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -200,11 +191,8 @@ public X509Certificate(string fileName, SecureString? password, X509KeyStorageFl } [UnsupportedOSPlatform("browser")] - public X509Certificate(X509Certificate cert) + public X509Certificate(X509Certificate cert!!) { - if (cert == null) - throw new ArgumentNullException(nameof(cert)); - if (cert.Pal != null) { Pal = CertificatePal.FromOtherCert(cert); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs index 0de268a2d60c1c..9bfe38e89d7487 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs @@ -429,11 +429,8 @@ public static X509ContentType GetCertContentType(ReadOnlySpan rawData) } [UnsupportedOSPlatform("browser")] - public static X509ContentType GetCertContentType(string fileName) + public static X509ContentType GetCertContentType(string fileName!!) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - // .NET Framework compat: The .NET Framework expands the filename to a full path for the purpose of performing a CAS permission check. While CAS is not present here, // we still need to call GetFullPath() so we get the same exception behavior if the fileName is bad. _ = Path.GetFullPath(fileName); @@ -768,11 +765,8 @@ public bool Verify() /// The specified private key doesn't match the public key for this certificate. /// /// - public X509Certificate2 CopyWithPrivateKey(ECDiffieHellman privateKey) + public X509Certificate2 CopyWithPrivateKey(ECDiffieHellman privateKey!!) { - if (privateKey is null) - throw new ArgumentNullException(nameof(privateKey)); - if (HasPrivateKey) throw new InvalidOperationException(SR.Cryptography_Cert_AlreadyHasPrivateKey); @@ -849,11 +843,8 @@ public X509Certificate2 CopyWithPrivateKey(ECDiffieHellman privateKey) /// /// [UnsupportedOSPlatform("browser")] - public static X509Certificate2 CreateFromPemFile(string certPemFilePath, string? keyPemFilePath = default) + public static X509Certificate2 CreateFromPemFile(string certPemFilePath!!, string? keyPemFilePath = default) { - if (certPemFilePath is null) - throw new ArgumentNullException(nameof(certPemFilePath)); - ReadOnlySpan certContents = File.ReadAllText(certPemFilePath); ReadOnlySpan keyContents = keyPemFilePath is null ? certContents : File.ReadAllText(keyPemFilePath); @@ -916,11 +907,8 @@ public static X509Certificate2 CreateFromPemFile(string certPemFilePath, string? /// /// [UnsupportedOSPlatform("browser")] - public static X509Certificate2 CreateFromEncryptedPemFile(string certPemFilePath, ReadOnlySpan password, string? keyPemFilePath = default) + public static X509Certificate2 CreateFromEncryptedPemFile(string certPemFilePath!!, ReadOnlySpan password, string? keyPemFilePath = default) { - if (certPemFilePath is null) - throw new ArgumentNullException(nameof(certPemFilePath)); - ReadOnlySpan certContents = File.ReadAllText(certPemFilePath); ReadOnlySpan keyContents = keyPemFilePath is null ? certContents : File.ReadAllText(keyPemFilePath); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2Collection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2Collection.cs index 314715e3764603..0fad31798f3b5b 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2Collection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2Collection.cs @@ -44,19 +44,13 @@ public X509Certificate2Collection(X509Certificate2Collection certificates) } } - public int Add(X509Certificate2 certificate) + public int Add(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - return base.Add(certificate); } - public void AddRange(X509Certificate2[] certificates) + public void AddRange(X509Certificate2[] certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { @@ -75,11 +69,8 @@ public void AddRange(X509Certificate2[] certificates) } } - public void AddRange(X509Certificate2Collection certificates) + public void AddRange(X509Certificate2Collection certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { @@ -121,11 +112,8 @@ public bool Contains(X509Certificate2 certificate) } } - public X509Certificate2Collection Find(X509FindType findType, object findValue, bool validOnly) + public X509Certificate2Collection Find(X509FindType findType, object findValue!!, bool validOnly) { - if (findValue == null) - throw new ArgumentNullException(nameof(findValue)); - return FindPal.FindFromCollection(this, findType, findValue, validOnly); } @@ -136,11 +124,8 @@ public X509Certificate2Collection Find(X509FindType findType, object findValue, IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - public void Import(byte[] rawData) + public void Import(byte[] rawData!!) { - if (rawData == null) - throw new ArgumentNullException(nameof(rawData)); - Import(rawData.AsSpan()); } @@ -155,11 +140,8 @@ public void Import(ReadOnlySpan rawData) Import(rawData, password: null, keyStorageFlags: X509KeyStorageFlags.DefaultKeySet); } - public void Import(byte[] rawData, string? password, X509KeyStorageFlags keyStorageFlags = 0) + public void Import(byte[] rawData!!, string? password, X509KeyStorageFlags keyStorageFlags = 0) { - if (rawData == null) - throw new ArgumentNullException(nameof(rawData)); - Import(rawData.AsSpan(), password.AsSpan(), keyStorageFlags); } @@ -194,9 +176,6 @@ public void Import(ReadOnlySpan rawData, string? password, X509KeyStorageF /// public void Import(ReadOnlySpan rawData, ReadOnlySpan password, X509KeyStorageFlags keyStorageFlags = 0) { - if (rawData == null) - throw new ArgumentNullException(nameof(rawData)); - X509Certificate.ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -211,11 +190,8 @@ public void Import(string fileName) Import(fileName, password: null, keyStorageFlags: X509KeyStorageFlags.DefaultKeySet); } - public void Import(string fileName, string? password, X509KeyStorageFlags keyStorageFlags = 0) + public void Import(string fileName!!, string? password, X509KeyStorageFlags keyStorageFlags = 0) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - X509Certificate.ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -237,11 +213,8 @@ public void Import(string fileName, string? password, X509KeyStorageFlags keySto /// /// A bitwise combination of the enumeration values that control where and how to import the certificate. /// - public void Import(string fileName, ReadOnlySpan password, X509KeyStorageFlags keyStorageFlags = 0) + public void Import(string fileName!!, ReadOnlySpan password, X509KeyStorageFlags keyStorageFlags = 0) { - if (fileName == null) - throw new ArgumentNullException(nameof(fileName)); - X509Certificate.ValidateKeyStorageFlags(keyStorageFlags); using (var safePasswordHandle = new SafePasswordHandle(password)) @@ -251,27 +224,18 @@ public void Import(string fileName, ReadOnlySpan password, X509KeyStorageF } } - public void Insert(int index, X509Certificate2 certificate) + public void Insert(int index, X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - base.Insert(index, certificate); } - public void Remove(X509Certificate2 certificate) + public void Remove(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - base.Remove(certificate); } - public void RemoveRange(X509Certificate2[] certificates) + public void RemoveRange(X509Certificate2[] certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { @@ -290,11 +254,8 @@ public void RemoveRange(X509Certificate2[] certificates) } } - public void RemoveRange(X509Certificate2Collection certificates) + public void RemoveRange(X509Certificate2Collection certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { @@ -338,11 +299,8 @@ public void RemoveRange(X509Certificate2Collection certificates) /// /// is . /// - public void ImportFromPemFile(string certPemFilePath) + public void ImportFromPemFile(string certPemFilePath!!) { - if (certPemFilePath is null) - throw new ArgumentNullException(nameof(certPemFilePath)); - ReadOnlySpan contents = System.IO.File.ReadAllText(certPemFilePath); ImportFromPem(contents); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateCollection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateCollection.cs index 0cca2b037b6c85..2e61f208423d3c 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateCollection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateCollection.cs @@ -30,8 +30,7 @@ public X509Certificate this[int index] } set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); List[index] = value; } @@ -42,22 +41,16 @@ public int Add(X509Certificate value) return List.Add(value); } - public void AddRange(X509Certificate[] value) + public void AddRange(X509Certificate[] value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - for (int i = 0; i < value.Length; i++) { Add(value[i]); } } - public void AddRange(X509CertificateCollection value) + public void AddRange(X509CertificateCollection value!!) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - for (int i = 0; i < value.Count; i++) { Add(value[i]); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateEnumerator.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateEnumerator.cs index 2ee88458f8c7be..c99e74abd1d4fd 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateEnumerator.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509CertificateEnumerator.cs @@ -11,11 +11,8 @@ public class X509CertificateEnumerator : IEnumerator { private readonly IEnumerator _enumerator; - public X509CertificateEnumerator(X509CertificateCollection mappings) + public X509CertificateEnumerator(X509CertificateCollection mappings!!) { - if (mappings == null) - throw new ArgumentNullException(nameof(mappings)); - _enumerator = ((IEnumerable)mappings).GetEnumerator(); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Chain.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Chain.cs index 03cd945bd03cfa..3472a943c9e1bb 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Chain.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Chain.cs @@ -57,8 +57,7 @@ public X509ChainPolicy ChainPolicy } set { - if (value == null) - throw new ArgumentNullException(nameof(value)); + ArgumentNullException.ThrowIfNull(value); _chainPolicy = value; } } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ChainElementCollection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ChainElementCollection.cs index 19f80241b0c897..b7a703b8f28d01 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ChainElementCollection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ChainElementCollection.cs @@ -55,10 +55,8 @@ public void CopyTo(X509ChainElement[] array, int index) ((ICollection)this).CopyTo(array, index); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509EnhancedKeyUsageExtension.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509EnhancedKeyUsageExtension.cs index 5f7de6941e23e7..5e7b3b42f99bb1 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509EnhancedKeyUsageExtension.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509EnhancedKeyUsageExtension.cs @@ -44,10 +44,8 @@ public override void CopyFrom(AsnEncodedData asnEncodedData) _decoded = false; } - private static byte[] EncodeExtension(OidCollection enhancedKeyUsages) + private static byte[] EncodeExtension(OidCollection enhancedKeyUsages!!) { - if (enhancedKeyUsages == null) - throw new ArgumentNullException(nameof(enhancedKeyUsages)); return X509Pal.Instance.EncodeX509EnhancedKeyUsageExtension(enhancedKeyUsages); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Extension.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Extension.cs index 617b42fd38c612..1b4dd42ceb4bef 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Extension.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Extension.cs @@ -17,8 +17,8 @@ public X509Extension(AsnEncodedData encodedExtension, bool critical) { } - public X509Extension(Oid oid, byte[] rawData, bool critical) - : this(oid, rawData.AsSpanParameter(nameof(rawData)), critical) + public X509Extension(Oid oid, byte[] rawData!!, bool critical) + : this(oid, (ReadOnlySpan)rawData, critical) { } @@ -70,11 +70,8 @@ public X509Extension(string oid, ReadOnlySpan rawData, bool critical) public bool Critical { get; set; } - public override void CopyFrom(AsnEncodedData asnEncodedData) + public override void CopyFrom(AsnEncodedData asnEncodedData!!) { - if (asnEncodedData == null) - throw new ArgumentNullException(nameof(asnEncodedData)); - X509Extension? extension = asnEncodedData as X509Extension; if (extension == null) throw new ArgumentException(SR.Cryptography_X509_ExtensionMismatch); diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ExtensionCollection.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ExtensionCollection.cs index bbf1b300c8602b..d564b065fcb572 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ExtensionCollection.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509ExtensionCollection.cs @@ -62,10 +62,8 @@ public X509Extension? this[string oid] } } - public int Add(X509Extension extension) + public int Add(X509Extension extension!!) { - if (extension == null) - throw new ArgumentNullException(nameof(extension)); _list.Add(extension); return _list.Count - 1; } @@ -75,10 +73,8 @@ public void CopyTo(X509Extension[] array, int index) ((ICollection)this).CopyTo(array, index); } - void ICollection.CopyTo(Array array, int index) + void ICollection.CopyTo(Array array!!, int index) { - if (array == null) - throw new ArgumentNullException(nameof(array)); if (array.Rank != 1) throw new ArgumentException(SR.Arg_RankMultiDimNotSupported); if (index < 0 || index >= array.Length) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs index b3fcc34330f11c..ddf1962d7ec937 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SignatureGenerator.cs @@ -24,21 +24,13 @@ public PublicKey PublicKey public abstract byte[] SignData(byte[] data, HashAlgorithmName hashAlgorithm); protected abstract PublicKey BuildPublicKey(); - public static X509SignatureGenerator CreateForECDsa(ECDsa key) + public static X509SignatureGenerator CreateForECDsa(ECDsa key!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - return new ECDsaX509SignatureGenerator(key); } - public static X509SignatureGenerator CreateForRSA(RSA key, RSASignaturePadding signaturePadding) + public static X509SignatureGenerator CreateForRSA(RSA key!!, RSASignaturePadding signaturePadding!!) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - if (signaturePadding == null) - throw new ArgumentNullException(nameof(signaturePadding)); - if (signaturePadding == RSASignaturePadding.Pkcs1) return new RSAPkcs1X509SignatureGenerator(key); if (signaturePadding.Mode == RSASignaturePaddingMode.Pss) diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Store.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Store.cs index d97ead09424f14..076e88d8fdc25d 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Store.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Store.cs @@ -126,11 +126,8 @@ public bool IsOpen get { return _storePal != null; } } - public void Add(X509Certificate2 certificate) + public void Add(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (_storePal == null) throw new CryptographicException(SR.Cryptography_X509_StoreNotOpen); @@ -140,11 +137,8 @@ public void Add(X509Certificate2 certificate) _storePal.Add(certificate.Pal); } - public void AddRange(X509Certificate2Collection certificates) + public void AddRange(X509Certificate2Collection certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { @@ -166,11 +160,8 @@ public void AddRange(X509Certificate2Collection certificates) } } - public void Remove(X509Certificate2 certificate) + public void Remove(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); - if (_storePal == null) throw new CryptographicException(SR.Cryptography_X509_StoreNotOpen); @@ -180,11 +171,8 @@ public void Remove(X509Certificate2 certificate) _storePal.Remove(certificate.Pal); } - public void RemoveRange(X509Certificate2Collection certificates) + public void RemoveRange(X509Certificate2Collection certificates!!) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); - int i = 0; try { diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SubjectKeyIdentifierExtension.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SubjectKeyIdentifierExtension.cs index 1d239cf58fee57..32e56d628e8861 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SubjectKeyIdentifierExtension.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509SubjectKeyIdentifierExtension.cs @@ -19,8 +19,8 @@ public X509SubjectKeyIdentifierExtension(AsnEncodedData encodedSubjectKeyIdentif { } - public X509SubjectKeyIdentifierExtension(byte[] subjectKeyIdentifier, bool critical) - : this(subjectKeyIdentifier.AsSpanParameter(nameof(subjectKeyIdentifier)), critical) + public X509SubjectKeyIdentifierExtension(byte[] subjectKeyIdentifier!!, bool critical) + : this((ReadOnlySpan)subjectKeyIdentifier, critical) { } @@ -73,20 +73,14 @@ private static byte[] EncodeExtension(ReadOnlySpan subjectKeyIdentifier) return X509Pal.Instance.EncodeX509SubjectKeyIdentifierExtension(subjectKeyIdentifier); } - private static byte[] EncodeExtension(string subjectKeyIdentifier) + private static byte[] EncodeExtension(string subjectKeyIdentifier!!) { - if (subjectKeyIdentifier == null) - throw new ArgumentNullException(nameof(subjectKeyIdentifier)); - byte[] subjectKeyIdentifiedBytes = subjectKeyIdentifier.LaxDecodeHexString(); return EncodeExtension(subjectKeyIdentifiedBytes); } - private static byte[] EncodeExtension(PublicKey key, X509SubjectKeyIdentifierHashAlgorithm algorithm) + private static byte[] EncodeExtension(PublicKey key!!, X509SubjectKeyIdentifierHashAlgorithm algorithm) { - if (key == null) - throw new ArgumentNullException(nameof(key)); - byte[] subjectKeyIdentifier = GenerateSubjectKeyIdentifierFromPublicKey(key, algorithm); return EncodeExtension(subjectKeyIdentifier); } diff --git a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/XmlKeyHelper.cs b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/XmlKeyHelper.cs index cb15f49730e263..465d7495881fe0 100644 --- a/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/XmlKeyHelper.cs +++ b/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/XmlKeyHelper.cs @@ -12,13 +12,8 @@ namespace System.Security.Cryptography { internal static class XmlKeyHelper { - internal static ParseState ParseDocument(string xmlString) + internal static ParseState ParseDocument(string xmlString!!) { - if (xmlString == null) - { - throw new ArgumentNullException(nameof(xmlString)); - } - try { return ParseState.ParseDocument(xmlString); diff --git a/src/libraries/System.Security.Permissions/src/System/Security/Permissions/PrincipalPermission.cs b/src/libraries/System.Security.Permissions/src/System/Security/Permissions/PrincipalPermission.cs index c9e0e7690389b4..64b4116e6f85c3 100644 --- a/src/libraries/System.Security.Permissions/src/System/Security/Permissions/PrincipalPermission.cs +++ b/src/libraries/System.Security.Permissions/src/System/Security/Permissions/PrincipalPermission.cs @@ -268,11 +268,8 @@ public SecurityElement ToXml() return root; } - public void FromXml(SecurityElement elem) + public void FromXml(SecurityElement elem!!) { - if (elem == null) - throw new ArgumentNullException(nameof(elem)); - if (elem.Tag == null || !elem.Tag.Equals("Permission") && !elem.Tag.Equals("IPermission")) throw new ArgumentException(SR.Argument_NotAPermissionElement); diff --git a/src/libraries/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj b/src/libraries/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj index 831490db6c4975..f99bbc68881419 100644 --- a/src/libraries/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj +++ b/src/libraries/System.Security.Principal.Windows/src/System.Security.Principal.Windows.csproj @@ -24,6 +24,8 @@ + .IsReadOnly } } - public void Add(IdentityReference identity) + public void Add(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - _identities.Add(identity); } - public bool Remove(IdentityReference identity) + public bool Remove(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - if (Contains(identity)) { return _identities.Remove(identity); @@ -96,13 +86,8 @@ public void Clear() _identities.Clear(); } - public bool Contains(IdentityReference identity) + public bool Contains(IdentityReference identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } - return _identities.Contains(identity); } @@ -133,10 +118,7 @@ public IdentityReference this[int index] set { - if (value is null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); _identities[index] = value; } } @@ -154,13 +136,8 @@ public IdentityReferenceCollection Translate(Type targetType) return Translate(targetType, false); } - public IdentityReferenceCollection Translate(Type targetType, bool forceSuccess) + public IdentityReferenceCollection Translate(Type targetType!!, bool forceSuccess) { - if (targetType == null) - { - throw new ArgumentNullException(nameof(targetType)); - } - // // Target type must be a subclass of IdentityReference // @@ -394,12 +371,8 @@ internal sealed class IdentityReferenceEnumerator : IEnumerator(sourceContext.SourceName, TOKEN_SOURCE.TOKEN_SOURCE_LENGTH)); + } - if (sUserPrincipalName == null) - throw new ArgumentNullException(nameof(sUserPrincipalName)); + ArgumentNullException.ThrowIfNull(sUserPrincipalName); byte[] upnBytes = Encoding.Unicode.GetBytes(sUserPrincipalName); if (upnBytes.Length > ushort.MaxValue) @@ -179,13 +177,13 @@ public WindowsIdentity(string sUserPrincipalName) int ntStatus = Interop.SspiCli.LsaLogonUser( lsaHandle, - ref lsaOriginName, + lsaOriginName, SECURITY_LOGON_TYPE.Network, packageId, authenticationInfo.DangerousGetHandle(), authenticationInfoLength, IntPtr.Zero, - ref sourceContext, + sourceContext, out SafeLsaReturnBufferHandle profileBuffer, out int profileBufferLength, out LUID logonId, @@ -680,20 +678,14 @@ public virtual IntPtr Token // Public methods. // - public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action) + public static void RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Action action!!) { - if (action == null) - throw new ArgumentNullException(nameof(action)); - RunImpersonatedInternal(safeAccessTokenHandle, action); } - public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func) + public static T RunImpersonated(SafeAccessTokenHandle safeAccessTokenHandle, Func func!!) { - if (func == null) - throw new ArgumentNullException(nameof(func)); - T result = default!; RunImpersonatedInternal(safeAccessTokenHandle, () => result = func()); return result; @@ -922,12 +914,8 @@ private static Interop.LUID GetLogonAuthId(SafeAccessTokenHandle safeTokenHandle return safeLocalAllocHandle; } - private static string? GetAuthType(WindowsIdentity identity) + private static string? GetAuthType(WindowsIdentity identity!!) { - if (identity == null) - { - throw new ArgumentNullException(nameof(identity)); - } return identity._authType; } diff --git a/src/libraries/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs b/src/libraries/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs index ea6011b3f443c1..e61a27e7b08612 100644 --- a/src/libraries/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs +++ b/src/libraries/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs @@ -29,10 +29,10 @@ public class WindowsPrincipal : ClaimsPrincipal // Constructors. // - public WindowsPrincipal(WindowsIdentity ntIdentity) + public WindowsPrincipal(WindowsIdentity ntIdentity!!) : base(ntIdentity) { - _identity = ntIdentity ?? throw new ArgumentNullException(nameof(ntIdentity)); + _identity = ntIdentity; } // @@ -132,11 +132,8 @@ public virtual bool IsInRole(int rid) // The aforementioned overloads remain in this class since we do not want to introduce a // breaking change. However, this method should be used in all new applications. - public virtual bool IsInRole(SecurityIdentifier sid) + public virtual bool IsInRole(SecurityIdentifier sid!!) { - if (sid == null) - throw new ArgumentNullException(nameof(sid)); - // special case the anonymous identity. if (_identity.AccessToken.IsInvalid) return false; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10FeedFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10FeedFormatter.cs index 3549abab1161a7..149119c8202c62 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10FeedFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10FeedFormatter.cs @@ -35,12 +35,8 @@ public Atom10FeedFormatter() : this(typeof(SyndicationFeed)) { } - public Atom10FeedFormatter(Type feedTypeToCreate) : base() + public Atom10FeedFormatter(Type feedTypeToCreate!!) : base() { - if (feedTypeToCreate == null) - { - throw new ArgumentNullException(nameof(feedTypeToCreate)); - } if (!typeof(SyndicationFeed).IsAssignableFrom(feedTypeToCreate)) { throw new ArgumentException(SR.Format(SR.InvalidObjectTypePassed, nameof(feedTypeToCreate), nameof(SyndicationFeed)), nameof(feedTypeToCreate)); @@ -70,35 +66,20 @@ internal override TryParseDateTimeCallback GetDefaultDateTimeParser() protected Type FeedType { get; } - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(Atom10Constants.FeedTag, Atom10Constants.Atom10Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadFeed(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - WriteFeed(writer); } @@ -112,13 +93,8 @@ public override void ReadFrom(XmlReader reader) ReadFeed(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - writer.WriteStartElement(Atom10Constants.FeedTag, Atom10Constants.Atom10Namespace); WriteFeed(writer); writer.WriteEndElement(); @@ -493,33 +469,15 @@ internal void WriteLink(XmlWriter writer, SyndicationLink link, Uri baseUri) protected override SyndicationFeed CreateFeedInstance() => CreateFeedInstance(FeedType); - protected virtual SyndicationItem ReadItem(XmlReader reader, SyndicationFeed feed) + protected virtual SyndicationItem ReadItem(XmlReader reader!!, SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - SyndicationItem item = CreateItem(feed); ReadItemFrom(reader, item, feed.BaseUri); return item; } - protected virtual IEnumerable ReadItems(XmlReader reader, SyndicationFeed feed, out bool areAllItemsRead) + protected virtual IEnumerable ReadItems(XmlReader reader!!, SyndicationFeed feed!!, out bool areAllItemsRead) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - NullNotAllowedCollection items = new NullNotAllowedCollection(); while (reader.IsStartElement(Atom10Constants.EntryTag, Atom10Constants.Atom10Namespace)) { diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10ItemFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10ItemFormatter.cs index 85494e557f1435..97b31b6f09822d 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10ItemFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Atom10ItemFormatter.cs @@ -19,12 +19,8 @@ public Atom10ItemFormatter() : this(typeof(SyndicationItem)) { } - public Atom10ItemFormatter(Type itemTypeToCreate) : base() + public Atom10ItemFormatter(Type itemTypeToCreate!!) : base() { - if (itemTypeToCreate == null) - { - throw new ArgumentNullException(nameof(itemTypeToCreate)); - } if (!typeof(SyndicationItem).IsAssignableFrom(itemTypeToCreate)) { throw new ArgumentException(SR.Format(SR.InvalidObjectTypePassed, nameof(itemTypeToCreate), nameof(SyndicationItem)), nameof(itemTypeToCreate)); @@ -62,35 +58,20 @@ public bool PreserveElementExtensions protected Type ItemType { get; } - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(Atom10Constants.EntryTag, Atom10Constants.Atom10Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadItem(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - WriteItem(writer); } @@ -104,13 +85,8 @@ public override void ReadFrom(XmlReader reader) ReadItem(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - writer.WriteStartElement(Atom10Constants.EntryTag, Atom10Constants.Atom10Namespace); WriteItem(writer); writer.WriteEndElement(); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10CategoriesDocumentFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10CategoriesDocumentFormatter.cs index 65720a8c7be0bf..8c120f4be97e79 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10CategoriesDocumentFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10CategoriesDocumentFormatter.cs @@ -60,34 +60,20 @@ public AtomPub10CategoriesDocumentFormatter(CategoriesDocument documentToWrite) public override string Version => App10Constants.Namespace; - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(App10Constants.Categories, App10Constants.Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadDocument(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } if (Document == null) { throw new InvalidOperationException(SR.DocumentFormatterDoesNotHaveDocument); @@ -96,12 +82,8 @@ void IXmlSerializable.WriteXml(XmlWriter writer) WriteDocument(writer); } - public override void ReadFrom(XmlReader reader) + public override void ReadFrom(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } if (!CanRead(reader)) { throw new XmlException(SR.Format(SR.UnknownDocumentXml, reader.LocalName, reader.NamespaceURI)); @@ -110,12 +92,8 @@ public override void ReadFrom(XmlReader reader) ReadDocument(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } if (Document == null) { throw new InvalidOperationException(SR.DocumentFormatterDoesNotHaveDocument); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10ServiceDocumentFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10ServiceDocumentFormatter.cs index aec63b1949b0c9..9d80b98b2fdb1c 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10ServiceDocumentFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/AtomPub10ServiceDocumentFormatter.cs @@ -22,12 +22,8 @@ public AtomPub10ServiceDocumentFormatter() : this(typeof(ServiceDocument)) { } - public AtomPub10ServiceDocumentFormatter(Type documentTypeToCreate) : base() + public AtomPub10ServiceDocumentFormatter(Type documentTypeToCreate!!) : base() { - if (documentTypeToCreate == null) - { - throw new ArgumentNullException(nameof(documentTypeToCreate)); - } if (!typeof(ServiceDocument).IsAssignableFrom(documentTypeToCreate)) { throw new ArgumentException(SR.Format(SR.InvalidObjectTypePassed, nameof(documentTypeToCreate), nameof(ServiceDocument)), nameof(documentTypeToCreate)); @@ -45,34 +41,20 @@ public AtomPub10ServiceDocumentFormatter(ServiceDocument documentToWrite) : base public override string Version => App10Constants.Namespace; - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(App10Constants.Service, App10Constants.Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadDocument(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } if (Document == null) { throw new InvalidOperationException(SR.DocumentFormatterDoesNotHaveDocument); @@ -81,13 +63,8 @@ void IXmlSerializable.WriteXml(XmlWriter writer) WriteDocument(writer); } - public override void ReadFrom(XmlReader reader) + public override void ReadFrom(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - reader.MoveToContent(); if (!CanRead(reader)) { @@ -97,12 +74,8 @@ public override void ReadFrom(XmlReader reader) ReadDocument(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } if (Document == null) { throw new InvalidOperationException(SR.DocumentFormatterDoesNotHaveDocument); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/CategoriesDocumentFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/CategoriesDocumentFormatter.cs index a2616f8f6ecb96..f0c4c72796b426 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/CategoriesDocumentFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/CategoriesDocumentFormatter.cs @@ -15,9 +15,9 @@ protected CategoriesDocumentFormatter() { } - protected CategoriesDocumentFormatter(CategoriesDocument documentToWrite) + protected CategoriesDocumentFormatter(CategoriesDocument documentToWrite!!) { - _document = documentToWrite ?? throw new ArgumentNullException(nameof(documentToWrite)); + _document = documentToWrite; } public CategoriesDocument Document => _document; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ExtensibleSyndicationObject.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ExtensibleSyndicationObject.cs index 318b0014f45f5b..d31e5d5319b901 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ExtensibleSyndicationObject.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ExtensibleSyndicationObject.cs @@ -63,12 +63,8 @@ private static XmlBuffer CreateXmlBuffer(XmlDictionaryReader unparsedExtensionsR return buffer; } - internal void LoadElementExtensions(XmlReader readerOverUnparsedExtensions, int maxExtensionSize) + internal void LoadElementExtensions(XmlReader readerOverUnparsedExtensions!!, int maxExtensionSize) { - if (readerOverUnparsedExtensions == null) - { - throw new ArgumentNullException(nameof(readerOverUnparsedExtensions)); - } if (maxExtensionSize < 0) { throw new ArgumentOutOfRangeException(nameof(maxExtensionSize)); @@ -84,13 +80,8 @@ internal void LoadElementExtensions(XmlBuffer buffer) _elementExtensions = new SyndicationElementExtensionCollection(buffer); } - internal void WriteAttributeExtensions(XmlWriter writer) + internal void WriteAttributeExtensions(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_attributeExtensions != null) { foreach (XmlQualifiedName qname in _attributeExtensions.Keys) @@ -101,13 +92,8 @@ internal void WriteAttributeExtensions(XmlWriter writer) } } - internal void WriteElementExtensions(XmlWriter writer, Func shouldSkipElement = null) + internal void WriteElementExtensions(XmlWriter writer!!, Func shouldSkipElement = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_elementExtensions != null) { _elementExtensions.WriteTo(writer, shouldSkipElement); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/NullNotAllowedCollection.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/NullNotAllowedCollection.cs index 0bed469263e6a2..d20e5f50114f3a 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/NullNotAllowedCollection.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/NullNotAllowedCollection.cs @@ -11,23 +11,13 @@ public NullNotAllowedCollection() : base() { } - protected override void InsertItem(int index, TCollectionItem item) + protected override void InsertItem(int index, TCollectionItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.InsertItem(index, item); } - protected override void SetItem(int index, TCollectionItem item) + protected override void SetItem(int index, TCollectionItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.SetItem(index, item); } } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ReferencedCategoriesDocument.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ReferencedCategoriesDocument.cs index bc27065e93adfe..3112de805bf7dc 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ReferencedCategoriesDocument.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ReferencedCategoriesDocument.cs @@ -9,9 +9,9 @@ public ReferencedCategoriesDocument() { } - public ReferencedCategoriesDocument(Uri link) : base() + public ReferencedCategoriesDocument(Uri link!!) : base() { - Link = link ?? throw new ArgumentNullException(nameof(link)); + Link = link; } public Uri Link { get; set; } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ResourceCollectionInfo.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ResourceCollectionInfo.cs index d4bfc6e7f48e08..6bed1833f1311a 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ResourceCollectionInfo.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ResourceCollectionInfo.cs @@ -31,10 +31,10 @@ public ResourceCollectionInfo(TextSyndicationContent title, Uri link, IEnumerabl { } - public ResourceCollectionInfo(TextSyndicationContent title, Uri link, IEnumerable categories, IEnumerable accepts) + public ResourceCollectionInfo(TextSyndicationContent title!!, Uri link!!, IEnumerable categories, IEnumerable accepts) { - Title = title ?? throw new ArgumentNullException(nameof(title)); - Link = link ?? throw new ArgumentNullException(nameof(link)); + Title = title; + Link = link; if (categories != null) { diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20FeedFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20FeedFormatter.cs index eae365c0c67d29..8dc06df483cfb2 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20FeedFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20FeedFormatter.cs @@ -30,12 +30,8 @@ public Rss20FeedFormatter() : this(typeof(SyndicationFeed)) { } - public Rss20FeedFormatter(Type feedTypeToCreate) : base() + public Rss20FeedFormatter(Type feedTypeToCreate!!) : base() { - if (feedTypeToCreate == null) - { - throw new ArgumentNullException(nameof(feedTypeToCreate)); - } if (!typeof(SyndicationFeed).IsAssignableFrom(feedTypeToCreate)) { throw new ArgumentException(SR.Format(SR.InvalidObjectTypePassed, nameof(feedTypeToCreate), nameof(SyndicationFeed)), nameof(feedTypeToCreate)); @@ -72,35 +68,20 @@ public Rss20FeedFormatter(SyndicationFeed feedToWrite, bool serializeExtensionsA protected Type FeedType { get; } - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(Rss20Constants.RssTag, Rss20Constants.Rss20Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadFeed(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - WriteFeed(writer); } @@ -114,13 +95,8 @@ public override void ReadFrom(XmlReader reader) ReadFeed(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - writer.WriteStartElement(Rss20Constants.RssTag, Rss20Constants.Rss20Namespace); WriteFeed(writer); writer.WriteEndElement(); @@ -144,33 +120,15 @@ internal void WriteItemContents(XmlWriter writer, SyndicationItem item) protected override SyndicationFeed CreateFeedInstance() => CreateFeedInstance(FeedType); - protected virtual SyndicationItem ReadItem(XmlReader reader, SyndicationFeed feed) + protected virtual SyndicationItem ReadItem(XmlReader reader!!, SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - SyndicationItem item = CreateItem(feed); ReadItemFrom(reader, item, feed.BaseUri); return item; } - protected virtual IEnumerable ReadItems(XmlReader reader, SyndicationFeed feed, out bool areAllItemsRead) + protected virtual IEnumerable ReadItems(XmlReader reader!!, SyndicationFeed feed!!, out bool areAllItemsRead) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - NullNotAllowedCollection items = new NullNotAllowedCollection(); while (reader.IsStartElement(Rss20Constants.ItemTag, Rss20Constants.Rss20Namespace)) { diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20ItemFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20ItemFormatter.cs index 015315700ad0ae..b29f46d382968c 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20ItemFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/Rss20ItemFormatter.cs @@ -20,12 +20,8 @@ public Rss20ItemFormatter() : this(typeof(SyndicationItem)) { } - public Rss20ItemFormatter(Type itemTypeToCreate) : base() + public Rss20ItemFormatter(Type itemTypeToCreate!!) : base() { - if (itemTypeToCreate == null) - { - throw new ArgumentNullException(nameof(itemTypeToCreate)); - } if (!typeof(SyndicationItem).IsAssignableFrom(itemTypeToCreate)) { throw new ArgumentException(SR.Format(SR.InvalidObjectTypePassed, nameof(itemTypeToCreate), nameof(SyndicationItem)), nameof(itemTypeToCreate)); @@ -85,35 +81,20 @@ public bool SerializeExtensionsAsAtom protected Type ItemType { get; } - public override bool CanRead(XmlReader reader) + public override bool CanRead(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - return reader.IsStartElement(Rss20Constants.ItemTag, Rss20Constants.Rss20Namespace); } XmlSchema IXmlSerializable.GetSchema() => null; - void IXmlSerializable.ReadXml(XmlReader reader) + void IXmlSerializable.ReadXml(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - ReadItem(reader); } - void IXmlSerializable.WriteXml(XmlWriter writer) + void IXmlSerializable.WriteXml(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - WriteItem(writer); } @@ -127,13 +108,8 @@ public override void ReadFrom(XmlReader reader) ReadItem(reader); } - public override void WriteTo(XmlWriter writer) + public override void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - writer.WriteStartElement(Rss20Constants.ItemTag, Rss20Constants.Rss20Namespace); WriteItem(writer); writer.WriteEndElement(); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ServiceDocumentFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ServiceDocumentFormatter.cs index 495cd6f18f09e6..66319f9214a200 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ServiceDocumentFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/ServiceDocumentFormatter.cs @@ -16,9 +16,9 @@ protected ServiceDocumentFormatter() { } - protected ServiceDocumentFormatter(ServiceDocument documentToWrite) + protected ServiceDocumentFormatter(ServiceDocument documentToWrite!!) { - _document = documentToWrite ?? throw new ArgumentNullException(nameof(documentToWrite)); + _document = documentToWrite; } public ServiceDocument Document => _document; @@ -53,34 +53,19 @@ internal static void LoadElementExtensions(XmlBuffer buffer, XmlDictionaryWriter workspace.LoadElementExtensions(buffer); } - internal static void LoadElementExtensions(XmlBuffer buffer, XmlDictionaryWriter writer, ServiceDocument document) + internal static void LoadElementExtensions(XmlBuffer buffer, XmlDictionaryWriter writer, ServiceDocument document!!) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - SyndicationFeedFormatter.CloseBuffer(buffer, writer); document.LoadElementExtensions(buffer); } - protected static SyndicationCategory CreateCategory(InlineCategoriesDocument inlineCategories) + protected static SyndicationCategory CreateCategory(InlineCategoriesDocument inlineCategories!!) { - if (inlineCategories == null) - { - throw new ArgumentNullException(nameof(inlineCategories)); - } - return inlineCategories.CreateCategory(); } - protected static ResourceCollectionInfo CreateCollection(Workspace workspace) + protected static ResourceCollectionInfo CreateCollection(Workspace workspace!!) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - return workspace.CreateResourceCollection(); } @@ -94,213 +79,108 @@ protected static ReferencedCategoriesDocument CreateReferencedCategories(Resourc return collection.CreateReferencedCategoriesDocument(); } - protected static Workspace CreateWorkspace(ServiceDocument document) + protected static Workspace CreateWorkspace(ServiceDocument document!!) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - return document.CreateWorkspace(); } - protected static void LoadElementExtensions(XmlReader reader, CategoriesDocument categories, int maxExtensionSize) + protected static void LoadElementExtensions(XmlReader reader, CategoriesDocument categories!!, int maxExtensionSize) { - if (categories == null) - { - throw new ArgumentNullException(nameof(categories)); - } - categories.LoadElementExtensions(reader, maxExtensionSize); } - protected static void LoadElementExtensions(XmlReader reader, ResourceCollectionInfo collection, int maxExtensionSize) + protected static void LoadElementExtensions(XmlReader reader, ResourceCollectionInfo collection!!, int maxExtensionSize) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - collection.LoadElementExtensions(reader, maxExtensionSize); } - protected static void LoadElementExtensions(XmlReader reader, Workspace workspace, int maxExtensionSize) + protected static void LoadElementExtensions(XmlReader reader, Workspace workspace!!, int maxExtensionSize) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - workspace.LoadElementExtensions(reader, maxExtensionSize); } - protected static void LoadElementExtensions(XmlReader reader, ServiceDocument document, int maxExtensionSize) + protected static void LoadElementExtensions(XmlReader reader, ServiceDocument document!!, int maxExtensionSize) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - document.LoadElementExtensions(reader, maxExtensionSize); } - protected static bool TryParseAttribute(string name, string ns, string value, ServiceDocument document, string version) + protected static bool TryParseAttribute(string name, string ns, string value, ServiceDocument document!!, string version) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - return document.TryParseAttribute(name, ns, value, version); } - protected static bool TryParseAttribute(string name, string ns, string value, ResourceCollectionInfo collection, string version) + protected static bool TryParseAttribute(string name, string ns, string value, ResourceCollectionInfo collection!!, string version) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - return collection.TryParseAttribute(name, ns, value, version); } - protected static bool TryParseAttribute(string name, string ns, string value, CategoriesDocument categories, string version) + protected static bool TryParseAttribute(string name, string ns, string value, CategoriesDocument categories!!, string version) { - if (categories == null) - { - throw new ArgumentNullException(nameof(categories)); - } - return categories.TryParseAttribute(name, ns, value, version); } - protected static bool TryParseAttribute(string name, string ns, string value, Workspace workspace, string version) + protected static bool TryParseAttribute(string name, string ns, string value, Workspace workspace!!, string version) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - return workspace.TryParseAttribute(name, ns, value, version); } - protected static bool TryParseElement(XmlReader reader, ResourceCollectionInfo collection, string version) + protected static bool TryParseElement(XmlReader reader, ResourceCollectionInfo collection!!, string version) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - return collection.TryParseElement(reader, version); } - protected static bool TryParseElement(XmlReader reader, ServiceDocument document, string version) + protected static bool TryParseElement(XmlReader reader, ServiceDocument document!!, string version) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - return document.TryParseElement(reader, version); } - protected static bool TryParseElement(XmlReader reader, Workspace workspace, string version) + protected static bool TryParseElement(XmlReader reader, Workspace workspace!!, string version) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - return workspace.TryParseElement(reader, version); } - protected static bool TryParseElement(XmlReader reader, CategoriesDocument categories, string version) + protected static bool TryParseElement(XmlReader reader, CategoriesDocument categories!!, string version) { - if (categories == null) - { - throw new ArgumentNullException(nameof(categories)); - } - return categories.TryParseElement(reader, version); } - protected static void WriteAttributeExtensions(XmlWriter writer, ServiceDocument document, string version) + protected static void WriteAttributeExtensions(XmlWriter writer, ServiceDocument document!!, string version) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - document.WriteAttributeExtensions(writer, version); } - protected static void WriteAttributeExtensions(XmlWriter writer, Workspace workspace, string version) + protected static void WriteAttributeExtensions(XmlWriter writer, Workspace workspace!!, string version) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - workspace.WriteAttributeExtensions(writer, version); } - protected static void WriteAttributeExtensions(XmlWriter writer, ResourceCollectionInfo collection, string version) + protected static void WriteAttributeExtensions(XmlWriter writer, ResourceCollectionInfo collection!!, string version) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - collection.WriteAttributeExtensions(writer, version); } - protected static void WriteAttributeExtensions(XmlWriter writer, CategoriesDocument categories, string version) + protected static void WriteAttributeExtensions(XmlWriter writer, CategoriesDocument categories!!, string version) { - if (categories == null) - { - throw new ArgumentNullException(nameof(categories)); - } - categories.WriteAttributeExtensions(writer, version); } - protected static void WriteElementExtensions(XmlWriter writer, ServiceDocument document, string version) + protected static void WriteElementExtensions(XmlWriter writer, ServiceDocument document!!, string version) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - document.WriteElementExtensions(writer, version); } - protected static void WriteElementExtensions(XmlWriter writer, Workspace workspace, string version) + protected static void WriteElementExtensions(XmlWriter writer, Workspace workspace!!, string version) { - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - workspace.WriteElementExtensions(writer, version); } - protected static void WriteElementExtensions(XmlWriter writer, ResourceCollectionInfo collection, string version) + protected static void WriteElementExtensions(XmlWriter writer, ResourceCollectionInfo collection!!, string version) { - if (collection == null) - { - throw new ArgumentNullException(nameof(collection)); - } - collection.WriteElementExtensions(writer, version); } - protected static void WriteElementExtensions(XmlWriter writer, CategoriesDocument categories, string version) + protected static void WriteElementExtensions(XmlWriter writer, CategoriesDocument categories!!, string version) { - if (categories == null) - { - throw new ArgumentNullException(nameof(categories)); - } - categories.WriteElementExtensions(writer, version); } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationCategory.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationCategory.cs index f3df2e2b9e497b..0a25117ee8203e 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationCategory.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationCategory.cs @@ -26,13 +26,8 @@ public SyndicationCategory(string name, string scheme, string label) Label = label; } - protected SyndicationCategory(SyndicationCategory source) + protected SyndicationCategory(SyndicationCategory source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - Label = source.Label; Name = source.Name; Scheme = source.Scheme; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationContent.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationContent.cs index 52e281bf79a704..41d588b56e3f7c 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationContent.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationContent.cs @@ -67,12 +67,8 @@ public static XmlSyndicationContent CreateXmlContent(object xmlSerializerObject, public abstract SyndicationContent Clone(); - public void WriteTo(XmlWriter writer, string outerElementName, string outerElementNamespace) + public void WriteTo(XmlWriter writer!!, string outerElementName, string outerElementNamespace) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } if (string.IsNullOrEmpty(outerElementName)) { throw new ArgumentException(SR.OuterElementNameNotSpecified, nameof(outerElementName)); @@ -96,13 +92,8 @@ public void WriteTo(XmlWriter writer, string outerElementName, string outerEleme writer.WriteEndElement(); } - internal void CopyAttributeExtensions(SyndicationContent source) + internal void CopyAttributeExtensions(SyndicationContent source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (source._attributeExtensions != null) { foreach (XmlQualifiedName key in source._attributeExtensions.Keys) diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtension.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtension.cs index fc3822a860a50a..32c1855a92a1ac 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtension.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtension.cs @@ -19,13 +19,8 @@ public class SyndicationElementExtension private string _outerName; private string _outerNamespace; - public SyndicationElementExtension(XmlReader xmlReader) + public SyndicationElementExtension(XmlReader xmlReader!!) { - if (xmlReader == null) - { - throw new ArgumentNullException(nameof(xmlReader)); - } - SyndicationFeedFormatter.MoveToStartElement(xmlReader); _outerName = xmlReader.LocalName; _outerNamespace = xmlReader.NamespaceURI; @@ -55,12 +50,8 @@ public SyndicationElementExtension(string outerName, string outerNamespace, obje { } - public SyndicationElementExtension(string outerName, string outerNamespace, object dataContractExtension, XmlObjectSerializer dataContractSerializer) + public SyndicationElementExtension(string outerName, string outerNamespace, object dataContractExtension!!, XmlObjectSerializer dataContractSerializer) { - if (dataContractExtension == null) - { - throw new ArgumentNullException(nameof(dataContractExtension)); - } if (outerName == string.Empty) { throw new ArgumentException(SR.OuterNameOfElementExtensionEmpty, nameof(outerName)); @@ -76,13 +67,8 @@ public SyndicationElementExtension(string outerName, string outerNamespace, obje _extensionDataWriter = new ExtensionDataWriter(_extensionData, dataContractSerializer, _outerName, _outerNamespace); } - public SyndicationElementExtension(object xmlSerializerExtension, XmlSerializer serializer) + public SyndicationElementExtension(object xmlSerializerExtension!!, XmlSerializer serializer) { - if (xmlSerializerExtension == null) - { - throw new ArgumentNullException(nameof(xmlSerializerExtension)); - } - if (serializer == null) { serializer = new XmlSerializer(xmlSerializerExtension.GetType()); @@ -127,13 +113,8 @@ public string OuterNamespace public TExtension GetObject() => GetObject(new DataContractSerializer(typeof(TExtension))); - public TExtension GetObject(XmlObjectSerializer serializer) + public TExtension GetObject(XmlObjectSerializer serializer!!) { - if (serializer == null) - { - throw new ArgumentNullException(nameof(serializer)); - } - if (_extensionData != null && typeof(TExtension).IsAssignableFrom(_extensionData.GetType())) { return (TExtension)_extensionData; @@ -144,13 +125,8 @@ public TExtension GetObject(XmlObjectSerializer serializer) } } - public TExtension GetObject(XmlSerializer serializer) + public TExtension GetObject(XmlSerializer serializer!!) { - if (serializer == null) - { - throw new ArgumentNullException(nameof(serializer)); - } - if (_extensionData != null && typeof(TExtension).IsAssignableFrom(_extensionData.GetType())) { return (TExtension)_extensionData; @@ -179,13 +155,8 @@ public XmlReader GetReader() return reader; } - public void WriteTo(XmlWriter writer) + public void WriteTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_extensionDataWriter != null) { _extensionDataWriter.WriteTo(writer); diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtensionCollection.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtensionCollection.cs index 49cf23de699ef2..e99e7386b1e745 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtensionCollection.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationElementExtensionCollection.cs @@ -61,13 +61,8 @@ public void Add(object dataContractExtension, DataContractSerializer serializer) Add(null, null, dataContractExtension, serializer); } - public void Add(string outerName, string outerNamespace, object dataContractExtension, XmlObjectSerializer dataContractSerializer) + public void Add(string outerName, string outerNamespace, object dataContractExtension!!, XmlObjectSerializer dataContractSerializer) { - if (dataContractExtension == null) - { - throw new ArgumentNullException(nameof(dataContractExtension)); - } - if (dataContractSerializer == null) { dataContractSerializer = new DataContractSerializer(dataContractExtension.GetType()); @@ -75,13 +70,8 @@ public void Add(string outerName, string outerNamespace, object dataContractExte base.Add(new SyndicationElementExtension(outerName, outerNamespace, dataContractExtension, dataContractSerializer)); } - public void Add(object xmlSerializerExtension, XmlSerializer serializer) + public void Add(object xmlSerializerExtension!!, XmlSerializer serializer) { - if (xmlSerializerExtension == null) - { - throw new ArgumentNullException(nameof(xmlSerializerExtension)); - } - if (serializer == null) { serializer = new XmlSerializer(xmlSerializerExtension.GetType()); @@ -89,13 +79,8 @@ public void Add(object xmlSerializerExtension, XmlSerializer serializer) base.Add(new SyndicationElementExtension(xmlSerializerExtension, serializer)); } - public void Add(XmlReader xmlReader) + public void Add(XmlReader xmlReader!!) { - if (xmlReader == null) - { - throw new ArgumentNullException(nameof(xmlReader)); - } - base.Add(new SyndicationElementExtension(xmlReader)); } @@ -112,23 +97,13 @@ public Collection ReadElementExtensions(string extension return ReadElementExtensions(extensionName, extensionNamespace, new DataContractSerializer(typeof(TExtension))); } - public Collection ReadElementExtensions(string extensionName, string extensionNamespace, XmlObjectSerializer serializer) + public Collection ReadElementExtensions(string extensionName, string extensionNamespace, XmlObjectSerializer serializer!!) { - if (serializer == null) - { - throw new ArgumentNullException(nameof(serializer)); - } - return ReadExtensions(extensionName, extensionNamespace, serializer, null); } - public Collection ReadElementExtensions(string extensionName, string extensionNamespace, XmlSerializer serializer) + public Collection ReadElementExtensions(string extensionName, string extensionNamespace, XmlSerializer serializer!!) { - if (serializer == null) - { - throw new ArgumentNullException(nameof(serializer)); - } - return ReadExtensions(extensionName, extensionNamespace, null, serializer); } @@ -168,13 +143,8 @@ protected override void ClearItems() _buffer = null; } - protected override void InsertItem(int index, SyndicationElementExtension item) + protected override void InsertItem(int index, SyndicationElementExtension item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.InsertItem(index, item); // clear the cached buffer if the operation is happening outside the constructor if (_initialized) @@ -191,13 +161,8 @@ protected override void RemoveItem(int index) _buffer = null; } - protected override void SetItem(int index, SyndicationElementExtension item) + protected override void SetItem(int index, SyndicationElementExtension item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - base.SetItem(index, item); Debug.Assert(_initialized, "The constructor should never set items in the collection."); _buffer = null; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeed.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeed.cs index 2ba333b92c9173..0a8391f8916c64 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeed.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeed.cs @@ -67,13 +67,8 @@ public SyndicationFeed(string title, string description, Uri feedAlternateLink, _items = items; } - protected SyndicationFeed(SyndicationFeed source, bool cloneItems) + protected SyndicationFeed(SyndicationFeed source!!, bool cloneItems) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - _authors = FeedUtils.ClonePersons(source._authors); _categories = FeedUtils.CloneCategories(source._categories); _contributors = FeedUtils.ClonePersons(source._contributors); @@ -409,13 +404,8 @@ private static bool IsValidTextInput(SyndicationTextInput textInput) public static SyndicationFeed Load(XmlReader reader) => Load(reader); - public static TSyndicationFeed Load(XmlReader reader) where TSyndicationFeed : SyndicationFeed, new() + public static TSyndicationFeed Load(XmlReader reader!!) where TSyndicationFeed : SyndicationFeed, new() { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - Atom10FeedFormatter atomSerializer = new Atom10FeedFormatter(); if (atomSerializer.CanRead(reader)) { diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeedFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeedFormatter.cs index f4dbc2eb004f0c..019f0007b1f736 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeedFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationFeedFormatter.cs @@ -22,9 +22,9 @@ protected SyndicationFeedFormatter() DateTimeParser = GetDefaultDateTimeParser(); } - protected SyndicationFeedFormatter(SyndicationFeed feedToWrite) + protected SyndicationFeedFormatter(SyndicationFeed feedToWrite!!) { - _feed = feedToWrite ?? throw new ArgumentNullException(nameof(feedToWrite)); + _feed = feedToWrite; DateTimeParser = GetDefaultDateTimeParser(); } @@ -53,133 +53,68 @@ private bool NotImplementedDateTimeParser(XmlDateTimeData XmlDateTimeData, out D public abstract void WriteTo(XmlWriter writer); - protected internal static SyndicationCategory CreateCategory(SyndicationFeed feed) + protected internal static SyndicationCategory CreateCategory(SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - return GetNonNullValue(feed.CreateCategory(), SR.FeedCreatedNullCategory); } - protected internal static SyndicationCategory CreateCategory(SyndicationItem item) + protected internal static SyndicationCategory CreateCategory(SyndicationItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - return GetNonNullValue(item.CreateCategory(), SR.ItemCreatedNullCategory); } - protected internal static SyndicationItem CreateItem(SyndicationFeed feed) + protected internal static SyndicationItem CreateItem(SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - return GetNonNullValue(feed.CreateItem(), SR.FeedCreatedNullItem); } - protected internal static SyndicationLink CreateLink(SyndicationFeed feed) + protected internal static SyndicationLink CreateLink(SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - return GetNonNullValue(feed.CreateLink(), SR.FeedCreatedNullPerson); } - protected internal static SyndicationLink CreateLink(SyndicationItem item) + protected internal static SyndicationLink CreateLink(SyndicationItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - return GetNonNullValue(item.CreateLink(), SR.ItemCreatedNullPerson); } - protected internal static SyndicationPerson CreatePerson(SyndicationFeed feed) + protected internal static SyndicationPerson CreatePerson(SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - return GetNonNullValue(feed.CreatePerson(), SR.FeedCreatedNullPerson); } - protected internal static SyndicationPerson CreatePerson(SyndicationItem item) + protected internal static SyndicationPerson CreatePerson(SyndicationItem item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - return GetNonNullValue(item.CreatePerson(), SR.ItemCreatedNullPerson); } - protected internal static void LoadElementExtensions(XmlReader reader, SyndicationFeed feed, int maxExtensionSize) + protected internal static void LoadElementExtensions(XmlReader reader, SyndicationFeed feed!!, int maxExtensionSize) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - feed.LoadElementExtensions(reader, maxExtensionSize); } - protected internal static void LoadElementExtensions(XmlReader reader, SyndicationItem item, int maxExtensionSize) + protected internal static void LoadElementExtensions(XmlReader reader, SyndicationItem item!!, int maxExtensionSize) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - item.LoadElementExtensions(reader, maxExtensionSize); } - protected internal static void LoadElementExtensions(XmlReader reader, SyndicationCategory category, int maxExtensionSize) + protected internal static void LoadElementExtensions(XmlReader reader, SyndicationCategory category!!, int maxExtensionSize) { - if (category == null) - { - throw new ArgumentNullException(nameof(category)); - } - category.LoadElementExtensions(reader, maxExtensionSize); } - protected internal static void LoadElementExtensions(XmlReader reader, SyndicationLink link, int maxExtensionSize) + protected internal static void LoadElementExtensions(XmlReader reader, SyndicationLink link!!, int maxExtensionSize) { - if (link == null) - { - throw new ArgumentNullException(nameof(link)); - } - link.LoadElementExtensions(reader, maxExtensionSize); } - protected internal static void LoadElementExtensions(XmlReader reader, SyndicationPerson person, int maxExtensionSize) + protected internal static void LoadElementExtensions(XmlReader reader, SyndicationPerson person!!, int maxExtensionSize) { - if (person == null) - { - throw new ArgumentNullException(nameof(person)); - } - person.LoadElementExtensions(reader, maxExtensionSize); } - protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationFeed feed, string version) + protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationFeed feed!!, string version) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - if (FeedUtils.IsXmlns(name, ns)) { return true; @@ -187,13 +122,8 @@ protected internal static bool TryParseAttribute(string name, string ns, string return feed.TryParseAttribute(name, ns, value, version); } - protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationItem item, string version) + protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationItem item!!, string version) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - if (FeedUtils.IsXmlns(name, ns)) { return true; @@ -201,13 +131,8 @@ protected internal static bool TryParseAttribute(string name, string ns, string return item.TryParseAttribute(name, ns, value, version); } - protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationCategory category, string version) + protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationCategory category!!, string version) { - if (category == null) - { - throw new ArgumentNullException(nameof(category)); - } - if (FeedUtils.IsXmlns(name, ns)) { return true; @@ -215,13 +140,8 @@ protected internal static bool TryParseAttribute(string name, string ns, string return category.TryParseAttribute(name, ns, value, version); } - protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationLink link, string version) + protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationLink link!!, string version) { - if (link == null) - { - throw new ArgumentNullException(nameof(link)); - } - if (FeedUtils.IsXmlns(name, ns)) { return true; @@ -229,13 +149,8 @@ protected internal static bool TryParseAttribute(string name, string ns, string return link.TryParseAttribute(name, ns, value, version); } - protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationPerson person, string version) + protected internal static bool TryParseAttribute(string name, string ns, string value, SyndicationPerson person!!, string version) { - if (person == null) - { - throw new ArgumentNullException(nameof(person)); - } - if (FeedUtils.IsXmlns(name, ns)) { return true; @@ -248,159 +163,84 @@ protected internal static bool TryParseContent(XmlReader reader, SyndicationItem return item.TryParseContent(reader, contentType, version, out content); } - protected internal static bool TryParseElement(XmlReader reader, SyndicationFeed feed, string version) + protected internal static bool TryParseElement(XmlReader reader, SyndicationFeed feed!!, string version) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - return feed.TryParseElement(reader, version); } - protected internal static bool TryParseElement(XmlReader reader, SyndicationItem item, string version) + protected internal static bool TryParseElement(XmlReader reader, SyndicationItem item!!, string version) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - return item.TryParseElement(reader, version); } - protected internal static bool TryParseElement(XmlReader reader, SyndicationCategory category, string version) + protected internal static bool TryParseElement(XmlReader reader, SyndicationCategory category!!, string version) { - if (category == null) - { - throw new ArgumentNullException(nameof(category)); - } - return category.TryParseElement(reader, version); } - protected internal static bool TryParseElement(XmlReader reader, SyndicationLink link, string version) + protected internal static bool TryParseElement(XmlReader reader, SyndicationLink link!!, string version) { - if (link == null) - { - throw new ArgumentNullException(nameof(link)); - } - return link.TryParseElement(reader, version); } - protected internal static bool TryParseElement(XmlReader reader, SyndicationPerson person, string version) + protected internal static bool TryParseElement(XmlReader reader, SyndicationPerson person!!, string version) { - if (person == null) - { - throw new ArgumentNullException(nameof(person)); - } - return person.TryParseElement(reader, version); } - protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationFeed feed, string version) + protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationFeed feed!!, string version) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - feed.WriteAttributeExtensions(writer, version); } - protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationItem item, string version) + protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationItem item!!, string version) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - item.WriteAttributeExtensions(writer, version); } - protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationCategory category, string version) + protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationCategory category!!, string version) { - if (category == null) - { - throw new ArgumentNullException(nameof(category)); - } - category.WriteAttributeExtensions(writer, version); } - protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationLink link, string version) + protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationLink link!!, string version) { - if (link == null) - { - throw new ArgumentNullException(nameof(link)); - } - link.WriteAttributeExtensions(writer, version); } - protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationPerson person, string version) + protected internal static void WriteAttributeExtensions(XmlWriter writer, SyndicationPerson person!!, string version) { - if (person == null) - { - throw new ArgumentNullException(nameof(person)); - } - person.WriteAttributeExtensions(writer, version); } - protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationFeed feed, string version) + protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationFeed feed!!, string version) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - feed.WriteElementExtensions(writer, version); } - protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationItem item, string version) + protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationItem item!!, string version) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - item.WriteElementExtensions(writer, version); } - protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationCategory category, string version) + protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationCategory category!!, string version) { - if (category == null) - { - throw new ArgumentNullException(nameof(category)); - } - category.WriteElementExtensions(writer, version); } - protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationLink link, string version) + protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationLink link!!, string version) { - if (link == null) - { - throw new ArgumentNullException(nameof(link)); - } - link.WriteElementExtensions(writer, version); } - protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationPerson person, string version) + protected internal static void WriteElementExtensions(XmlWriter writer, SyndicationPerson person!!, string version) { - if (person == null) - { - throw new ArgumentNullException(nameof(person)); - } - person.WriteElementExtensions(writer, version); } - protected internal virtual void SetFeed(SyndicationFeed feed) + protected internal virtual void SetFeed(SyndicationFeed feed!!) { - _feed = feed ?? throw new ArgumentNullException(nameof(feed)); + _feed = feed; } internal Uri UriFromString(string uriString, UriKind uriKind, string localName, string namespaceURI, XmlReader reader) @@ -499,13 +339,8 @@ internal static SyndicationFeed CreateFeedInstance(Type feedType) } } - internal static void LoadElementExtensions(XmlBuffer buffer, XmlDictionaryWriter writer, SyndicationFeed feed) + internal static void LoadElementExtensions(XmlBuffer buffer, XmlDictionaryWriter writer, SyndicationFeed feed!!) { - if (feed == null) - { - throw new ArgumentNullException(nameof(feed)); - } - CloseBuffer(buffer, writer); feed.LoadElementExtensions(buffer); } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItem.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItem.cs index 4370ec9d8df246..8ea608f69c1a98 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItem.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItem.cs @@ -48,13 +48,8 @@ public SyndicationItem(string title, SyndicationContent content, Uri itemAlterna _lastUpdatedTime = lastUpdatedTime; } - protected SyndicationItem(SyndicationItem source) + protected SyndicationItem(SyndicationItem source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - _extensions = source._extensions.Clone(); _authors = FeedUtils.ClonePersons(source._authors); _categories = FeedUtils.CloneCategories(source._categories); @@ -155,13 +150,8 @@ public DateTimeOffset PublishDate public static SyndicationItem Load(XmlReader reader) => Load(reader); - public static TSyndicationItem Load(XmlReader reader) where TSyndicationItem : SyndicationItem, new() + public static TSyndicationItem Load(XmlReader reader!!) where TSyndicationItem : SyndicationItem, new() { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - Atom10ItemFormatter atomSerializer = new Atom10ItemFormatter(); if (atomSerializer.CanRead(reader)) { @@ -179,13 +169,8 @@ public DateTimeOffset PublishDate } - public void AddPermalink(Uri permalink) + public void AddPermalink(Uri permalink!!) { - if (permalink == null) - { - throw new ArgumentNullException(nameof(permalink)); - } - Id = permalink.AbsoluteUri; Links.Add(SyndicationLink.CreateAlternateLink(permalink)); } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItemFormatter.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItemFormatter.cs index 943f9b6e2ce399..9c7e95760c3a0c 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItemFormatter.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationItemFormatter.cs @@ -16,9 +16,9 @@ protected SyndicationItemFormatter() _item = null; } - protected SyndicationItemFormatter(SyndicationItem itemToWrite) + protected SyndicationItemFormatter(SyndicationItem itemToWrite!!) { - _item = itemToWrite ?? throw new ArgumentNullException(nameof(itemToWrite)); + _item = itemToWrite; } public SyndicationItem Item => _item; @@ -33,9 +33,9 @@ protected SyndicationItemFormatter(SyndicationItem itemToWrite) public abstract void WriteTo(XmlWriter writer); - protected internal virtual void SetItem(SyndicationItem item) + protected internal virtual void SetItem(SyndicationItem item!!) { - _item = item ?? throw new ArgumentNullException(nameof(item)); + _item = item; } internal static SyndicationItem CreateItemInstance(Type itemType) diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationLink.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationLink.cs index b9fc1f4ce7c513..62ffbafd572201 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationLink.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationLink.cs @@ -35,13 +35,8 @@ public SyndicationLink() : this(null, null, null, null, 0) { } - protected SyndicationLink(SyndicationLink source) + protected SyndicationLink(SyndicationLink source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - _length = source._length; MediaType = source.MediaType; RelationshipType = source.RelationshipType; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationPerson.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationPerson.cs index 5239fd9d55a01f..6c4750aa163f1d 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationPerson.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/SyndicationPerson.cs @@ -27,13 +27,8 @@ public SyndicationPerson(string email, string name, string uri) Uri = uri; } - protected SyndicationPerson(SyndicationPerson source) + protected SyndicationPerson(SyndicationPerson source!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - Email = source.Email; Name = source.Name; Uri = source.Uri; diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/UrlSyndicationContent.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/UrlSyndicationContent.cs index a8527be8e514ac..19b2a8012b4c32 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/UrlSyndicationContent.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/UrlSyndicationContent.cs @@ -11,9 +11,9 @@ public class UrlSyndicationContent : SyndicationContent { private readonly string _mediaType; - public UrlSyndicationContent(Uri url, string mediaType) : base() + public UrlSyndicationContent(Uri url!!, string mediaType) : base() { - Url = url ?? throw new ArgumentNullException(nameof(url)); + Url = url; _mediaType = mediaType; } diff --git a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/XmlSyndicationContent.cs b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/XmlSyndicationContent.cs index a4f5139a95dd48..b8427a6b642069 100644 --- a/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/XmlSyndicationContent.cs +++ b/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/XmlSyndicationContent.cs @@ -17,13 +17,8 @@ public class XmlSyndicationContent : SyndicationContent // Saves the element in the reader to the buffer (attributes preserved) // Type is populated from type attribute on reader // Reader must be positioned at an element - public XmlSyndicationContent(XmlReader reader) + public XmlSyndicationContent(XmlReader reader!!) { - if (reader == null) - { - throw new ArgumentNullException(nameof(reader)); - } - SyndicationFeedFormatter.MoveToStartElement(reader); if (reader.HasAttributes) { @@ -65,10 +60,10 @@ public XmlSyndicationContent(string type, object xmlSerializerExtension, XmlSeri Extension = new SyndicationElementExtension(xmlSerializerExtension, serializer); } - public XmlSyndicationContent(string type, SyndicationElementExtension extension) + public XmlSyndicationContent(string type, SyndicationElementExtension extension!!) { _type = string.IsNullOrEmpty(type) ? Atom10Constants.XmlMediaType : type; - Extension = extension ?? throw new ArgumentNullException(nameof(extension)); + Extension = extension; } protected XmlSyndicationContent(XmlSyndicationContent source) : base(source) @@ -138,13 +133,8 @@ public TContent ReadContent(XmlSerializer serializer) } // does not write start element or type attribute, writes other attributes and rest of content - protected override void WriteContentsTo(XmlWriter writer) + protected override void WriteContentsTo(XmlWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (Extension != null) { Extension.WriteTo(writer); diff --git a/src/libraries/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs b/src/libraries/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs index 51c83257ce9d06..9d78898292a904 100644 --- a/src/libraries/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs +++ b/src/libraries/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs @@ -862,11 +862,8 @@ public void Start() /// /// Starts a service in the machine specified. /// - public void Start(string[] args) + public void Start(string[] args!!) { - if (args == null) - throw new ArgumentNullException(nameof(args)); - using SafeServiceHandle serviceHandle = GetServiceHandle(Interop.Advapi32.ServiceOptions.SERVICE_START); IntPtr[] argPtrs = new IntPtr[args.Length]; int i = 0; diff --git a/src/libraries/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.TestService/System.ServiceProcess.ServiceController.TestService.csproj b/src/libraries/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.TestService/System.ServiceProcess.ServiceController.TestService.csproj index fe1302370b388d..8b0d078026b8bb 100644 --- a/src/libraries/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.TestService/System.ServiceProcess.ServiceController.TestService.csproj +++ b/src/libraries/System.ServiceProcess.ServiceController/tests/System.ServiceProcess.ServiceController.TestService/System.ServiceProcess.ServiceController.TestService.csproj @@ -15,6 +15,9 @@ +
- \ No newline at end of file + diff --git a/src/libraries/System.Speech/src/Internal/ObjectToken/ObjectToken.cs b/src/libraries/System.Speech/src/Internal/ObjectToken/ObjectToken.cs index 461212e622b67a..0d06bd42d072de 100644 --- a/src/libraries/System.Speech/src/Internal/ObjectToken/ObjectToken.cs +++ b/src/libraries/System.Speech/src/Internal/ObjectToken/ObjectToken.cs @@ -15,14 +15,9 @@ internal class ObjectToken : RegistryDataKey, ISpObjectToken { #region Constructors - protected ObjectToken(ISpObjectToken sapiObjectToken, bool disposeSapiToken) + protected ObjectToken(ISpObjectToken sapiObjectToken!!, bool disposeSapiToken) : base(sapiObjectToken) { - if (sapiObjectToken == null) - { - throw new ArgumentNullException(nameof(sapiObjectToken)); - } - _sapiObjectToken = sapiObjectToken; _disposeSapiObjectToken = disposeSapiToken; } diff --git a/src/libraries/System.Speech/src/Recognition/SrgsGrammar/SrgsRulesCollection.cs b/src/libraries/System.Speech/src/Recognition/SrgsGrammar/SrgsRulesCollection.cs index ee3c74beebcaa4..bed2dfe68d6d42 100644 --- a/src/libraries/System.Speech/src/Recognition/SrgsGrammar/SrgsRulesCollection.cs +++ b/src/libraries/System.Speech/src/Recognition/SrgsGrammar/SrgsRulesCollection.cs @@ -22,12 +22,8 @@ public void Add(params SrgsRule[] rules) base.Add(rules[iRule]); } } - protected override string GetKeyForItem(SrgsRule rule) + protected override string GetKeyForItem(SrgsRule rule!!) { - if (rule == null) - { - throw new ArgumentNullException(nameof(rule)); - } return rule.Id; } } diff --git a/src/libraries/System.Speech/src/Result/RecognizedWordUnit.cs b/src/libraries/System.Speech/src/Result/RecognizedWordUnit.cs index e845b6079db4b2..189a16cf8c3007 100644 --- a/src/libraries/System.Speech/src/Result/RecognizedWordUnit.cs +++ b/src/libraries/System.Speech/src/Result/RecognizedWordUnit.cs @@ -16,13 +16,8 @@ public class RecognizedWordUnit #pragma warning disable 6507 // Constructor for recognized 'word' - public RecognizedWordUnit(string text, float confidence, string pronunciation, string lexicalForm, DisplayAttributes displayAttributes, TimeSpan audioPosition, TimeSpan audioDuration) + public RecognizedWordUnit(string text, float confidence, string pronunciation, string lexicalForm!!, DisplayAttributes displayAttributes, TimeSpan audioPosition, TimeSpan audioDuration) { - if (lexicalForm == null) - { - throw new ArgumentNullException(nameof(lexicalForm)); - } - if (confidence < 0.0f || confidence > 1.0f) { throw new ArgumentOutOfRangeException(SR.Get(SRID.InvalidConfidence)); diff --git a/src/libraries/System.Speech/src/System.Speech.csproj b/src/libraries/System.Speech/src/System.Speech.csproj index bf696506ec7eeb..7003b449eff78d 100644 --- a/src/libraries/System.Speech/src/System.Speech.csproj +++ b/src/libraries/System.Speech/src/System.Speech.csproj @@ -221,6 +221,10 @@ System.Speech.Recognition.SpeechRecognizer
+ + + true diff --git a/src/libraries/System.Text.Encoding.CodePages/src/Resources/Strings.resx b/src/libraries/System.Text.Encoding.CodePages/src/Resources/Strings.resx index 8b4da5e4880088..0d7fabd0bd9e1a 100644 --- a/src/libraries/System.Text.Encoding.CodePages/src/Resources/Strings.resx +++ b/src/libraries/System.Text.Encoding.CodePages/src/Resources/Strings.resx @@ -57,9 +57,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Array cannot be null. - Non-negative number required. @@ -531,4 +528,4 @@ ISCII Punjabi - \ No newline at end of file + diff --git a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/DecoderNLS.cs b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/DecoderNLS.cs index 85926ad3a24206..081cdd059685da 100644 --- a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/DecoderNLS.cs +++ b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/DecoderNLS.cs @@ -81,12 +81,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) return GetCharCount(bytes, index, count, false); } - public override unsafe int GetCharCount(byte[] bytes, int index, int count, bool flush) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count, bool flush) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0 ? nameof(index) : nameof(count)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -102,12 +99,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count, bool return GetCharCount(pBytes + index, count, flush); } - public override unsafe int GetCharCount(byte* bytes, int count, bool flush) + public override unsafe int GetCharCount(byte* bytes!!, int count, bool flush) { // Validate parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -125,13 +119,10 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, return GetChars(bytes, byteIndex, byteCount, chars, charIndex, false); } - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, bool flush) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, bool flush) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -156,13 +147,10 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, return GetChars(pBytes + byteIndex, byteCount, pChars + charIndex, charCount, flush); } - public override unsafe int GetChars(byte* bytes, int byteCount, - char* chars, int charCount, bool flush) + public override unsafe int GetChars(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException((chars == null ? nameof(chars) : nameof(bytes)), SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException((byteCount < 0 ? nameof(byteCount) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -176,14 +164,11 @@ public override unsafe int GetChars(byte* bytes, int byteCount, // This method is used when the output buffer might not be big enough. // Just call the pointer version. (This gets chars) - public override unsafe void Convert(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex, int charCount, bool flush, - out int bytesUsed, out int charsUsed, out bool completed) + public override unsafe void Convert(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex, int charCount, bool flush, + out int bytesUsed, out int charsUsed, out bool completed) { // Validate parameters - if (bytes == null || chars == null) - throw new ArgumentNullException((bytes == null ? nameof(bytes) : nameof(chars)), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -215,14 +200,11 @@ public override unsafe void Convert(byte[] bytes, int byteIndex, int byteCount, // This is the version that used pointers. We call the base encoding worker function // after setting our appropriate internal variables. This is getting chars - public override unsafe void Convert(byte* bytes, int byteCount, - char* chars, int charCount, bool flush, - out int bytesUsed, out int charsUsed, out bool completed) + public override unsafe void Convert(byte* bytes!!, int byteCount, + char* chars!!, int charCount, bool flush, + out int bytesUsed, out int charsUsed, out bool completed) { // Validate input parameters - if (chars == null || bytes == null) - throw new ArgumentNullException(chars == null ? nameof(chars) : nameof(bytes), SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException((byteCount < 0 ? nameof(byteCount) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncoderNLS.cs b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncoderNLS.cs index e204d344f9676d..f530af9d690879 100644 --- a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncoderNLS.cs +++ b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncoderNLS.cs @@ -79,12 +79,9 @@ public override void Reset() m_fallbackBuffer.Reset(); } - public override unsafe int GetByteCount(char[] chars, int index, int count, bool flush) + public override unsafe int GetByteCount(char[] chars!!, int index, int count, bool flush) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0 ? nameof(index) : nameof(count)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -104,12 +101,9 @@ public override unsafe int GetByteCount(char[] chars, int index, int count, bool return result; } - public override unsafe int GetByteCount(char* chars, int count, bool flush) + public override unsafe int GetByteCount(char* chars!!, int count, bool flush) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -118,13 +112,10 @@ public override unsafe int GetByteCount(char* chars, int count, bool flush) return m_encoding.GetByteCount(chars, count, this); } - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, bool flush) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException((chars == null ? nameof(chars) : nameof(bytes)), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException((charIndex < 0 ? nameof(charIndex) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -148,12 +139,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, return GetBytes(pChars + charIndex, charCount, pBytes + byteIndex, byteCount, flush); } - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount, bool flush) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException((chars == null ? nameof(chars) : nameof(bytes)), SR.ArgumentNull_Array); - if (byteCount < 0 || charCount < 0) throw new ArgumentOutOfRangeException((byteCount < 0 ? nameof(byteCount) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -164,14 +152,11 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // This method is used when your output buffer might not be large enough for the entire result. // Just call the pointer version. (This gets bytes) - public override unsafe void Convert(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public override unsafe void Convert(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException((chars == null ? nameof(chars) : nameof(bytes)), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException((charIndex < 0 ? nameof(charIndex) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -203,14 +188,11 @@ public override unsafe void Convert(char[] chars, int charIndex, int charCount, // This is the version that uses pointers. We call the base encoding worker function // after setting our appropriate internal variables. This is getting bytes - public override unsafe void Convert(char* chars, int charCount, - byte* bytes, int byteCount, bool flush, - out int charsUsed, out int bytesUsed, out bool completed) + public override unsafe void Convert(char* chars!!, int charCount, + byte* bytes!!, int byteCount, bool flush, + out int charsUsed, out int bytesUsed, out bool completed) { // Validate input parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((charCount < 0 ? nameof(charCount) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncodingNLS.cs b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncodingNLS.cs index c2681e3a4d2e68..154f5593830db2 100644 --- a/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncodingNLS.cs +++ b/src/libraries/System.Text.Encoding.CodePages/src/System/Text/EncodingNLS.cs @@ -45,12 +45,9 @@ protected EncodingNLS(int codePage, EncoderFallback enc, DecoderFallback dec) // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe int GetByteCount(char[] chars, int index, int count) + public override unsafe int GetByteCount(char[] chars!!, int index, int count) { // Validate input parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0 ? nameof(index) : nameof(count)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -69,24 +66,17 @@ public override unsafe int GetByteCount(char[] chars, int index, int count) // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe int GetByteCount(string s) + public override unsafe int GetByteCount(string s!!) { - // Validate input - if (s == null) - throw new ArgumentNullException(nameof(s)); - fixed (char* pChars = s) return GetByteCount(pChars, s.Length, null); } // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. - public override unsafe int GetByteCount(char* chars, int count) + public override unsafe int GetByteCount(char* chars!!, int count) { // Validate Parameters - if (chars == null) - throw new ArgumentNullException(nameof(chars), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -98,12 +88,9 @@ public override unsafe int GetByteCount(char* chars, int count) // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. - public override unsafe int GetBytes(string s, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(string s!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { - if (s == null || bytes == null) - throw new ArgumentNullException((s == null ? nameof(s) : nameof(bytes)), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException((charIndex < 0 ? nameof(charIndex) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -137,13 +124,10 @@ public override unsafe int GetBytes(string s, int charIndex, int charCount, // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, - byte[] bytes, int byteIndex) + public override unsafe int GetBytes(char[] chars!!, int charIndex, int charCount, + byte[] bytes!!, int byteIndex) { // Validate parameters - if (chars == null || bytes == null) - throw new ArgumentNullException((chars == null ? nameof(chars) : nameof(bytes)), SR.ArgumentNull_Array); - if (charIndex < 0 || charCount < 0) throw new ArgumentOutOfRangeException((charIndex < 0 ? nameof(charIndex) : nameof(charCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -173,12 +157,9 @@ public override unsafe int GetBytes(char[] chars, int charIndex, int charCount, // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. - public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int byteCount) + public override unsafe int GetBytes(char* chars!!, int charCount, byte* bytes!!, int byteCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((charCount < 0 ? nameof(charCount) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -191,12 +172,9 @@ public override unsafe int GetBytes(char* chars, int charCount, byte* bytes, int // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe int GetCharCount(byte[] bytes, int index, int count) + public override unsafe int GetCharCount(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0 ? nameof(index) : nameof(count)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -214,12 +192,9 @@ public override unsafe int GetCharCount(byte[] bytes, int index, int count) // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. - public override unsafe int GetCharCount(byte* bytes, int count) + public override unsafe int GetCharCount(byte* bytes!!, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (count < 0) throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -229,13 +204,10 @@ public override unsafe int GetCharCount(byte* bytes, int count) // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, - char[] chars, int charIndex) + public override unsafe int GetChars(byte[] bytes!!, int byteIndex, int byteCount, + char[] chars!!, int charIndex) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (byteIndex < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((byteIndex < 0 ? nameof(byteIndex) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -265,12 +237,9 @@ public override unsafe int GetChars(byte[] bytes, int byteIndex, int byteCount, // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. - public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int charCount) + public unsafe override int GetChars(byte* bytes!!, int byteCount, char* chars!!, int charCount) { // Validate Parameters - if (bytes == null || chars == null) - throw new ArgumentNullException(bytes == null ? nameof(bytes) : nameof(chars), SR.ArgumentNull_Array); - if (charCount < 0 || byteCount < 0) throw new ArgumentOutOfRangeException((charCount < 0 ? nameof(charCount) : nameof(byteCount)), SR.ArgumentOutOfRange_NeedNonNegNum); @@ -283,12 +252,9 @@ public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int // All of our public Encodings that don't use EncodingNLS must have this (including EncodingNLS) // So if you fix this, fix the others. // parent method is safe - public override unsafe string GetString(byte[] bytes, int index, int count) + public override unsafe string GetString(byte[] bytes!!, int index, int count) { // Validate Parameters - if (bytes == null) - throw new ArgumentNullException(nameof(bytes), SR.ArgumentNull_Array); - if (index < 0 || count < 0) throw new ArgumentOutOfRangeException((index < 0 ? nameof(index) : nameof(count)), SR.ArgumentOutOfRange_NeedNonNegNum); diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultHtmlEncoder.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultHtmlEncoder.cs index 50666e57a8f721..c3faf767ee5db1 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultHtmlEncoder.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultHtmlEncoder.cs @@ -14,13 +14,8 @@ internal sealed class DefaultHtmlEncoder : HtmlEncoder private readonly OptimizedInboxTextEncoder _innerEncoder; - internal DefaultHtmlEncoder(TextEncoderSettings settings) + internal DefaultHtmlEncoder(TextEncoderSettings settings!!) { - if (settings is null) - { - throw new ArgumentNullException(nameof(settings)); - } - _innerEncoder = new OptimizedInboxTextEncoder(EscaperImplementation.Singleton, settings.GetAllowedCodePointsBitmap()); } diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultJavaScriptEncoder.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultJavaScriptEncoder.cs index 7b23363e2e2063..e7a003ddb38da2 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultJavaScriptEncoder.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultJavaScriptEncoder.cs @@ -18,13 +18,8 @@ internal DefaultJavaScriptEncoder(TextEncoderSettings settings) { } - private DefaultJavaScriptEncoder(TextEncoderSettings settings, bool allowMinimalJsonEscaping) + private DefaultJavaScriptEncoder(TextEncoderSettings settings!!, bool allowMinimalJsonEscaping) { - if (settings is null) - { - throw new ArgumentNullException(nameof(settings)); - } - // '\' (U+005C REVERSE SOLIDUS) must always be escaped in Javascript / ECMAScript / JSON. // '/' (U+002F SOLIDUS) is not Javascript / ECMAScript / JSON-sensitive so doesn't need to be escaped. // '`' (U+0060 GRAVE ACCENT) is ECMAScript-sensitive (see ECMA-262). diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultUrlEncoder.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultUrlEncoder.cs index 95f444c56368a6..671ec2f80fb472 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultUrlEncoder.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/DefaultUrlEncoder.cs @@ -12,13 +12,8 @@ internal sealed class DefaultUrlEncoder : UrlEncoder private readonly OptimizedInboxTextEncoder _innerEncoder; - internal DefaultUrlEncoder(TextEncoderSettings settings) + internal DefaultUrlEncoder(TextEncoderSettings settings!!) { - if (settings is null) - { - throw new ArgumentNullException(nameof(settings)); - } - // Per RFC 3987, Sec. 2.2, we want encodings that are safe for // four particular components: 'isegment', 'ipath-noscheme', // 'iquery', and 'ifragment'. The relevant definitions are below. diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoder.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoder.cs index a7142b188cb02d..6791980fefcd55 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoder.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoder.cs @@ -126,13 +126,8 @@ private bool TryEncodeUnicodeScalarUtf8(uint unicodeScalar, Span utf16Scra /// /// String to encode. /// Encoded string. - public virtual string Encode(string value) + public virtual string Encode(string value!!) { - if (value is null) - { - ThrowHelper.ThrowArgumentNullException(ExceptionArgument.value); - } - int indexOfFirstCharToEncode = FindFirstCharacterToEncode(value.AsSpan()); if (indexOfFirstCharToEncode < 0) { @@ -201,16 +196,8 @@ public void Encode(TextWriter output, string value) /// String whose substring is to be encoded. /// The index where the substring starts. /// Number of characters in the substring. - public virtual void Encode(TextWriter output, string value, int startIndex, int characterCount) + public virtual void Encode(TextWriter output!!, string value!!, int startIndex, int characterCount) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } ValidateRanges(startIndex, characterCount, actualInputLength: value.Length); int indexOfFirstCharToEncode = FindFirstCharacterToEncode(value.AsSpan(startIndex, characterCount)); @@ -235,16 +222,8 @@ public virtual void Encode(TextWriter output, string value, int startIndex, int /// Array of characters to be encoded. /// The index where the substring starts. /// Number of characters in the substring. - public virtual void Encode(TextWriter output, char[] value, int startIndex, int characterCount) + public virtual void Encode(TextWriter output!!, char[] value!!, int startIndex, int characterCount) { - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } ValidateRanges(startIndex, characterCount, actualInputLength: value.Length); int indexOfFirstCharToEncode = FindFirstCharacterToEncode(value.AsSpan(startIndex, characterCount)); diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoderSettings.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoderSettings.cs index d02c04c3ceb8a2..e2013826b7b2c6 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoderSettings.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/TextEncoderSettings.cs @@ -24,13 +24,8 @@ public TextEncoderSettings() /// /// Instantiates the filter by cloning the allow list of another . /// - public TextEncoderSettings(TextEncoderSettings other) + public TextEncoderSettings(TextEncoderSettings other!!) { - if (other == null) - { - throw new ArgumentNullException(nameof(other)); - } - _allowedCodePointsBitmap = other.GetAllowedCodePointsBitmap(); // copy byval } @@ -38,12 +33,8 @@ public TextEncoderSettings(TextEncoderSettings other) /// Instantiates the filter where only the character ranges specified by /// are allowed by the filter. /// - public TextEncoderSettings(params UnicodeRange[] allowedRanges) + public TextEncoderSettings(params UnicodeRange[] allowedRanges!!) { - if (allowedRanges == null) - { - throw new ArgumentNullException(nameof(allowedRanges)); - } AllowRanges(allowedRanges); } @@ -58,13 +49,8 @@ public virtual void AllowCharacter(char character) /// /// Allows all characters specified by through the filter. /// - public virtual void AllowCharacters(params char[] characters) + public virtual void AllowCharacters(params char[] characters!!) { - if (characters == null) - { - throw new ArgumentNullException(nameof(characters)); - } - for (int i = 0; i < characters.Length; i++) { _allowedCodePointsBitmap.AllowChar(characters[i]); @@ -74,13 +60,8 @@ public virtual void AllowCharacters(params char[] characters) /// /// Allows all code points specified by . /// - public virtual void AllowCodePoints(IEnumerable codePoints) + public virtual void AllowCodePoints(IEnumerable codePoints!!) { - if (codePoints == null) - { - throw new ArgumentNullException(nameof(codePoints)); - } - foreach (var allowedCodePoint in codePoints) { // If the code point can't be represented as a BMP character, skip it. @@ -94,13 +75,8 @@ public virtual void AllowCodePoints(IEnumerable codePoints) /// /// Allows all characters specified by through the filter. /// - public virtual void AllowRange(UnicodeRange range) + public virtual void AllowRange(UnicodeRange range!!) { - if (range == null) - { - throw new ArgumentNullException(nameof(range)); - } - int firstCodePoint = range.FirstCodePoint; int rangeSize = range.Length; for (int i = 0; i < rangeSize; i++) @@ -114,13 +90,8 @@ public virtual void AllowRange(UnicodeRange range) /// /// Allows all characters specified by through the filter. /// - public virtual void AllowRanges(params UnicodeRange[] ranges) + public virtual void AllowRanges(params UnicodeRange[] ranges!!) { - if (ranges == null) - { - throw new ArgumentNullException(nameof(ranges)); - } - for (int i = 0; i < ranges.Length; i++) { AllowRange(ranges[i]); @@ -146,13 +117,8 @@ public virtual void ForbidCharacter(char character) /// /// Disallows all characters specified by through the filter. /// - public virtual void ForbidCharacters(params char[] characters) + public virtual void ForbidCharacters(params char[] characters!!) { - if (characters == null) - { - throw new ArgumentNullException(nameof(characters)); - } - for (int i = 0; i < characters.Length; i++) { _allowedCodePointsBitmap.ForbidChar(characters[i]); @@ -162,13 +128,8 @@ public virtual void ForbidCharacters(params char[] characters) /// /// Disallows all characters specified by through the filter. /// - public virtual void ForbidRange(UnicodeRange range) + public virtual void ForbidRange(UnicodeRange range!!) { - if (range == null) - { - throw new ArgumentNullException(nameof(range)); - } - int firstCodePoint = range.FirstCodePoint; int rangeSize = range.Length; for (int i = 0; i < rangeSize; i++) @@ -182,13 +143,8 @@ public virtual void ForbidRange(UnicodeRange range) /// /// Disallows all characters specified by through the filter. /// - public virtual void ForbidRanges(params UnicodeRange[] ranges) + public virtual void ForbidRanges(params UnicodeRange[] ranges!!) { - if (ranges == null) - { - throw new ArgumentNullException(nameof(ranges)); - } - for (int i = 0; i < ranges.Length; i++) { ForbidRange(ranges[i]); diff --git a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/ThrowHelper.cs b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/ThrowHelper.cs index c1f89d4ac1905c..63316b30a3ef5f 100644 --- a/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/ThrowHelper.cs +++ b/src/libraries/System.Text.Encodings.Web/src/System/Text/Encodings/Web/ThrowHelper.cs @@ -8,12 +8,6 @@ namespace System.Text.Encodings.Web { internal static class ThrowHelper { - [DoesNotReturn] - internal static void ThrowArgumentNullException(ExceptionArgument argument) - { - throw new ArgumentNullException(GetArgumentName(argument)); - } - [DoesNotReturn] internal static void ThrowArgumentOutOfRangeException(ExceptionArgument argument) { diff --git a/src/libraries/System.Text.Json/gen/Reflection/ReflectionExtensions.cs b/src/libraries/System.Text.Json/gen/Reflection/ReflectionExtensions.cs index d0bc8e59b147c2..73890e15d851c3 100644 --- a/src/libraries/System.Text.Json/gen/Reflection/ReflectionExtensions.cs +++ b/src/libraries/System.Text.Json/gen/Reflection/ReflectionExtensions.cs @@ -21,13 +21,8 @@ public static TValue GetConstructorArgument(this CustomAttributeData cus return index < customAttributeData.ConstructorArguments.Count ? (TValue)customAttributeData.ConstructorArguments[index].Value! : default!; } - public static bool IsInitOnly(this MethodInfo method) + public static bool IsInitOnly(this MethodInfo method!!) { - if (method == null) - { - throw new ArgumentNullException(nameof(method)); - } - MethodInfoWrapper methodInfoWrapper = (MethodInfoWrapper)method; return methodInfoWrapper.IsInitOnly; } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs index 6ceaa0af7dd950..2a06c78204e9f5 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs @@ -115,13 +115,8 @@ public static JsonDocument Parse(ReadOnlySequence utf8Json, JsonDocumentOp /// /// contains unsupported options. /// - public static JsonDocument Parse(Stream utf8Json, JsonDocumentOptions options = default) + public static JsonDocument Parse(Stream utf8Json!!, JsonDocumentOptions options = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - ArraySegment drained = ReadToEnd(utf8Json); Debug.Assert(drained.Array != null); try @@ -196,15 +191,10 @@ internal static JsonDocument ParseValue(string json, JsonDocumentOptions options /// contains unsupported options. /// public static Task ParseAsync( - Stream utf8Json, + Stream utf8Json!!, JsonDocumentOptions options = default, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - return ParseAsyncCore(utf8Json, options, cancellationToken); } @@ -311,13 +301,8 @@ internal static JsonDocument ParseValue(ReadOnlyMemory json, JsonDocumentO /// /// contains unsupported options. /// - public static JsonDocument Parse([StringSyntax(StringSyntaxAttribute.Json)] string json, JsonDocumentOptions options = default) + public static JsonDocument Parse([StringSyntax(StringSyntaxAttribute.Json)] string json!!, JsonDocumentOptions options = default) { - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - return Parse(json.AsMemory(), options); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs index 33f4f33b46c510..6a2e6b88fc785c 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs @@ -103,13 +103,8 @@ public void Dispose() /// /// The parent has been disposed. /// - public void WriteTo(Utf8JsonWriter writer) + public void WriteTo(Utf8JsonWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - RootElement.WriteTo(writer); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs index 63963db4b5fd1a..c4a4613203e5b9 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonElement.cs @@ -111,11 +111,8 @@ public int GetArrayLength() /// /// The parent has been disposed. /// - public JsonElement GetProperty(string propertyName) + public JsonElement GetProperty(string propertyName!!) { - if (propertyName == null) - throw new ArgumentNullException(nameof(propertyName)); - if (TryGetProperty(propertyName, out JsonElement property)) { return property; @@ -232,11 +229,8 @@ public JsonElement GetProperty(ReadOnlySpan utf8PropertyName) /// The parent has been disposed. /// /// - public bool TryGetProperty(string propertyName, out JsonElement value) + public bool TryGetProperty(string propertyName!!, out JsonElement value) { - if (propertyName == null) - throw new ArgumentNullException(nameof(propertyName)); - return TryGetProperty(propertyName.AsSpan(), out value); } @@ -1300,13 +1294,8 @@ internal bool TextEqualsHelper(ReadOnlySpan text, bool isPropertyName) /// /// The parent has been disposed. /// - public void WriteTo(Utf8JsonWriter writer) + public void WriteTo(Utf8JsonWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - CheckValidInstance(); _parent.WriteElementTo(_idx, writer); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonProperty.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonProperty.cs index 9a5d58086abb3d..f22ce88dd6f853 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonProperty.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonProperty.cs @@ -110,13 +110,8 @@ internal bool EscapedNameEquals(ReadOnlySpan utf8Text) /// /// The parent has been disposed. /// > - public void WriteTo(Utf8JsonWriter writer) + public void WriteTo(Utf8JsonWriter writer!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - writer.WritePropertyName(Name); Value.WriteTo(writer); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/JsonEncodedText.cs b/src/libraries/System.Text.Json/src/System/Text/Json/JsonEncodedText.cs index 8b10b39eda0148..ca71e316b8f34e 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/JsonEncodedText.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/JsonEncodedText.cs @@ -43,11 +43,8 @@ private JsonEncodedText(byte[] utf8Value) /// /// Thrown when the specified value is too large or if it contains invalid UTF-16 characters. /// - public static JsonEncodedText Encode(string value, JavaScriptEncoder? encoder = null) + public static JsonEncodedText Encode(string value!!, JavaScriptEncoder? encoder = null) { - if (value == null) - throw new ArgumentNullException(nameof(value)); - return Encode(value.AsSpan(), encoder); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/JsonPropertyDictionary.cs b/src/libraries/System.Text.Json/src/System/Text/Json/JsonPropertyDictionary.cs index 686fee2afec1e1..a77087025deec5 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/JsonPropertyDictionary.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/JsonPropertyDictionary.cs @@ -83,13 +83,8 @@ public void Clear() _propertyDictionary?.Clear(); } - public bool ContainsKey(string propertyName) + public bool ContainsKey(string propertyName!!) { - if (propertyName == null) - { - throw new ArgumentNullException(nameof(propertyName)); - } - return ContainsProperty(propertyName); } @@ -159,13 +154,8 @@ public void CopyTo(KeyValuePair[] array, int index) public ICollection Values => GetValueCollection(); - public bool TryGetValue(string propertyName, out T? value) + public bool TryGetValue(string propertyName!!, out T? value) { - if (propertyName == null) - { - throw new ArgumentNullException(nameof(propertyName)); - } - if (_propertyDictionary != null) { return _propertyDictionary.TryGetValue(propertyName, out value); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs index c420a7eec5f371..ba03c8bb9b874c 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonArray.cs @@ -152,13 +152,8 @@ internal override void GetPath(List path, JsonNode? child) } /// - public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? options = null) + public override void WriteTo(Utf8JsonWriter writer!!, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_jsonElement.HasValue) { _jsonElement.Value.WriteTo(writer); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonNode.Parse.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonNode.Parse.cs index 0d6f3a75263ebf..4087ec2323f863 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonNode.Parse.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonNode.Parse.cs @@ -66,15 +66,10 @@ public abstract partial class JsonNode /// does not represent a valid single JSON value. /// public static JsonNode? Parse( - [StringSyntax(StringSyntaxAttribute.Json)] string json, + [StringSyntax(StringSyntaxAttribute.Json)] string json!!, JsonNodeOptions? nodeOptions = null, JsonDocumentOptions documentOptions = default(JsonDocumentOptions)) { - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - JsonElement element = JsonElement.ParseValue(json, documentOptions); return JsonNodeConverter.Create(element, nodeOptions); } @@ -114,15 +109,10 @@ public abstract partial class JsonNode /// does not represent a valid single JSON value. /// public static JsonNode? Parse( - Stream utf8Json, + Stream utf8Json!!, JsonNodeOptions? nodeOptions = null, JsonDocumentOptions documentOptions = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - JsonElement element = JsonElement.ParseValue(utf8Json, documentOptions); return JsonNodeConverter.Create(element, nodeOptions); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.IDictionary.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.IDictionary.cs index ad439d17822509..99ceb26c35c8d8 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.IDictionary.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.IDictionary.cs @@ -113,13 +113,8 @@ public int Count /// /// is . /// - public bool Remove(string propertyName) + public bool Remove(string propertyName!!) { - if (propertyName == null) - { - throw new ArgumentNullException(nameof(propertyName)); - } - InitializeIfRequired(); Debug.Assert(_dictionary != null); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs index 04a64c3e44ef4d..b380950c3fda87 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonObject.cs @@ -82,13 +82,8 @@ public bool TryGetPropertyValue(string propertyName, out JsonNode? jsonNode) => ((IDictionary)this).TryGetValue(propertyName, out jsonNode); /// - public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? options = null) + public override void WriteTo(Utf8JsonWriter writer!!, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_jsonElement.HasValue) { // Write the element without converting to nodes. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValue.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValue.cs index 87b6953f46765b..3a2407c68f5354 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValue.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValue.cs @@ -61,13 +61,8 @@ private protected JsonValue(JsonNodeOptions? options = null) : base(options) { } /// The that will be used to serialize the value. /// Options to control the behavior. /// The new instance of the class that contains the specified value. - public static JsonValue? Create(T? value, JsonTypeInfo jsonTypeInfo, JsonNodeOptions? options = null) + public static JsonValue? Create(T? value, JsonTypeInfo jsonTypeInfo!!, JsonNodeOptions? options = null) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - if (value == null) { return null; diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueNotTrimmable.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueNotTrimmable.cs index df596feb79a9d0..45084fefdc59ce 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueNotTrimmable.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueNotTrimmable.cs @@ -15,13 +15,8 @@ public JsonValueNotTrimmable(TValue value, JsonNodeOptions? options = null) : ba [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The ctor is marked with RequiresUnreferencedCode.")] - public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? options = null) + public override void WriteTo(Utf8JsonWriter writer!!, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - JsonSerializer.Serialize(writer, _value, options); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs index 35d010afd18bd2..13759e456d045f 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Nodes/JsonValueTrimmable.cs @@ -25,13 +25,8 @@ public JsonValueTrimmable(TValue value, JsonConverter converter, JsonNod _converter = converter; } - public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions? options = null) + public override void WriteTo(Utf8JsonWriter writer!!, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - if (_converter != null) { options ??= JsonSerializerOptions.Default; diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ConverterList.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ConverterList.cs index 58102d827e544f..dac1920eb1ca2c 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ConverterList.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/ConverterList.cs @@ -47,13 +47,8 @@ public JsonConverter this[int index] public bool IsReadOnly => false; - public void Add(JsonConverter item) + public void Add(JsonConverter item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - _options.VerifyMutable(); _list.Add(item); } @@ -84,13 +79,8 @@ public int IndexOf(JsonConverter item) return _list.IndexOf(item); } - public void Insert(int index, JsonConverter item) + public void Insert(int index, JsonConverter item!!) { - if (item == null) - { - throw new ArgumentNullException(nameof(item)); - } - _options.VerifyMutable(); _list.Insert(index, item); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonMetadataServicesConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonMetadataServicesConverter.cs index 5ee913f18d9482..2596023f6b0dd8 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonMetadataServicesConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonMetadataServicesConverter.cs @@ -41,9 +41,9 @@ internal JsonConverter Converter internal override bool ConstructorIsParameterized => Converter.ConstructorIsParameterized; - public JsonMetadataServicesConverter(Func> converterCreator, ConverterStrategy converterStrategy) + public JsonMetadataServicesConverter(Func> converterCreator!!, ConverterStrategy converterStrategy) { - _converterCreator = converterCreator ?? throw new ArgumentNullException(nameof(converterCreator)); + _converterCreator = converterCreator; _converterStrategy = converterStrategy; } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonResumableConverterOfT.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonResumableConverterOfT.cs index ccf639bdec1793..2036aaaae3f95d 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonResumableConverterOfT.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonResumableConverterOfT.cs @@ -10,13 +10,9 @@ namespace System.Text.Json.Serialization /// internal abstract class JsonResumableConverter : JsonConverter { - public sealed override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public sealed override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options!!) { // Bridge from resumable to value converters. - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } ReadStack state = default; state.Initialize(typeToConvert, options, supportContinuation: false); @@ -24,13 +20,9 @@ internal abstract class JsonResumableConverter : JsonConverter return value; } - public sealed override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) + public sealed override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options!!) { // Bridge from resumable to value converters. - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } WriteStack state = default; state.Initialize(typeof(T), options, supportContinuation: false); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Document.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Document.cs index 57a40db9afb9b3..cdd3c1e3089a25 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Document.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Document.cs @@ -27,13 +27,8 @@ public static partial class JsonSerializer /// for or its serializable members. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static TValue? Deserialize(this JsonDocument document, JsonSerializerOptions? options = null) + public static TValue? Deserialize(this JsonDocument document!!, JsonSerializerOptions? options = null) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, typeof(TValue)); return ReadDocument(document, jsonTypeInfo); } @@ -56,18 +51,8 @@ public static partial class JsonSerializer /// for or its serializable members. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize(this JsonDocument document!!, Type returnType!!, JsonSerializerOptions? options = null) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadDocument(document, jsonTypeInfo); } @@ -93,18 +78,8 @@ public static partial class JsonSerializer /// There is no compatible /// for or its serializable members. /// - public static TValue? Deserialize(this JsonDocument document, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize(this JsonDocument document!!, JsonTypeInfo jsonTypeInfo!!) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadDocument(document, jsonTypeInfo); } @@ -144,23 +119,8 @@ public static partial class JsonSerializer /// The method of the provided /// returns for the type to convert. /// - public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerContext context) + public static object? Deserialize(this JsonDocument document!!, Type returnType!!, JsonSerializerContext context!!) { - if (document == null) - { - throw new ArgumentNullException(nameof(document)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, returnType); return ReadDocument(document, jsonTypeInfo); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Element.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Element.cs index 91f49589f457db..ab22f813b59b49 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Element.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Element.cs @@ -48,13 +48,8 @@ public static partial class JsonSerializer /// for or its serializable members. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize(this JsonElement element, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize(this JsonElement element, Type returnType!!, JsonSerializerOptions? options = null) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadUsingMetadata(element, jsonTypeInfo); } @@ -76,13 +71,8 @@ public static partial class JsonSerializer /// There is no compatible /// for or its serializable members. /// - public static TValue? Deserialize(this JsonElement element, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize(this JsonElement element, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadUsingMetadata(element, jsonTypeInfo); } @@ -118,18 +108,8 @@ public static partial class JsonSerializer /// The method of the provided /// returns for the type to convert. /// - public static object? Deserialize(this JsonElement element, Type returnType, JsonSerializerContext context) + public static object? Deserialize(this JsonElement element, Type returnType!!, JsonSerializerContext context!!) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, returnType); return ReadUsingMetadata(element, jsonTypeInfo); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Node.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Node.cs index aa9675773d3b0d..68710d4595ce45 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Node.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Node.cs @@ -47,13 +47,8 @@ public static partial class JsonSerializer /// for or its serializable members. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize(this JsonNode? node, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize(this JsonNode? node, Type returnType!!, JsonSerializerOptions? options = null) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadNode(node, jsonTypeInfo); } @@ -75,13 +70,8 @@ public static partial class JsonSerializer /// There is no compatible /// for or its serializable members. /// - public static TValue? Deserialize(this JsonNode? node, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize(this JsonNode? node, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadNode(node, jsonTypeInfo); } @@ -117,18 +107,8 @@ public static partial class JsonSerializer /// The method of the provided /// returns for the type to convert. /// - public static object? Deserialize(this JsonNode? node, Type returnType, JsonSerializerContext context) + public static object? Deserialize(this JsonNode? node, Type returnType!!, JsonSerializerContext context!!) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, returnType); return ReadNode(node, jsonTypeInfo); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Span.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Span.cs index 50142fb4697f6e..741603854eb0e4 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Span.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Span.cs @@ -52,13 +52,8 @@ public static partial class JsonSerializer /// for or its serializable members. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize(ReadOnlySpan utf8Json, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize(ReadOnlySpan utf8Json, Type returnType!!, JsonSerializerOptions? options = null) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadFromSpan(utf8Json, jsonTypeInfo); } @@ -79,13 +74,8 @@ public static partial class JsonSerializer /// There is no compatible /// for or its serializable members. /// - public static TValue? Deserialize(ReadOnlySpan utf8Json, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize(ReadOnlySpan utf8Json, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadFromSpan(utf8Json, jsonTypeInfo); } @@ -112,18 +102,8 @@ public static partial class JsonSerializer /// The method on the provided /// did not return a compatible for . /// - public static object? Deserialize(ReadOnlySpan utf8Json, Type returnType, JsonSerializerContext context) + public static object? Deserialize(ReadOnlySpan utf8Json, Type returnType!!, JsonSerializerContext context!!) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - return ReadFromSpan(utf8Json, GetTypeInfo(context, returnType)); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs index 0fd54b59100513..46963245c89af2 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Stream.cs @@ -42,15 +42,10 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static ValueTask DeserializeAsync( - Stream utf8Json, + Stream utf8Json!!, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, typeof(TValue)); return ReadAllAsync(utf8Json, jsonTypeInfo, cancellationToken); } @@ -77,14 +72,9 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static TValue? Deserialize( - Stream utf8Json, + Stream utf8Json!!, JsonSerializerOptions? options = null) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - return ReadAllUsingOptions(utf8Json, typeof(TValue), options); } @@ -113,21 +103,11 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static ValueTask DeserializeAsync( - Stream utf8Json, - Type returnType, + Stream utf8Json!!, + Type returnType!!, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadAllAsync(utf8Json, jsonTypeInfo, cancellationToken); } @@ -154,20 +134,10 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static object? Deserialize( - Stream utf8Json, - Type returnType, + Stream utf8Json!!, + Type returnType!!, JsonSerializerOptions? options = null) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - return ReadAllUsingOptions(utf8Json, returnType, options); } @@ -195,20 +165,10 @@ public static partial class JsonSerializer /// for or its serializable members. /// public static ValueTask DeserializeAsync( - Stream utf8Json, - JsonTypeInfo jsonTypeInfo, + Stream utf8Json!!, + JsonTypeInfo jsonTypeInfo!!, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadAllAsync(utf8Json, jsonTypeInfo, cancellationToken); } @@ -233,19 +193,9 @@ public static partial class JsonSerializer /// for or its serializable members. /// public static TValue? Deserialize( - Stream utf8Json, - JsonTypeInfo jsonTypeInfo) + Stream utf8Json!!, + JsonTypeInfo jsonTypeInfo!!) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadAll(utf8Json, jsonTypeInfo); } @@ -277,26 +227,11 @@ public static partial class JsonSerializer /// did not return a compatible for . /// public static ValueTask DeserializeAsync( - Stream utf8Json, - Type returnType, - JsonSerializerContext context, + Stream utf8Json!!, + Type returnType!!, + JsonSerializerContext context!!, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - return ReadAllAsync(utf8Json, GetTypeInfo(context, returnType), cancellationToken); } @@ -325,25 +260,10 @@ public static partial class JsonSerializer /// did not return a compatible for . /// public static object? Deserialize( - Stream utf8Json, - Type returnType, - JsonSerializerContext context) + Stream utf8Json!!, + Type returnType!!, + JsonSerializerContext context!!) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - return ReadAll(utf8Json, GetTypeInfo(context, returnType)); } @@ -362,15 +282,10 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static IAsyncEnumerable DeserializeAsyncEnumerable( - Stream utf8Json, + Stream utf8Json!!, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - options ??= JsonSerializerOptions.Default; if (!options.IsInitializedForReflectionSerializer) { diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.String.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.String.cs index 9056413479aca0..edf1f421d08c90 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.String.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.String.cs @@ -42,13 +42,8 @@ public static partial class JsonSerializer /// UTF-8 methods since the implementation natively uses UTF-8. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json, JsonSerializerOptions? options = null) + public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json!!, JsonSerializerOptions? options = null) { - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, typeof(TValue)); return ReadFromSpan(json.AsSpan(), jsonTypeInfo); } @@ -114,18 +109,8 @@ public static partial class JsonSerializer /// UTF-8 methods since the implementation natively uses UTF-8. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json!!, Type returnType!!, JsonSerializerOptions? options = null) { - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadFromSpan(json.AsSpan(), jsonTypeInfo)!; } @@ -158,15 +143,10 @@ public static partial class JsonSerializer /// UTF-8 methods since the implementation natively uses UTF-8. /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, Type returnType!!, JsonSerializerOptions? options = null) { // default/null span is treated as empty - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return ReadFromSpan(json, jsonTypeInfo)!; } @@ -202,20 +182,8 @@ public static partial class JsonSerializer /// Using a is not as efficient as using the /// UTF-8 methods since the implementation natively uses UTF-8. /// - public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json!!, JsonTypeInfo jsonTypeInfo!!) { - // default/null span is treated as empty - - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadFromSpan(json.AsSpan(), jsonTypeInfo); } @@ -250,15 +218,8 @@ public static partial class JsonSerializer /// Using a is not as efficient as using the /// UTF-8 methods since the implementation natively uses UTF-8. /// - public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, JsonTypeInfo jsonTypeInfo!!) { - // default/null span is treated as empty - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return ReadFromSpan(json, jsonTypeInfo); } @@ -297,23 +258,8 @@ public static partial class JsonSerializer /// Using a is not as efficient as using the /// UTF-8 methods since the implementation natively uses UTF-8. /// - public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json, Type returnType, JsonSerializerContext context) + public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] string json!!, Type returnType!!, JsonSerializerContext context!!) { - if (json == null) - { - throw new ArgumentNullException(nameof(json)); - } - - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, returnType); return ReadFromSpan(json.AsSpan(), jsonTypeInfo); } @@ -353,18 +299,8 @@ public static partial class JsonSerializer /// Using a is not as efficient as using the /// UTF-8 methods since the implementation natively uses UTF-8. /// - public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, Type returnType, JsonSerializerContext context) + public static object? Deserialize([StringSyntax(StringSyntaxAttribute.Json)] ReadOnlySpan json, Type returnType!!, JsonSerializerContext context!!) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, returnType); return ReadFromSpan(json, jsonTypeInfo); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Utf8JsonReader.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Utf8JsonReader.cs index 8bc8bf3818bb08..0ff6131735c660 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Utf8JsonReader.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Read.Utf8JsonReader.cs @@ -107,13 +107,8 @@ public static partial class JsonSerializer /// /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] - public static object? Deserialize(ref Utf8JsonReader reader, Type returnType, JsonSerializerOptions? options = null) + public static object? Deserialize(ref Utf8JsonReader reader, Type returnType!!, JsonSerializerOptions? options = null) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, returnType); return Read(ref reader, jsonTypeInfo); } @@ -161,13 +156,8 @@ public static partial class JsonSerializer /// Hence, , , and are used while reading. /// /// - public static TValue? Deserialize(ref Utf8JsonReader reader, JsonTypeInfo jsonTypeInfo) + public static TValue? Deserialize(ref Utf8JsonReader reader, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return Read(ref reader, jsonTypeInfo); } @@ -220,18 +210,8 @@ public static partial class JsonSerializer /// Hence, , , and are used while reading. /// /// - public static object? Deserialize(ref Utf8JsonReader reader, Type returnType, JsonSerializerContext context) + public static object? Deserialize(ref Utf8JsonReader reader, Type returnType!!, JsonSerializerContext context!!) { - if (returnType == null) - { - throw new ArgumentNullException(nameof(returnType)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - return Read(ref reader, GetTypeInfo(context, returnType)); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.ByteArray.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.ByteArray.cs index 5e7bd64a797e3c..aa280ec24cf166 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.ByteArray.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.ByteArray.cs @@ -70,13 +70,8 @@ public static byte[] SerializeToUtf8Bytes( /// /// is . /// - public static byte[] SerializeToUtf8Bytes(TValue value, JsonTypeInfo jsonTypeInfo) + public static byte[] SerializeToUtf8Bytes(TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return WriteBytesUsingGeneratedSerializer(value, jsonTypeInfo); } @@ -101,13 +96,8 @@ public static byte[] SerializeToUtf8Bytes(TValue value, JsonTypeInfo method of the provided /// returns for the type to convert. /// - public static byte[] SerializeToUtf8Bytes(object? value, Type inputType, JsonSerializerContext context) + public static byte[] SerializeToUtf8Bytes(object? value, Type inputType, JsonSerializerContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, runtimeType); return WriteBytesUsingGeneratedSerializer(value!, jsonTypeInfo); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Document.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Document.cs index ec4db4ff708fe0..cbf552e87bb186 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Document.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Document.cs @@ -68,13 +68,8 @@ public static JsonDocument SerializeToDocument(object? value, Type inputType, Js /// /// is . /// - public static JsonDocument SerializeToDocument(TValue value, JsonTypeInfo jsonTypeInfo) + public static JsonDocument SerializeToDocument(TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return WriteDocumentUsingGeneratedSerializer(value, jsonTypeInfo); } @@ -96,13 +91,8 @@ public static JsonDocument SerializeToDocument(TValue value, JsonTypeInf /// /// or is . /// - public static JsonDocument SerializeToDocument(object? value, Type inputType, JsonSerializerContext context) + public static JsonDocument SerializeToDocument(object? value, Type inputType, JsonSerializerContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); return WriteDocumentUsingGeneratedSerializer(value, GetTypeInfo(context, runtimeType)); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Element.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Element.cs index f28b67bcfe29f7..b70d18a46cc40a 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Element.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Element.cs @@ -68,13 +68,8 @@ public static JsonElement SerializeToElement(object? value, Type inputType, Json /// /// is . /// - public static JsonElement SerializeToElement(TValue value, JsonTypeInfo jsonTypeInfo) + public static JsonElement SerializeToElement(TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return WriteElementUsingGeneratedSerializer(value, jsonTypeInfo); } @@ -96,13 +91,8 @@ public static JsonElement SerializeToElement(TValue value, JsonTypeInfo< /// /// or is . /// - public static JsonElement SerializeToElement(object? value, Type inputType, JsonSerializerContext context) + public static JsonElement SerializeToElement(object? value, Type inputType, JsonSerializerContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type type = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo typeInfo = GetTypeInfo(context, type); return WriteElementUsingGeneratedSerializer(value, typeInfo); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Helpers.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Helpers.cs index 761798f14d921d..415f1417ae6071 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Helpers.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Helpers.cs @@ -96,13 +96,8 @@ private static Type GetRuntimeType(in TValue value) return type; } - private static Type GetRuntimeTypeAndValidateInputType(object? value, Type inputType) + private static Type GetRuntimeTypeAndValidateInputType(object? value, Type inputType!!) { - if (inputType is null) - { - throw new ArgumentNullException(nameof(inputType)); - } - if (value is not null) { Type runtimeType = value.GetType(); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Node.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Node.cs index 98ae1c6b1ee515..4592c3bcdacab7 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Node.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Node.cs @@ -69,13 +69,8 @@ public static partial class JsonSerializer /// /// is . /// - public static JsonNode? SerializeToNode(TValue value, JsonTypeInfo jsonTypeInfo) + public static JsonNode? SerializeToNode(TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return WriteNodeUsingGeneratedSerializer(value, jsonTypeInfo); } @@ -97,13 +92,8 @@ public static partial class JsonSerializer /// /// or is . /// - public static JsonNode? SerializeToNode(object? value, Type inputType, JsonSerializerContext context) + public static JsonNode? SerializeToNode(object? value, Type inputType, JsonSerializerContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, runtimeType); return WriteNodeUsingGeneratedSerializer(value, jsonTypeInfo); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Stream.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Stream.cs index 50722caeb3a9ac..bc71fa13dec703 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Stream.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Stream.cs @@ -39,16 +39,11 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static Task SerializeAsync( - Stream utf8Json, + Stream utf8Json!!, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - Type runtimeType = GetRuntimeType(value); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); return WriteStreamAsync(utf8Json, value!, jsonTypeInfo, cancellationToken); @@ -70,15 +65,10 @@ public static Task SerializeAsync( /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static void Serialize( - Stream utf8Json, + Stream utf8Json!!, TValue value, JsonSerializerOptions? options = null) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - Type runtimeType = GetRuntimeType(value); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); WriteStream(utf8Json, value!, jsonTypeInfo); @@ -105,17 +95,12 @@ public static void Serialize( /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static Task SerializeAsync( - Stream utf8Json, + Stream utf8Json!!, object? value, Type inputType, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); return WriteStreamAsync(utf8Json, value!, jsonTypeInfo, cancellationToken); @@ -140,16 +125,11 @@ public static Task SerializeAsync( /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static void Serialize( - Stream utf8Json, + Stream utf8Json!!, object? value, Type inputType, JsonSerializerOptions? options = null) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); WriteStream(utf8Json, value!, jsonTypeInfo); @@ -172,21 +152,11 @@ public static void Serialize( /// for or its serializable members. /// public static Task SerializeAsync( - Stream utf8Json, + Stream utf8Json!!, TValue value, - JsonTypeInfo jsonTypeInfo, + JsonTypeInfo jsonTypeInfo!!, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - return WriteStreamAsync(utf8Json, value, jsonTypeInfo, cancellationToken); } @@ -205,20 +175,10 @@ public static Task SerializeAsync( /// for or its serializable members. /// public static void Serialize( - Stream utf8Json, + Stream utf8Json!!, TValue value, - JsonTypeInfo jsonTypeInfo) + JsonTypeInfo jsonTypeInfo!!) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - WriteStream(utf8Json, value, jsonTypeInfo); } @@ -242,22 +202,12 @@ public static void Serialize( /// for or its serializable members. /// public static Task SerializeAsync( - Stream utf8Json, + Stream utf8Json!!, object? value, Type inputType, - JsonSerializerContext context, + JsonSerializerContext context!!, CancellationToken cancellationToken = default) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); return WriteStreamAsync( utf8Json, @@ -284,21 +234,11 @@ public static Task SerializeAsync( /// for or its serializable members. /// public static void Serialize( - Stream utf8Json, + Stream utf8Json!!, object? value, Type inputType, - JsonSerializerContext context) + JsonSerializerContext context!!) { - if (utf8Json == null) - { - throw new ArgumentNullException(nameof(utf8Json)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); WriteStream(utf8Json, value!, GetTypeInfo(context, runtimeType)); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.String.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.String.cs index cb5a5055ac512a..7e24645a4e8c04 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.String.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.String.cs @@ -109,25 +109,15 @@ public static string Serialize(TValue value, JsonTypeInfo jsonTy /// encoding since the implementation internally uses UTF-8. See also /// and . /// - public static string Serialize(object? value, Type inputType, JsonSerializerContext context) + public static string Serialize(object? value, Type inputType, JsonSerializerContext context!!) { - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type type = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(context, type); return WriteStringUsingGeneratedSerializer(value, jsonTypeInfo); } - private static string WriteStringUsingGeneratedSerializer(in TValue value, JsonTypeInfo? jsonTypeInfo) + private static string WriteStringUsingGeneratedSerializer(in TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - JsonSerializerOptions options = jsonTypeInfo.Options; using (var output = new PooledByteBufferWriter(options.DefaultBufferSize)) @@ -141,13 +131,8 @@ private static string WriteStringUsingGeneratedSerializer(in TValue valu } } - private static string WriteStringUsingSerializer(in TValue value, JsonTypeInfo? jsonTypeInfo) + private static string WriteStringUsingSerializer(in TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - JsonSerializerOptions options = jsonTypeInfo.Options; using (var output = new PooledByteBufferWriter(options.DefaultBufferSize)) diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Utf8JsonWriter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Utf8JsonWriter.cs index 94be4809a78b3c..526969f3c0df56 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Utf8JsonWriter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Utf8JsonWriter.cs @@ -25,15 +25,10 @@ public static partial class JsonSerializer /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static void Serialize( - Utf8JsonWriter writer, + Utf8JsonWriter writer!!, TValue value, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - Type runtimeType = GetRuntimeType(value); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); WriteUsingSerializer(writer, value, jsonTypeInfo); @@ -58,16 +53,11 @@ public static void Serialize( /// [RequiresUnreferencedCode(SerializationUnreferencedCodeMessage)] public static void Serialize( - Utf8JsonWriter writer, + Utf8JsonWriter writer!!, object? value, Type inputType, JsonSerializerOptions? options = null) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); JsonTypeInfo jsonTypeInfo = GetTypeInfo(options, runtimeType); WriteUsingSerializer(writer, value, jsonTypeInfo); @@ -87,18 +77,8 @@ public static void Serialize( /// There is no compatible /// for or its serializable members. /// - public static void Serialize(Utf8JsonWriter writer, TValue value, JsonTypeInfo jsonTypeInfo) + public static void Serialize(Utf8JsonWriter writer!!, TValue value, JsonTypeInfo jsonTypeInfo!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - - if (jsonTypeInfo == null) - { - throw new ArgumentNullException(nameof(jsonTypeInfo)); - } - WriteUsingGeneratedSerializer(writer, value, jsonTypeInfo); } @@ -123,18 +103,8 @@ public static void Serialize(Utf8JsonWriter writer, TValue value, JsonTy /// The method of the provided /// returns for the type to convert. /// - public static void Serialize(Utf8JsonWriter writer, object? value, Type inputType, JsonSerializerContext context) + public static void Serialize(Utf8JsonWriter writer!!, object? value, Type inputType, JsonSerializerContext context!!) { - if (writer == null) - { - throw new ArgumentNullException(nameof(writer)); - } - - if (context == null) - { - throw new ArgumentNullException(nameof(context)); - } - Type runtimeType = GetRuntimeTypeAndValidateInputType(value, inputType); WriteUsingGeneratedSerializer(writer, value, GetTypeInfo(context, runtimeType)); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs index 4276d374058934..37697698c1cff8 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.Converters.cs @@ -161,13 +161,8 @@ internal JsonConverter DetermineConverter(Type? parentClassType, Type runtimePro /// for or its serializable members. /// [RequiresUnreferencedCode("Getting a converter for a type may require reflection which depends on unreferenced code.")] - public JsonConverter GetConverter(Type typeToConvert) + public JsonConverter GetConverter(Type typeToConvert!!) { - if (typeToConvert == null) - { - throw new ArgumentNullException(nameof(typeToConvert)); - } - RootBuiltInConverters(); return GetConverterInternal(typeToConvert); } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs index 9b280c2904a81f..fb5495a44c31ba 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs @@ -83,13 +83,8 @@ public JsonSerializerOptions() /// /// is . /// - public JsonSerializerOptions(JsonSerializerOptions options) + public JsonSerializerOptions(JsonSerializerOptions options!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - _memberAccessorStrategy = options._memberAccessorStrategy; _dictionaryKeyPolicy = options._dictionaryKeyPolicy; _jsonPropertyNamingPolicy = options._jsonPropertyNamingPolicy; diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Collections.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Collections.cs index ce81b4544f9823..13393773be79c3 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Collections.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Collections.cs @@ -80,14 +80,14 @@ public static JsonTypeInfo CreateDictionaryInfo CreateImmutableDictionaryInfo( JsonSerializerOptions options, JsonCollectionInfoValues collectionInfo, - Func>, TCollection> createRangeFunc) + Func>, TCollection> createRangeFunc!!) where TCollection : IReadOnlyDictionary where TKey : notnull => new JsonTypeInfoInternal( options, collectionInfo, () => new ImmutableDictionaryOfTKeyTValueConverter(), - createObjectWithArgs: createRangeFunc ?? throw new ArgumentNullException(nameof(createRangeFunc))); + createObjectWithArgs: createRangeFunc); /// /// Creates serialization metadata for types assignable to . @@ -144,13 +144,13 @@ public static JsonTypeInfo CreateIReadOnlyDictionaryInfo CreateImmutableEnumerableInfo( JsonSerializerOptions options, JsonCollectionInfoValues collectionInfo, - Func, TCollection> createRangeFunc) + Func, TCollection> createRangeFunc!!) where TCollection : IEnumerable => new JsonTypeInfoInternal( options, collectionInfo, () => new ImmutableEnumerableOfTConverter(), - createObjectWithArgs: createRangeFunc ?? throw new ArgumentNullException(nameof(createRangeFunc))); + createObjectWithArgs: createRangeFunc); /// /// Creates serialization metadata for types assignable to . @@ -369,14 +369,14 @@ public static JsonTypeInfo CreateQueueInfo( private static JsonTypeInfo CreateStackOrQueueInfo( JsonSerializerOptions options, JsonCollectionInfoValues collectionInfo, - Action addFunc) + Action addFunc!!) where TCollection : IEnumerable => new JsonTypeInfoInternal( options, collectionInfo, () => new StackOrQueueConverter(), createObjectWithArgs: null, - addFunc: addFunc ?? throw new ArgumentNullException(nameof(addFunc))); + addFunc: addFunc); /// /// Creates serialization metadata for types assignable to . diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Converters.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Converters.cs index e9173db256403b..7a2536650553c4 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Converters.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.Converters.cs @@ -218,8 +218,8 @@ public static JsonConverter GetUnsupportedTypeConverter() /// The to use for serialization and deserialization. /// A instance that converts values. /// This API is for use by the output of the System.Text.Json source generator and should not be called directly. - public static JsonConverter GetEnumConverter(JsonSerializerOptions options) where T : struct, Enum - => new EnumConverter(EnumConverterOptions.AllowNumbers, options ?? throw new ArgumentNullException(nameof(options))); + public static JsonConverter GetEnumConverter(JsonSerializerOptions options!!) where T : struct, Enum + => new EnumConverter(EnumConverterOptions.AllowNumbers, options); /// /// Creates a instance that converts values. @@ -228,13 +228,8 @@ public static JsonConverter GetEnumConverter(JsonSerializerOptions options /// Serialization metadata for the underlying nullable type. /// A instance that converts values /// This API is for use by the output of the System.Text.Json source generator and should not be called directly. - public static JsonConverter GetNullableConverter(JsonTypeInfo underlyingTypeInfo) where T : struct + public static JsonConverter GetNullableConverter(JsonTypeInfo underlyingTypeInfo!!) where T : struct { - if (underlyingTypeInfo == null) - { - throw new ArgumentNullException(nameof(underlyingTypeInfo)); - } - JsonConverter? underlyingConverter = underlyingTypeInfo.PropertyInfoForTypeInfo?.ConverterBase as JsonConverter; if (underlyingConverter == null) { diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.cs index 14d002cf7cb1e6..ef3e8813b3c0f8 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonMetadataServices.cs @@ -20,18 +20,8 @@ public static partial class JsonMetadataServices /// Provides serialization metadata about the property or field. /// A instance intialized with the provided metadata. /// This API is for use by the output of the System.Text.Json source generator and should not be called directly. - public static JsonPropertyInfo CreatePropertyInfo(JsonSerializerOptions options, JsonPropertyInfoValues propertyInfo) + public static JsonPropertyInfo CreatePropertyInfo(JsonSerializerOptions options!!, JsonPropertyInfoValues propertyInfo!!) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - - if (propertyInfo == null) - { - throw new ArgumentNullException(nameof(propertyInfo)); - } - Type? declaringType = propertyInfo.DeclaringType; if (declaringType == null) { @@ -79,10 +69,8 @@ public static JsonPropertyInfo CreatePropertyInfo(JsonSerializerOptions optio /// Thrown when or is null. /// A instance representing the class or struct. /// This API is for use by the output of the System.Text.Json source generator and should not be called directly. - public static JsonTypeInfo CreateObjectInfo(JsonSerializerOptions options, JsonObjectInfoValues objectInfo) where T : notnull - => new JsonTypeInfoInternal( - options ?? throw new ArgumentNullException(nameof(options)), - objectInfo ?? throw new ArgumentNullException(nameof(objectInfo))); + public static JsonTypeInfo CreateObjectInfo(JsonSerializerOptions options!!, JsonObjectInfoValues objectInfo!!) where T : notnull + => new JsonTypeInfoInternal(options, objectInfo); /// /// Creates metadata for a primitive or a type with a custom converter. 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 aea2e5a8e8c289..547173ba0f39e3 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 @@ -138,10 +138,10 @@ internal JsonTypeInfo() Debug.Assert(false, "This constructor should not be called."); } - internal JsonTypeInfo(Type type, JsonSerializerOptions options, bool dummy) + internal JsonTypeInfo(Type type, JsonSerializerOptions options!!, bool dummy) { Type = type; - Options = options ?? throw new ArgumentNullException(nameof(options)); + Options = options; // Setting this option is deferred to the initialization methods of the various metadada info types. PropertyInfoForTypeInfo = null!; } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoInternalOfT.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoInternalOfT.cs index 552b49658dddd2..6b7e9ed44f432a 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoInternalOfT.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoInternalOfT.cs @@ -55,17 +55,12 @@ public JsonTypeInfoInternal(JsonSerializerOptions options, JsonObjectInfoValues< /// public JsonTypeInfoInternal( JsonSerializerOptions options, - JsonCollectionInfoValues collectionInfo, + JsonCollectionInfoValues collectionInfo!!, Func> converterCreator, object? createObjectWithArgs = null, object? addFunc = null) : base(typeof(T), options) { - if (collectionInfo == null) - { - throw new ArgumentNullException(nameof(collectionInfo)); - } - ConverterStrategy strategy = collectionInfo.KeyInfo == null ? ConverterStrategy.Enumerable : ConverterStrategy.Dictionary; JsonConverter converter = new JsonMetadataServicesConverter(converterCreator, strategy); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Bytes.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Bytes.cs index 7ea9b37514cbaf..7950219bf52cd3 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Bytes.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Bytes.cs @@ -47,8 +47,8 @@ public void WriteBase64String(JsonEncodedText propertyName, ReadOnlySpan b /// /// The property name is escaped before writing. /// - public void WriteBase64String(string propertyName, ReadOnlySpan bytes) - => WriteBase64String((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), bytes); + public void WriteBase64String(string propertyName!!, ReadOnlySpan bytes) + => WriteBase64String(propertyName.AsSpan(), bytes); /// /// Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTime.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTime.cs index 77b8975332cd96..7c4631a9bbc0ed 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTime.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTime.cs @@ -50,8 +50,8 @@ public void WriteString(JsonEncodedText propertyName, DateTime value) /// Writes the using the round-trippable ('O') , for example: 2017-06-12T05:30:45.7680000. /// The property name is escaped before writing. /// - public void WriteString(string propertyName, DateTime value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteString(string propertyName!!, DateTime value) + => WriteString(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON string) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTimeOffset.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTimeOffset.cs index 6b1013d9868ccf..b001530e27ad47 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTimeOffset.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.DateTimeOffset.cs @@ -49,8 +49,8 @@ public void WriteString(JsonEncodedText propertyName, DateTimeOffset value) /// Writes the using the round-trippable ('O') , for example: 2017-06-12T05:30:45.7680000-07:00. /// The property name is escaped before writing. /// - public void WriteString(string propertyName, DateTimeOffset value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteString(string propertyName!!, DateTimeOffset value) + => WriteString(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON string) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Decimal.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Decimal.cs index ef2e614549e783..945d33269a2ed5 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Decimal.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Decimal.cs @@ -49,8 +49,8 @@ public void WriteNumber(JsonEncodedText propertyName, decimal value) /// Writes the using the default (that is, 'G'). /// The property name is escaped before writing. /// - public void WriteNumber(string propertyName, decimal value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteNumber(string propertyName!!, decimal value) + => WriteNumber(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Double.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Double.cs index 658267052137a0..7b9e52a4e9c8fb 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Double.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Double.cs @@ -51,8 +51,8 @@ public void WriteNumber(JsonEncodedText propertyName, double value) /// Writes the using the default (that is, 'G'). /// The property name is escaped before writing. /// - public void WriteNumber(string propertyName, double value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteNumber(string propertyName!!, double value) + => WriteNumber(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Float.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Float.cs index 7f85eedf18acb1..8c6d3a8a1aafc3 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Float.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Float.cs @@ -51,8 +51,8 @@ public void WriteNumber(JsonEncodedText propertyName, float value) /// Writes the using the default (that is, 'G'). /// The property name is escaped before writing. /// - public void WriteNumber(string propertyName, float value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteNumber(string propertyName!!, float value) + => WriteNumber(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Guid.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Guid.cs index 5d918437b1cd3e..a45c0d123350cb 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Guid.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Guid.cs @@ -49,8 +49,8 @@ public void WriteString(JsonEncodedText propertyName, Guid value) /// Writes the using the default (that is, 'D'), as the form: nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn. /// The property name is escaped before writing. /// - public void WriteString(string propertyName, Guid value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteString(string propertyName!!, Guid value) + => WriteString(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON string) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Literal.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Literal.cs index 5525f6fd80c541..5295155a6fd43d 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Literal.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.Literal.cs @@ -71,8 +71,8 @@ private void WriteLiteralHelper(ReadOnlySpan utf8PropertyName, ReadOnlySpa /// /// The property name is escaped before writing. /// - public void WriteNull(string propertyName) - => WriteNull((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan()); + public void WriteNull(string propertyName!!) + => WriteNull(propertyName.AsSpan()); /// /// Writes the property name and the JSON literal "null" as part of a name/value pair of a JSON object. @@ -163,8 +163,8 @@ public void WriteBoolean(JsonEncodedText propertyName, bool value) /// /// The property name is escaped before writing. /// - public void WriteBoolean(string propertyName, bool value) - => WriteBoolean((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteBoolean(string propertyName!!, bool value) + => WriteBoolean(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON literal "true" or "false") as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.SignedNumber.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.SignedNumber.cs index e2da3682635cd1..83550997f97a9a 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.SignedNumber.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.SignedNumber.cs @@ -49,8 +49,8 @@ public void WriteNumber(JsonEncodedText propertyName, long value) /// Writes the using the default (that is, 'G'), for example: 32767. /// The property name is escaped before writing. /// - public void WriteNumber(string propertyName, long value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteNumber(string propertyName!!, long value) + => WriteNumber(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. @@ -134,8 +134,8 @@ public void WriteNumber(JsonEncodedText propertyName, int value) /// Writes the using the default (that is, 'G'), for example: 32767. /// The property name is escaped before writing. /// - public void WriteNumber(string propertyName, int value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), (long)value); + public void WriteNumber(string propertyName!!, int value) + => WriteNumber(propertyName.AsSpan(), (long)value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.String.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.String.cs index 543afe1c89df71..d1fd030cde4fb2 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.String.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.String.cs @@ -65,8 +65,8 @@ private void WritePropertyNameHelper(ReadOnlySpan utf8PropertyName) /// /// The property name is escaped before writing. /// - public void WritePropertyName(string propertyName) - => WritePropertyName((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan()); + public void WritePropertyName(string propertyName!!) + => WritePropertyName(propertyName.AsSpan()); /// /// Writes the property name (as a JSON string) as the first part of a name/value pair of a JSON object. @@ -452,8 +452,8 @@ private void WriteStringHelper(ReadOnlySpan utf8PropertyName, ReadOnlySpan /// /// The property name is escaped before writing. /// - public void WriteString(string propertyName, JsonEncodedText value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteString(string propertyName!!, JsonEncodedText value) + => WriteString(propertyName.AsSpan(), value); /// /// Writes the property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. @@ -478,13 +478,8 @@ public void WriteString(string propertyName, JsonEncodedText value) /// as if were called. /// /// - public void WriteString(string propertyName, string? value) + public void WriteString(string propertyName!!, string? value) { - if (propertyName == null) - { - throw new ArgumentNullException(nameof(propertyName)); - } - if (value == null) { WriteNull(propertyName.AsSpan()); @@ -632,8 +627,8 @@ private void WriteStringHelperEscapeValue(ReadOnlySpan utf8PropertyName, R /// /// The property name and value is escaped before writing. /// - public void WriteString(string propertyName, ReadOnlySpan value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteString(string propertyName!!, ReadOnlySpan value) + => WriteString(propertyName.AsSpan(), value); /// /// Writes the UTF-8 property name and text value (as a JSON string) as part of a name/value pair of a JSON object. @@ -716,8 +711,8 @@ private void WriteStringHelperEscapeValue(ReadOnlySpan utf8PropertyName, R /// /// The property name and value is escaped before writing. /// - public void WriteString(string propertyName, ReadOnlySpan utf8Value) - => WriteString((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), utf8Value); + public void WriteString(string propertyName!!, ReadOnlySpan utf8Value) + => WriteString(propertyName.AsSpan(), utf8Value); /// /// Writes the property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.UnsignedNumber.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.UnsignedNumber.cs index 0ca71b89c37d5e..bbf9728518cd25 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.UnsignedNumber.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteProperties.UnsignedNumber.cs @@ -51,8 +51,8 @@ public void WriteNumber(JsonEncodedText propertyName, ulong value) /// The property name is escaped before writing. /// [CLSCompliant(false)] - public void WriteNumber(string propertyName, ulong value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), value); + public void WriteNumber(string propertyName!!, ulong value) + => WriteNumber(propertyName.AsSpan(), value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. @@ -140,8 +140,8 @@ public void WriteNumber(JsonEncodedText propertyName, uint value) /// The property name is escaped before writing. /// [CLSCompliant(false)] - public void WriteNumber(string propertyName, uint value) - => WriteNumber((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan(), (ulong)value); + public void WriteNumber(string propertyName!!, uint value) + => WriteNumber(propertyName.AsSpan(), (ulong)value); /// /// Writes the property name and value (as a JSON number) as part of a name/value pair of a JSON object. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteValues.Comment.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteValues.Comment.cs index d7696e1fbb09a9..3cac73e64cd36a 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteValues.Comment.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.WriteValues.Comment.cs @@ -25,8 +25,8 @@ public sealed partial class Utf8JsonWriter /// /// The comment value is not escaped before writing. /// - public void WriteCommentValue(string value) - => WriteCommentValue((value ?? throw new ArgumentNullException(nameof(value))).AsSpan()); + public void WriteCommentValue(string value!!) + => WriteCommentValue(value.AsSpan()); /// /// Writes the text value (as a JSON comment). diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.cs index 9b22c33ac7d8f7..b6a11e72c8b811 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Writer/Utf8JsonWriter.cs @@ -99,9 +99,9 @@ public sealed partial class Utf8JsonWriter : IDisposable, IAsyncDisposable /// /// Thrown when the instance of that is passed in is null. /// - public Utf8JsonWriter(IBufferWriter bufferWriter, JsonWriterOptions options = default) + public Utf8JsonWriter(IBufferWriter bufferWriter!!, JsonWriterOptions options = default) { - _output = bufferWriter ?? throw new ArgumentNullException(nameof(bufferWriter)); + _output = bufferWriter; _options = options; if (_options.MaxDepth == 0) @@ -120,10 +120,8 @@ public Utf8JsonWriter(IBufferWriter bufferWriter, JsonWriterOptions option /// /// Thrown when the instance of that is passed in is null. /// - public Utf8JsonWriter(Stream utf8Json, JsonWriterOptions options = default) + public Utf8JsonWriter(Stream utf8Json!!, JsonWriterOptions options = default) { - if (utf8Json == null) - throw new ArgumentNullException(nameof(utf8Json)); if (!utf8Json.CanWrite) throw new ArgumentException(SR.StreamNotWritable); @@ -706,8 +704,8 @@ private void WriteStartEscapeProperty(ReadOnlySpan utf8PropertyName, byte /// Thrown when the depth of the JSON has exceeded the maximum depth of 1000 /// OR if this would result in invalid JSON being written (while validation is enabled). /// - public void WriteStartArray(string propertyName) - => WriteStartArray((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan()); + public void WriteStartArray(string propertyName!!) + => WriteStartArray(propertyName.AsSpan()); /// /// Writes the beginning of a JSON object with a property name as the key. @@ -726,8 +724,8 @@ public void WriteStartArray(string propertyName) /// Thrown when the depth of the JSON has exceeded the maximum depth of 1000 /// OR if this would result in invalid JSON being written (while validation is enabled). /// - public void WriteStartObject(string propertyName) - => WriteStartObject((propertyName ?? throw new ArgumentNullException(nameof(propertyName))).AsSpan()); + public void WriteStartObject(string propertyName!!) + => WriteStartObject(propertyName.AsSpan()); /// /// Writes the beginning of a JSON array with a property name as the key. 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 66f1c3c912d10f..6ad72300aba2d9 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 @@ -1354,6 +1354,7 @@ public void StructWithPropertyInit_OverrideInitedProperty() public struct StructWithPropertyInit { + public StructWithPropertyInit() { B = 0; } public long A { get; set; } = 42; public long B { get; set; } } @@ -1369,6 +1370,7 @@ public void StructWithFieldInit_DeseralizeEmptyObject() public struct StructWithFieldInit { + public StructWithFieldInit() { A = 0; } public long A; public long B = 42; } diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSerializerWrapper.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSerializerWrapper.cs index 9e530574950501..d348d10be8ea1d 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSerializerWrapper.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSerializerWrapper.cs @@ -16,10 +16,10 @@ internal sealed class StringSerializerWrapper : JsonSerializerWrapperForString protected internal override bool SupportsNullValueOnDeserialize => false; - public StringSerializerWrapper(JsonSerializerContext defaultContext, Func customContextCreator) + public StringSerializerWrapper(JsonSerializerContext defaultContext!!, Func customContextCreator!!) { - _defaultContext = defaultContext ?? throw new ArgumentNullException(nameof(defaultContext)); - _customContextCreator = customContextCreator ?? throw new ArgumentNullException(nameof(defaultContext)); + _defaultContext = defaultContext; + _customContextCreator = customContextCreator; } protected internal override Task SerializeWrapper(object value, Type type, JsonSerializerOptions? options = null) @@ -125,10 +125,10 @@ internal sealed class StreamSerializerWrapper : JsonSerializerWrapperForStream private readonly JsonSerializerContext _defaultContext; private readonly Func _customContextCreator; - public StreamSerializerWrapper(JsonSerializerContext defaultContext, Func customContextCreator) + public StreamSerializerWrapper(JsonSerializerContext defaultContext!!, Func customContextCreator!!) { - _defaultContext = defaultContext ?? throw new ArgumentNullException(nameof(defaultContext)); - _customContextCreator = customContextCreator ?? throw new ArgumentNullException(nameof(defaultContext)); + _defaultContext = defaultContext; + _customContextCreator = customContextCreator; } protected internal override async Task DeserializeWrapper(Stream utf8Json, JsonSerializerOptions? options = null) diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/CustomConverterTests/CustomConverterTests.DictionaryInt32StringKeyValueConverter.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/CustomConverterTests/CustomConverterTests.DictionaryInt32StringKeyValueConverter.cs index 58980dbe5b0c7c..7b00d0a4f9380c 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/CustomConverterTests/CustomConverterTests.DictionaryInt32StringKeyValueConverter.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/CustomConverterTests/CustomConverterTests.DictionaryInt32StringKeyValueConverter.cs @@ -17,7 +17,7 @@ internal class DictionaryInt32StringKeyValueConverter : JsonConverter> _intToStringConverter; - public DictionaryInt32StringKeyValueConverter(JsonSerializerOptions options) + public DictionaryInt32StringKeyValueConverter(JsonSerializerOptions options!!) { if (options == null) { diff --git a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/CollectionDebuggerProxy.cs b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/CollectionDebuggerProxy.cs index dc7204e49a3aa4..78eb4be6400c24 100644 --- a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/CollectionDebuggerProxy.cs +++ b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/CollectionDebuggerProxy.cs @@ -10,8 +10,8 @@ internal sealed class CollectionDebuggerProxy { private readonly ICollection _collection; - public CollectionDebuggerProxy(ICollection collection) => - _collection = collection ?? throw new ArgumentNullException(nameof(collection)); + public CollectionDebuggerProxy(ICollection collection!!) => + _collection = collection; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public T[] Items diff --git a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompilationInfo.cs b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompilationInfo.cs index dba088035ce8b6..810e481561d17f 100644 --- a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompilationInfo.cs +++ b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompilationInfo.cs @@ -56,7 +56,11 @@ public string Namespace { get => _nspace; [MemberNotNull(nameof(_nspace))] - set => _nspace = value ?? throw new ArgumentNullException(nameof(Namespace)); + set + { + ArgumentNullException.ThrowIfNull(value, nameof(Namespace)); + _nspace = value; + } } public RegexOptions Options { get; set; } @@ -65,7 +69,11 @@ public string Pattern { get => _pattern; [MemberNotNull(nameof(_pattern))] - set => _pattern = value ?? throw new ArgumentNullException(nameof(Pattern)); + set + { + ArgumentNullException.ThrowIfNull(value, nameof(Pattern)); + _pattern = value; + } } } } diff --git a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexMatcher.cs b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexMatcher.cs index c941c6840c458a..7931bd41986690 100644 --- a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexMatcher.cs +++ b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexMatcher.cs @@ -238,8 +238,10 @@ internal SymbolicRegexMatcher(SymbolicRegexNode sr, RegexCode code, Ch /// Interface for transitions used by the method. private interface ITransition { +#pragma warning disable CA2252 // This API requires opting into preview features /// Find the next state given the current state and next character. - DfaMatchingState TakeTransition(SymbolicRegexMatcher matcher, DfaMatchingState currentState, int mintermId, TSetType minterm); + static abstract DfaMatchingState TakeTransition(SymbolicRegexMatcher matcher, DfaMatchingState currentState, int mintermId, TSetType minterm); +#pragma warning restore CA2252 } /// Compute the target state for the source state and input[i] character. @@ -262,14 +264,14 @@ private DfaMatchingState Delta(ReadOnlySpan input, minterms[mintermId] : _builder._solver.False; // minterm=False represents \Z - return default(TTransition).TakeTransition(this, sourceState, mintermId, minterm); + return TTransition.TakeTransition(this, sourceState, mintermId, minterm); } /// Transition for Brzozowski-style derivatives (i.e. a DFA). private readonly struct BrzozowskiTransition : ITransition { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public DfaMatchingState TakeTransition( + public static DfaMatchingState TakeTransition( SymbolicRegexMatcher matcher, DfaMatchingState currentState, int mintermId, TSetType minterm) { SymbolicRegexBuilder builder = matcher._builder; @@ -284,13 +286,13 @@ public DfaMatchingState TakeTransition( private readonly struct AntimirovTransition : ITransition { [MethodImpl(MethodImplOptions.AggressiveInlining)] - public DfaMatchingState TakeTransition( + public static DfaMatchingState TakeTransition( SymbolicRegexMatcher matcher, DfaMatchingState currentStates, int mintermId, TSetType minterm) { if (currentStates.Node.Kind != SymbolicRegexKind.Or) { // Fall back to Brzozowski when the state is not a disjunction. - return default(BrzozowskiTransition).TakeTransition(matcher, currentStates, mintermId, minterm); + return BrzozowskiTransition.TakeTransition(matcher, currentStates, mintermId, minterm); } SymbolicRegexBuilder builder = matcher._builder; @@ -358,8 +360,7 @@ private void DoCheckTimeout(int timeoutOccursAt) /// Whether to return once we know there's a match without determining where exactly it matched. /// The input span /// The position to start search in the input span. - /// The non-inclusive position to end the search in the input span. - public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int startat, int end) + public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int startat) { int timeoutOccursAt = 0; if (_checkTimeout) @@ -368,7 +369,7 @@ public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int start timeoutOccursAt = Environment.TickCount + (int)(_timeout + 0.5); } - if (startat == end) + if (startat == input.Length) { // Covers the special-case of an empty match at the end of the input. uint prevKind = GetCharKind(input, startat - 1); @@ -385,7 +386,7 @@ public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int start // May return -1 as a legitimate value when the initial state is nullable and startat == 0. // Returns NoMatchExists when there is no match. - i = FindFinalStatePosition(input, end, i, timeoutOccursAt, out int i_q0_A1, out int watchdog); + i = FindFinalStatePosition(input, i, timeoutOccursAt, out int i_q0_A1, out int watchdog); if (i == NoMatchExists) { @@ -412,7 +413,7 @@ public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int start i_start = i < startat ? startat : FindStartPosition(input, i, i_q0_A1); // Walk in reverse to locate the start position of the match - i_end = FindEndPosition(input, end, i_start); + i_end = FindEndPosition(input, i_start); } return new SymbolicMatch(i_start, i_end + 1 - i_start); @@ -421,11 +422,10 @@ public SymbolicMatch FindMatch(bool isMatch, ReadOnlySpan input, int start /// Find match end position using the original pattern, end position is known to exist. /// input span /// inclusive start position - /// exclusive end position /// - private int FindEndPosition(ReadOnlySpan input, int exclusiveEnd, int i) + private int FindEndPosition(ReadOnlySpan input, int i) { - int i_end = exclusiveEnd; + int i_end = input.Length; // Pick the correct start state based on previous character kind. uint prevCharKind = GetCharKind(input, i - 1); @@ -443,9 +443,9 @@ private int FindEndPosition(ReadOnlySpan input, int exclusiveEnd, int i) } } - while (i < exclusiveEnd) + while (i < input.Length) { - int j = Math.Min(exclusiveEnd, i + AntimirovThresholdLeeway); + int j = Math.Min(input.Length, i + AntimirovThresholdLeeway); bool done = _builder._antimirov ? FindEndPositionDeltas(input, ref i, j, ref state, ref i_end) : FindEndPositionDeltas(input, ref i, j, ref state, ref i_end); @@ -456,7 +456,7 @@ private int FindEndPosition(ReadOnlySpan input, int exclusiveEnd, int i) } } - Debug.Assert(i_end != exclusiveEnd); + Debug.Assert(i_end < input.Length); return i_end; } @@ -567,12 +567,11 @@ private bool FindStartPositionDeltas(ReadOnlySpan input, ref /// Returns NoMatchExists if no match exists. Returns -1 when i=0 and the initial state is nullable. /// given input span - /// input length or bounded input length /// start position /// The time at which timeout occurs, if timeouts are being checked. /// last position the initial state of was visited /// length of match when positive - private int FindFinalStatePosition(ReadOnlySpan input, int k, int i, int timeoutOccursAt, out int initialStateIndex, out int watchdog) + private int FindFinalStatePosition(ReadOnlySpan input, int i, int timeoutOccursAt, out int initialStateIndex, out int watchdog) { // Get the correct start state of the dot-star pattern, which in general depends on the previous character kind in the input. uint prevCharKindId = GetCharKind(input, i - 1); @@ -599,7 +598,7 @@ private int FindFinalStatePosition(ReadOnlySpan input, int k, int i, int t watchdog = -1; // Search for a match end position within input[i..k-1] - while (i < k) + while (i < input.Length) { if (q.IsInitialState) { @@ -609,7 +608,7 @@ private int FindFinalStatePosition(ReadOnlySpan input, int k, int i, int t if (_findOpts is RegexFindOptimizations findOpts) { // Find the first position i that matches with some likely character. - if (!findOpts.TryFindNextStartingPosition(input, ref i, 0, 0, k)) + if (!findOpts.TryFindNextStartingPosition(input, ref i, 0, 0, input.Length)) { // no match was found return NoMatchExists; @@ -629,7 +628,7 @@ private int FindFinalStatePosition(ReadOnlySpan input, int k, int i, int t } int result; - int j = Math.Min(k, i + AntimirovThresholdLeeway); + int j = Math.Min(input.Length, i + AntimirovThresholdLeeway); bool done = _builder._antimirov ? FindFinalStatePositionDeltas(input, j, ref i, ref q, ref watchdog, out result) : FindFinalStatePositionDeltas(input, j, ref i, ref q, ref watchdog, out result); diff --git a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexRunnerFactory.cs b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexRunnerFactory.cs index 097a67ccd00326..780a2e7184d246 100644 --- a/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexRunnerFactory.cs +++ b/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/Symbolic/SymbolicRegexRunnerFactory.cs @@ -89,14 +89,17 @@ protected override void InitTrackCount() { } // nop, no backtracking protected override void Go() { - ReadOnlySpan inputSpan = runtext; + int beginning = runtextbeg; + ReadOnlySpan inputSpan = runtext.AsSpan(beginning, runtextend - beginning); // Perform the match. - SymbolicMatch pos = _matcher.FindMatch(quick, inputSpan, runtextpos, runtextend); + SymbolicMatch pos = _matcher.FindMatch(quick, inputSpan, runtextpos - beginning); + + // Transfer the result back to the RegexRunner state. if (pos.Success) { // If we successfully matched, capture the match, and then jump the current position to the end of the match. - int start = pos.Index; + int start = pos.Index + beginning; int end = start + pos.Length; Capture(0, start, end); runtextpos = end; diff --git a/src/libraries/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs b/src/libraries/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs index 6cd5dcc3cd3163..61b680095effad 100644 --- a/src/libraries/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs +++ b/src/libraries/System.Text.RegularExpressions/tests/Regex.Match.Tests.cs @@ -1474,22 +1474,18 @@ public static IEnumerable Match_StartatDiffersFromBeginning_MemberData { foreach (RegexEngine engine in RegexHelpers.AvailableEngines) { - if (RegexHelpers.IsNonBacktracking(engine)) - { - continue; - } - - foreach (RegexOptions options in new[] { RegexOptions.None, RegexOptions.Singleline, RegexOptions.Multiline }) + foreach (RegexOptions options in new[] { RegexOptions.None, RegexOptions.Singleline, RegexOptions.Multiline, RegexOptions.Singleline | RegexOptions.Multiline }) { // Anchors yield return new object[] { engine, @"^.*", "abc", options, 0, true, true }; yield return new object[] { engine, @"^.*", "abc", options, 1, false, true }; + } - // Positive Lookbehinds - yield return new object[] { engine, @"(?<=abc)def", "abcdef", options, 3, true, false }; - - // Negative Lookbehinds - yield return new object[] { engine, @"(? Diagnostic_MalformedCtor_MemberData() + { + const string Pre = "[RegexGenerator"; + const string Post = "]"; + const string Middle = "\"abc\", RegexOptions.None, -1, \"extra\""; + + foreach (bool withParens in new[] { false, true }) + { + string preParen = withParens ? "(" : ""; + string postParen = withParens ? ")" : ""; + for (int i = 0; i < Middle.Length; i++) + { + yield return new object[] { Pre + preParen + Middle.Substring(0, i) + postParen }; + yield return new object[] { Pre + preParen + Middle.Substring(0, i) + postParen + Post }; + } + } + } + + [Theory] + [MemberData(nameof(Diagnostic_MalformedCtor_MemberData))] + public async Task Diagnostic_MalformedCtor(string attribute) + { + // Validate the generator doesn't crash with an incomplete attribute + + IReadOnlyList diagnostics = await RunGenerator($@" + using System.Text.RegularExpressions; + partial class C + {{ + {attribute} + private static partial Regex MultipleAttributes(); + }} + "); + + if (diagnostics.Count != 0) + { + Assert.Contains(Assert.Single(diagnostics).Id, new[] { "SYSLIB1040", "SYSLIB1042" }); + } + } + [Theory] - [InlineData("ab[]")] + [InlineData("null")] + [InlineData("\"ab[]\"")] public async Task Diagnostic_InvalidRegexPattern(string pattern) { IReadOnlyList diagnostics = await RunGenerator($@" using System.Text.RegularExpressions; partial class C {{ - [RegexGenerator(""{pattern}"")] + [RegexGenerator({pattern})] private static partial Regex InvalidPattern(); }} "); diff --git a/src/libraries/System.Threading.AccessControl/src/System/Threading/EventWaitHandleAcl.cs b/src/libraries/System.Threading.AccessControl/src/System/Threading/EventWaitHandleAcl.cs index e344db40f5775b..675b417ef043b8 100644 --- a/src/libraries/System.Threading.AccessControl/src/System/Threading/EventWaitHandleAcl.cs +++ b/src/libraries/System.Threading.AccessControl/src/System/Threading/EventWaitHandleAcl.cs @@ -124,12 +124,8 @@ public static EventWaitHandle OpenExisting(string name, EventWaitHandleRights ri public static bool TryOpenExisting(string name, EventWaitHandleRights rights, [NotNullWhen(returnValue: true)] out EventWaitHandle? result) => OpenExistingWorker(name, rights, out result) == OpenExistingResult.Success; - private static OpenExistingResult OpenExistingWorker(string name, EventWaitHandleRights rights, out EventWaitHandle? result) + private static OpenExistingResult OpenExistingWorker(string name!!, EventWaitHandleRights rights, out EventWaitHandle? result) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Argument_EmptyName, nameof(name)); diff --git a/src/libraries/System.Threading.AccessControl/src/System/Threading/MutexAcl.cs b/src/libraries/System.Threading.AccessControl/src/System/Threading/MutexAcl.cs index b19a310315bd3f..87c14e40ad237c 100644 --- a/src/libraries/System.Threading.AccessControl/src/System/Threading/MutexAcl.cs +++ b/src/libraries/System.Threading.AccessControl/src/System/Threading/MutexAcl.cs @@ -115,12 +115,8 @@ public static Mutex OpenExisting(string name, MutexRights rights) public static bool TryOpenExisting(string name, MutexRights rights, [NotNullWhen(returnValue: true)] out Mutex? result) => OpenExistingWorker(name, rights, out result) == OpenExistingResult.Success; - private static OpenExistingResult OpenExistingWorker(string name, MutexRights rights, out Mutex? result) + private static OpenExistingResult OpenExistingWorker(string name!!, MutexRights rights, out Mutex? result) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Argument_EmptyName, nameof(name)); diff --git a/src/libraries/System.Threading.AccessControl/src/System/Threading/SemaphoreAcl.cs b/src/libraries/System.Threading.AccessControl/src/System/Threading/SemaphoreAcl.cs index eee92069b3a7ff..35ee2c48942c57 100644 --- a/src/libraries/System.Threading.AccessControl/src/System/Threading/SemaphoreAcl.cs +++ b/src/libraries/System.Threading.AccessControl/src/System/Threading/SemaphoreAcl.cs @@ -128,12 +128,8 @@ public static Semaphore OpenExisting(string name, SemaphoreRights rights) public static bool TryOpenExisting(string name, SemaphoreRights rights, [NotNullWhen(returnValue: true)] out Semaphore? result) => OpenExistingWorker(name, rights, out result) == OpenExistingResult.Success; - private static OpenExistingResult OpenExistingWorker(string name, SemaphoreRights rights, out Semaphore? result) + private static OpenExistingResult OpenExistingWorker(string name!!, SemaphoreRights rights, out Semaphore? result) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (name.Length == 0) { throw new ArgumentException(SR.Argument_EmptyName, nameof(name)); diff --git a/src/libraries/System.Threading.AccessControl/src/System/Threading/ThreadingAclExtensions.cs b/src/libraries/System.Threading.AccessControl/src/System/Threading/ThreadingAclExtensions.cs index 252480a6e268e1..77c7732162cf63 100644 --- a/src/libraries/System.Threading.AccessControl/src/System/Threading/ThreadingAclExtensions.cs +++ b/src/libraries/System.Threading.AccessControl/src/System/Threading/ThreadingAclExtensions.cs @@ -16,11 +16,8 @@ public static EventWaitHandleSecurity GetAccessControl(this EventWaitHandle hand return new EventWaitHandleSecurity(handle.GetSafeWaitHandle(), AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group); } - public static void SetAccessControl(this EventWaitHandle handle, EventWaitHandleSecurity eventSecurity) + public static void SetAccessControl(this EventWaitHandle handle, EventWaitHandleSecurity eventSecurity!!) { - if (eventSecurity == null) - throw new ArgumentNullException(nameof(eventSecurity)); - eventSecurity.Persist(handle.GetSafeWaitHandle()); } @@ -29,11 +26,8 @@ public static MutexSecurity GetAccessControl(this Mutex mutex) return new MutexSecurity(mutex.GetSafeWaitHandle(), AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group); } - public static void SetAccessControl(this Mutex mutex, MutexSecurity mutexSecurity) + public static void SetAccessControl(this Mutex mutex, MutexSecurity mutexSecurity!!) { - if (mutexSecurity == null) - throw new ArgumentNullException(nameof(mutexSecurity)); - mutexSecurity.Persist(mutex.GetSafeWaitHandle()); } @@ -42,11 +36,8 @@ public static SemaphoreSecurity GetAccessControl(this Semaphore semaphore) return new SemaphoreSecurity(semaphore.GetSafeWaitHandle(), AccessControlSections.Access | AccessControlSections.Owner | AccessControlSections.Group); } - public static void SetAccessControl(this Semaphore semaphore, SemaphoreSecurity semaphoreSecurity) + public static void SetAccessControl(this Semaphore semaphore, SemaphoreSecurity semaphoreSecurity!!) { - if (semaphoreSecurity == null) - throw new ArgumentNullException(nameof(semaphoreSecurity)); - semaphoreSecurity.Persist(semaphore.GetSafeWaitHandle()); } } diff --git a/src/libraries/System.Threading.Channels/src/System/Threading/Channels/Channel.cs b/src/libraries/System.Threading.Channels/src/System/Threading/Channels/Channel.cs index 156489276902cc..afad0a2cb6fe46 100644 --- a/src/libraries/System.Threading.Channels/src/System/Threading/Channels/Channel.cs +++ b/src/libraries/System.Threading.Channels/src/System/Threading/Channels/Channel.cs @@ -15,8 +15,7 @@ public static Channel CreateUnbounded() => /// Specifies the type of data in the channel. /// Options that guide the behavior of the channel. /// The created channel. - public static Channel CreateUnbounded(UnboundedChannelOptions options) => - options == null ? throw new ArgumentNullException(nameof(options)) : + public static Channel CreateUnbounded(UnboundedChannelOptions options!!) => options.SingleReader ? new SingleConsumerUnboundedChannel(!options.AllowSynchronousContinuations) : (Channel)new UnboundedChannel(!options.AllowSynchronousContinuations); @@ -52,13 +51,8 @@ public static Channel CreateBounded(BoundedChannelOptions options) /// Options that guide the behavior of the channel. /// Delegate that will be called when item is being dropped from channel. See . /// The created channel. - public static Channel CreateBounded(BoundedChannelOptions options, Action? itemDropped) + public static Channel CreateBounded(BoundedChannelOptions options!!, Action? itemDropped) { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - return new BoundedChannel(options.Capacity, options.FullMode, !options.AllowSynchronousContinuations, itemDropped); } } diff --git a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/ConcurrencyLimiter.cs b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/ConcurrencyLimiter.cs index 74ef7ec9e890b9..643bccbd7db87a 100644 --- a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/ConcurrencyLimiter.cs +++ b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/ConcurrencyLimiter.cs @@ -31,9 +31,9 @@ public sealed class ConcurrencyLimiter : RateLimiter /// Initializes the . /// /// Options to specify the behavior of the . - public ConcurrencyLimiter(ConcurrencyLimiterOptions options) + public ConcurrencyLimiter(ConcurrencyLimiterOptions options!!) { - _options = options ?? throw new ArgumentNullException(nameof(options)); + _options = options; _permitCount = _options.PermitLimit; } @@ -118,13 +118,13 @@ protected override ValueTask WaitAsyncCore(int permitCount, Canc } } - TaskCompletionSource tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + CancelQueueState tcs = new CancelQueueState(permitCount, this, cancellationToken); CancellationTokenRegistration ctr = default; if (cancellationToken.CanBeCanceled) { ctr = cancellationToken.Register(static obj => { - ((TaskCompletionSource)obj!).TrySetException(new OperationCanceledException()); + ((CancelQueueState)obj!).TrySetCanceled(); }, tcs); } @@ -194,7 +194,6 @@ private void Release(int releaseCount) _permitCount -= nextPendingRequest.Count; _queueCount -= nextPendingRequest.Count; - Debug.Assert(_queueCount >= 0); Debug.Assert(_permitCount >= 0); ConcurrencyLease lease = nextPendingRequest.Count == 0 ? SuccessfulLease : new ConcurrencyLease(true, this, nextPendingRequest.Count); @@ -203,8 +202,11 @@ private void Release(int releaseCount) { // Queued item was canceled so add count back _permitCount += nextPendingRequest.Count; + // Updating queue count is handled by the cancellation code + _queueCount += nextPendingRequest.Count; } nextPendingRequest.CancellationTokenRegistration.Dispose(); + Debug.Assert(_queueCount >= 0); } else { @@ -319,5 +321,33 @@ public RequestRegistration(int requestedCount, TaskCompletionSource + { + private readonly int _permitCount; + private readonly ConcurrencyLimiter _limiter; + private readonly CancellationToken _cancellationToken; + + public CancelQueueState(int permitCount, ConcurrencyLimiter limiter, CancellationToken cancellationToken) + : base(TaskCreationOptions.RunContinuationsAsynchronously) + { + _permitCount = permitCount; + _limiter = limiter; + _cancellationToken = cancellationToken; + } + + public new bool TrySetCanceled() + { + if (TrySetCanceled(_cancellationToken)) + { + lock (_limiter.Lock) + { + _limiter._queueCount -= _permitCount; + } + return true; + } + return false; + } + } } } diff --git a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/MetadataName.T.cs b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/MetadataName.T.cs index acc8f1d58ad742..c39e3639a9011f 100644 --- a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/MetadataName.T.cs +++ b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/MetadataName.T.cs @@ -17,9 +17,9 @@ public sealed class MetadataName : IEquatable> /// Constructs a object with the given name. /// /// The name of the object. - public MetadataName(string name) + public MetadataName(string name!!) { - _name = name ?? throw new ArgumentNullException(nameof(name)); + _name = name; } /// diff --git a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/TokenBucketRateLimiter.cs b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/TokenBucketRateLimiter.cs index 6593d895a6810e..c66ce352d28e78 100644 --- a/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/TokenBucketRateLimiter.cs +++ b/src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/TokenBucketRateLimiter.cs @@ -32,9 +32,9 @@ public sealed class TokenBucketRateLimiter : RateLimiter /// Initializes the . /// /// Options to specify the behavior of the . - public TokenBucketRateLimiter(TokenBucketRateLimiterOptions options) + public TokenBucketRateLimiter(TokenBucketRateLimiterOptions options!!) { - _options = options ?? throw new ArgumentNullException(nameof(options)); + _options = options; _tokenCount = options.TokenLimit; if (_options.AutoReplenishment) @@ -124,14 +124,13 @@ protected override ValueTask WaitAsyncCore(int tokenCount, Cance } } - TaskCompletionSource tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - + CancelQueueState tcs = new CancelQueueState(tokenCount, this, cancellationToken); CancellationTokenRegistration ctr = default; if (cancellationToken.CanBeCanceled) { ctr = cancellationToken.Register(static obj => { - ((TaskCompletionSource)obj!).TrySetException(new OperationCanceledException()); + ((CancelQueueState)obj!).TrySetCanceled(); }, tcs); } @@ -140,7 +139,6 @@ protected override ValueTask WaitAsyncCore(int tokenCount, Cance _queueCount += tokenCount; Debug.Assert(_queueCount <= _options.QueueLimit); - // handle cancellation return new ValueTask(registration.Tcs.Task); } } @@ -276,15 +274,17 @@ private void ReplenishInternal(uint nowTicks) _queueCount -= nextPendingRequest.Count; _tokenCount -= nextPendingRequest.Count; - Debug.Assert(_queueCount >= 0); Debug.Assert(_tokenCount >= 0); if (!nextPendingRequest.Tcs.TrySetResult(SuccessfulLease)) { // Queued item was canceled so add count back _tokenCount += nextPendingRequest.Count; + // Updating queue count is handled by the cancellation code + _queueCount += nextPendingRequest.Count; } nextPendingRequest.CancellationTokenRegistration.Dispose(); + Debug.Assert(_queueCount >= 0); } else { @@ -380,7 +380,34 @@ public RequestRegistration(int tokenCount, TaskCompletionSource public TaskCompletionSource Tcs { get; } public CancellationTokenRegistration CancellationTokenRegistration { get; } + } + + private sealed class CancelQueueState : TaskCompletionSource + { + private readonly int _tokenCount; + private readonly TokenBucketRateLimiter _limiter; + private readonly CancellationToken _cancellationToken; + + public CancelQueueState(int tokenCount, TokenBucketRateLimiter limiter, CancellationToken cancellationToken) + : base(TaskCreationOptions.RunContinuationsAsynchronously) + { + _tokenCount = tokenCount; + _limiter = limiter; + _cancellationToken = cancellationToken; + } + public new bool TrySetCanceled() + { + if (TrySetCanceled(_cancellationToken)) + { + lock (_limiter.Lock) + { + _limiter._queueCount -= _tokenCount; + } + return true; + } + return false; + } } } } diff --git a/src/libraries/System.Threading.RateLimiting/tests/BaseRateLimiterTests.cs b/src/libraries/System.Threading.RateLimiting/tests/BaseRateLimiterTests.cs index a96dc0ba86e632..514666cfc0e2ff 100644 --- a/src/libraries/System.Threading.RateLimiting/tests/BaseRateLimiterTests.cs +++ b/src/libraries/System.Threading.RateLimiting/tests/BaseRateLimiterTests.cs @@ -80,6 +80,9 @@ public abstract class BaseRateLimiterTests [Fact] public abstract Task CanCancelWaitAsyncBeforeQueuing(); + [Fact] + public abstract Task CancelUpdatesQueueLimit(); + [Fact] public abstract Task CanAcquireResourcesWithAcquireWithQueuedItemsIfNewestFirst(); diff --git a/src/libraries/System.Threading.RateLimiting/tests/ConcurrencyLimiterTests.cs b/src/libraries/System.Threading.RateLimiting/tests/ConcurrencyLimiterTests.cs index da041ac938aa27..57cd9d8ea48a40 100644 --- a/src/libraries/System.Threading.RateLimiting/tests/ConcurrencyLimiterTests.cs +++ b/src/libraries/System.Threading.RateLimiting/tests/ConcurrencyLimiterTests.cs @@ -401,7 +401,8 @@ public override async Task CanCancelWaitAsyncAfterQueuing() var wait = limiter.WaitAsync(1, cts.Token); cts.Cancel(); - await Assert.ThrowsAsync(() => wait.AsTask()); + var ex = await Assert.ThrowsAsync(() => wait.AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); lease.Dispose(); @@ -418,13 +419,36 @@ public override async Task CanCancelWaitAsyncBeforeQueuing() var cts = new CancellationTokenSource(); cts.Cancel(); - await Assert.ThrowsAsync(() => limiter.WaitAsync(1, cts.Token).AsTask()); + var ex = await Assert.ThrowsAsync(() => limiter.WaitAsync(1, cts.Token).AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); lease.Dispose(); Assert.Equal(1, limiter.GetAvailablePermits()); } + [Fact] + public override async Task CancelUpdatesQueueLimit() + { + var limiter = new ConcurrencyLimiter(new ConcurrencyLimiterOptions(1, QueueProcessingOrder.OldestFirst, 1)); + var lease = limiter.Acquire(1); + Assert.True(lease.IsAcquired); + + var cts = new CancellationTokenSource(); + var wait = limiter.WaitAsync(1, cts.Token); + + cts.Cancel(); + var ex = await Assert.ThrowsAsync(() => wait.AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); + + wait = limiter.WaitAsync(1); + Assert.False(wait.IsCompleted); + + lease.Dispose(); + lease = await wait; + Assert.True(lease.IsAcquired); + } + [Fact] public override void NoMetadataOnAcquiredLease() { diff --git a/src/libraries/System.Threading.RateLimiting/tests/TokenBucketRateLimiterTests.cs b/src/libraries/System.Threading.RateLimiting/tests/TokenBucketRateLimiterTests.cs index 594bb79be22ebf..166885b3be6529 100644 --- a/src/libraries/System.Threading.RateLimiting/tests/TokenBucketRateLimiterTests.cs +++ b/src/libraries/System.Threading.RateLimiting/tests/TokenBucketRateLimiterTests.cs @@ -354,7 +354,8 @@ public override async Task CanCancelWaitAsyncAfterQueuing() var wait = limiter.WaitAsync(1, cts.Token); cts.Cancel(); - await Assert.ThrowsAsync(() => wait.AsTask()); + var ex = await Assert.ThrowsAsync(() => wait.AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); lease.Dispose(); Assert.True(limiter.TryReplenish()); @@ -373,7 +374,8 @@ public override async Task CanCancelWaitAsyncBeforeQueuing() var cts = new CancellationTokenSource(); cts.Cancel(); - await Assert.ThrowsAsync(() => limiter.WaitAsync(1, cts.Token).AsTask()); + var ex = await Assert.ThrowsAsync(() => limiter.WaitAsync(1, cts.Token).AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); lease.Dispose(); Assert.True(limiter.TryReplenish()); @@ -381,6 +383,29 @@ public override async Task CanCancelWaitAsyncBeforeQueuing() Assert.Equal(1, limiter.GetAvailablePermits()); } + [Fact] + public override async Task CancelUpdatesQueueLimit() + { + var limiter = new TokenBucketRateLimiter(new TokenBucketRateLimiterOptions(1, QueueProcessingOrder.OldestFirst, 1, + TimeSpan.Zero, 1, autoReplenishment: false)); + var lease = limiter.Acquire(1); + Assert.True(lease.IsAcquired); + + var cts = new CancellationTokenSource(); + var wait = limiter.WaitAsync(1, cts.Token); + + cts.Cancel(); + var ex = await Assert.ThrowsAsync(() => wait.AsTask()); + Assert.Equal(cts.Token, ex.CancellationToken); + + wait = limiter.WaitAsync(1); + Assert.False(wait.IsCompleted); + + limiter.TryReplenish(); + lease = await wait; + Assert.True(lease.IsAcquired); + } + [Fact] public override void NoMetadataOnAcquiredLease() { diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.IAsyncEnumerable.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.IAsyncEnumerable.cs index 972a5c939f02b5..d59b9e2d821054 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.IAsyncEnumerable.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.IAsyncEnumerable.cs @@ -14,23 +14,13 @@ public static partial class DataflowBlock /// The which may be used to cancel the receive operation. /// The created async enumerable. /// The is null (Nothing in Visual Basic). - public static IAsyncEnumerable ReceiveAllAsync(this IReceivableSourceBlock source, CancellationToken cancellationToken = default) + public static async IAsyncEnumerable ReceiveAllAsync(this IReceivableSourceBlock source!!, [EnumeratorCancellation] CancellationToken cancellationToken = default) { - if (source == null) + while (await source.OutputAvailableAsync(cancellationToken).ConfigureAwait(false)) { - throw new ArgumentNullException(nameof(source)); - } - - return ReceiveAllAsyncCore(source, cancellationToken); - - static async IAsyncEnumerable ReceiveAllAsyncCore(IReceivableSourceBlock source, [EnumeratorCancellation] CancellationToken cancellationToken) - { - while (await source.OutputAvailableAsync(cancellationToken).ConfigureAwait(false)) + while (source.TryReceive(out TOutput? item)) { - while (source.TryReceive(out TOutput? item)) - { - yield return item; - } + yield return item; } } } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs index 9cca871101592e..f196b8b631c52b 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Base/DataflowBlock.cs @@ -31,13 +31,9 @@ public static partial class DataflowBlock /// The is null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). public static IDisposable LinkTo( - this ISourceBlock source, - ITargetBlock target) + this ISourceBlock source!!, + ITargetBlock target!!) { - // Validate arguments - if (source == null) throw new ArgumentNullException(nameof(source)); - if (target == null) throw new ArgumentNullException(nameof(target)); - // This method exists purely to pass default DataflowLinkOptions // to increase usability of the "90%" case. return source.LinkTo(target, DataflowLinkOptions.Default); @@ -71,17 +67,11 @@ public static IDisposable LinkTo( /// The is null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). public static IDisposable LinkTo( - this ISourceBlock source, - ITargetBlock target, - DataflowLinkOptions linkOptions, - Predicate predicate) + this ISourceBlock source!!, + ITargetBlock target!!, + DataflowLinkOptions linkOptions!!, + Predicate predicate!!) { - // Validate arguments - if (source == null) throw new ArgumentNullException(nameof(source)); - if (target == null) throw new ArgumentNullException(nameof(target)); - if (linkOptions == null) throw new ArgumentNullException(nameof(linkOptions)); - if (predicate == null) throw new ArgumentNullException(nameof(predicate)); - // Create the filter, which links to the real target, and then // link the real source to this intermediate filter. var filter = new FilteredLinkPropagator(source, target, predicate); @@ -236,9 +226,8 @@ public DebugView(FilteredLinkPropagator filter) /// which will return immediately and will enable the target to postpone the posted message and later consume it /// after SendAsync returns. /// - public static bool Post(this ITargetBlock target, TInput item) + public static bool Post(this ITargetBlock target!!, TInput item) { - if (target == null) throw new ArgumentNullException(nameof(target)); return target.OfferMessage(Common.SingleMessageHeader, item, source: null, consumeToAccept: false) == DataflowMessageStatus.Accepted; } @@ -284,11 +273,8 @@ public static Task SendAsync(this ITargetBlock target, TIn /// /// /// The is null (Nothing in Visual Basic). - public static Task SendAsync(this ITargetBlock target, TInput item, CancellationToken cancellationToken) + public static Task SendAsync(this ITargetBlock target!!, TInput item, CancellationToken cancellationToken) { - // Validate arguments. No validation necessary for item. - if (target == null) throw new ArgumentNullException(nameof(target)); - // Fast path check for cancellation if (cancellationToken.IsCancellationRequested) return Common.CreateTaskFromCancellation(cancellationToken); @@ -761,10 +747,8 @@ public DebugView(SendAsyncSource source) /// This method does not wait until the source has an item to provide. /// It will return whether or not an element was available. /// - public static bool TryReceive(this IReceivableSourceBlock source, [MaybeNullWhen(false)] out TOutput item) + public static bool TryReceive(this IReceivableSourceBlock source!!, [MaybeNullWhen(false)] out TOutput item) { - if (source == null) throw new ArgumentNullException(nameof(source)); - return source.TryReceive(null, out item); } #endregion @@ -838,12 +822,9 @@ public static Task ReceiveAsync( /// timeout is a negative number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than . /// public static Task ReceiveAsync( - this ISourceBlock source, TimeSpan timeout, CancellationToken cancellationToken) + this ISourceBlock source!!, TimeSpan timeout, CancellationToken cancellationToken) { // Validate arguments - - - if (source == null) throw new ArgumentNullException(nameof(source)); if (!Common.IsValidTimeout(timeout)) throw new ArgumentOutOfRangeException(nameof(timeout), SR.ArgumentOutOfRange_NeedNonNegOrNegative1); // Return the task representing the core receive operation @@ -921,10 +902,9 @@ public static TOutput Receive( /// If the source successfully offered an item that was received by this operation, it will be returned, even if a concurrent timeout or cancellation request occurs. /// public static TOutput Receive( - this ISourceBlock source, TimeSpan timeout, CancellationToken cancellationToken) + this ISourceBlock source!!, TimeSpan timeout, CancellationToken cancellationToken) { // Validate arguments - if (source == null) throw new ArgumentNullException(nameof(source)); if (!Common.IsValidTimeout(timeout)) throw new ArgumentOutOfRangeException(nameof(timeout), SR.ArgumentOutOfRange_NeedNonNegOrNegative1); // Do fast path checks for both cancellation and data already existing. @@ -1397,11 +1377,8 @@ public static Task OutputAvailableAsync(this ISourceBlock public static Task OutputAvailableAsync( - this ISourceBlock source, CancellationToken cancellationToken) + this ISourceBlock source!!, CancellationToken cancellationToken) { - // Validate arguments - if (source == null) throw new ArgumentNullException(nameof(source)); - // Fast path for cancellation if (cancellationToken.IsCancellationRequested) return Common.CreateTaskFromCancellation(cancellationToken); @@ -1533,9 +1510,8 @@ void IDataflowBlock.Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); TrySetResult(false); } @@ -1565,10 +1541,8 @@ void IDataflowBlock.Fault(Exception exception) /// implementation delegates to the specified source. /// public static IPropagatorBlock Encapsulate( - ITargetBlock target, ISourceBlock source) + ITargetBlock target!!, ISourceBlock source!!) { - if (target == null) throw new ArgumentNullException(nameof(target)); - if (source == null) throw new ArgumentNullException(nameof(source)); return new EncapsulatingPropagator(target, source); } @@ -1597,10 +1571,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - _target.Fault(exception); } /// @@ -1757,17 +1729,10 @@ public static Task Choose( /// The is null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). public static Task Choose( - ISourceBlock source1, Action action1, - ISourceBlock source2, Action action2, - DataflowBlockOptions dataflowBlockOptions) + ISourceBlock source1!!, Action action1!!, + ISourceBlock source2!!, Action action2!!, + DataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (source1 == null) throw new ArgumentNullException(nameof(source1)); - if (action1 == null) throw new ArgumentNullException(nameof(action1)); - if (source2 == null) throw new ArgumentNullException(nameof(source2)); - if (action2 == null) throw new ArgumentNullException(nameof(action2)); - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Delegate to the shared implementation return ChooseCore(source1, action1, source2, action2, null, null, dataflowBlockOptions); } @@ -1847,20 +1812,11 @@ public static Task Choose( /// The is null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). public static Task Choose( - ISourceBlock source1, Action action1, - ISourceBlock source2, Action action2, - ISourceBlock source3, Action action3, - DataflowBlockOptions dataflowBlockOptions) + ISourceBlock source1!!, Action action1!!, + ISourceBlock source2!!, Action action2!!, + ISourceBlock source3!!, Action action3!!, + DataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (source1 == null) throw new ArgumentNullException(nameof(source1)); - if (action1 == null) throw new ArgumentNullException(nameof(action1)); - if (source2 == null) throw new ArgumentNullException(nameof(source2)); - if (action2 == null) throw new ArgumentNullException(nameof(action2)); - if (source3 == null) throw new ArgumentNullException(nameof(source3)); - if (action3 == null) throw new ArgumentNullException(nameof(action3)); - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Delegate to the shared implementation return ChooseCore(source1, action1, source2, action2, source3, action3, dataflowBlockOptions); } @@ -2211,9 +2167,8 @@ void IDataflowBlock.Complete() /// The source to wrap. /// An IObservable{TOutput} that enables observers to be subscribed to the source. /// The is null (Nothing in Visual Basic). - public static IObservable AsObservable(this ISourceBlock source) + public static IObservable AsObservable(this ISourceBlock source!!) { - if (source == null) throw new ArgumentNullException(nameof(source)); return SourceObservable.From(source); } @@ -2275,10 +2230,9 @@ internal SourceObservable(ISourceBlock source) /// Subscribes the observer to the source. /// the observer to subscribe. /// An IDisposable that may be used to unsubscribe the source. - IDisposable IObservable.Subscribe(IObserver observer) + IDisposable IObservable.Subscribe(IObserver observer!!) { // Validate arguments - if (observer == null) throw new ArgumentNullException(nameof(observer)); Common.ContractAssertMonitorStatus(_SubscriptionLock, held: false); Task? sourceCompletionTask = Common.GetPotentiallyNotSupportedCompletionTask(_source); @@ -2579,9 +2533,8 @@ private void NotifyObserversOfCompletion(Exception? targetException = null) /// Specifies the type of input accepted by the target block. /// The target to wrap. /// An observer that wraps the target block. - public static IObserver AsObserver(this ITargetBlock target) + public static IObserver AsObserver(this ITargetBlock target!!) { - if (target == null) throw new ArgumentNullException(nameof(target)); return new TargetObserver(target); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/ActionBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/ActionBlock.cs index 3b8f05674b1242..4215ae5df957fd 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/ActionBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/ActionBlock.cs @@ -66,12 +66,8 @@ public ActionBlock(Func action, ExecutionDataflowBlockOptions data /// The options with which to configure this . /// The is null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). - private ActionBlock(Delegate action, ExecutionDataflowBlockOptions dataflowBlockOptions) + private ActionBlock(Delegate action!!, ExecutionDataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (action == null) throw new ArgumentNullException(nameof(action)); - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Ensure we have options that can't be changed by the caller dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -230,10 +226,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - if (_defaultTarget != null) { _defaultTarget.Complete(exception, dropPendingMessages: true); diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchBlock.cs index ae3c92c2acba25..0b33c3175444f7 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchBlock.cs @@ -99,10 +99,8 @@ public BatchBlock(int batchSize, GroupingDataflowBlockOptions dataflowBlockOptio public void Complete() { _target.Complete(exception: null, dropPendingMessages: false, releaseReservedMessages: false); } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - _target.Complete(exception, dropPendingMessages: true, releaseReservedMessages: false); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchedJoinBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchedJoinBlock.cs index c47a75075a31b0..e0b9d4e415ef38 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchedJoinBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BatchedJoinBlock.cs @@ -154,10 +154,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - Debug.Assert(_sharedResources != null, "_sharedResources not initialized"); Debug.Assert(_sharedResources._incomingLock != null, "_sharedResources._incomingLock not initialized"); Debug.Assert(_source != null, "_source not initialized"); @@ -408,10 +406,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - Debug.Assert(_sharedResources != null, "_sharedResources not initialized"); Debug.Assert(_sharedResources._incomingLock != null, "_sharedResources._incomingLock not initialized"); Debug.Assert(_source != null, "_source not initialized"); @@ -608,10 +604,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - lock (_sharedResources._incomingLock) { if (!_decliningPermanently && !_sharedResources._decliningPermanently) _sharedResources._exceptionAction(exception); diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BroadcastBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BroadcastBlock.cs index e7ee8f5f1e55c8..9a5a6935d8bd88 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BroadcastBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BroadcastBlock.cs @@ -62,11 +62,8 @@ public BroadcastBlock(Func? cloningFunction) : /// /// The options with which to configure this . /// The is null (Nothing in Visual Basic). - public BroadcastBlock(Func? cloningFunction, DataflowBlockOptions dataflowBlockOptions) + public BroadcastBlock(Func? cloningFunction, DataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Ensure we have options that can't be changed by the caller dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -110,10 +107,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false); } @@ -1001,12 +996,8 @@ private void CompleteBlockOncePossible() } /// - internal IDisposable LinkTo(ITargetBlock target, DataflowLinkOptions linkOptions) + internal IDisposable LinkTo(ITargetBlock target!!, DataflowLinkOptions linkOptions!!) { - // Validate arguments - if (target == null) throw new ArgumentNullException(nameof(target)); - if (linkOptions == null) throw new ArgumentNullException(nameof(linkOptions)); - lock (OutgoingLock) { // If we've completed or completion has at least started, offer the message to this target, diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BufferBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BufferBlock.cs index c4e0250d5fe002..ee6dc68b53ef51 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BufferBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/BufferBlock.cs @@ -43,10 +43,8 @@ public BufferBlock() : /// Initializes the with the specified . /// The options with which to configure this . /// The is null (Nothing in Visual Basic). - public BufferBlock(DataflowBlockOptions dataflowBlockOptions) + public BufferBlock(DataflowBlockOptions dataflowBlockOptions!!) { - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Ensure we have options that can't be changed by the caller dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -144,10 +142,8 @@ DataflowMessageStatus ITargetBlock.OfferMessage(DataflowMessageHeader message public void Complete() { CompleteCore(exception: null, storeExceptionEvenIfAlreadyCompleting: false); } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/JoinBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/JoinBlock.cs index 9b336c3d6f3511..874a34fd5b61ed 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/JoinBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/JoinBlock.cs @@ -47,11 +47,8 @@ public JoinBlock() : /// Initializes the . /// The options with which to configure this . /// The is null (Nothing in Visual Basic). - public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions) + public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Ensure we have options that can't be changed by the caller dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -139,10 +136,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - Debug.Assert(_sharedResources != null, "_sharedResources not initialized"); Debug.Assert(_sharedResources._exceptionAction != null, "_sharedResources._exceptionAction not initialized"); @@ -269,11 +264,8 @@ public JoinBlock() : /// Initializes the . /// The options with which to configure this . /// The is null (Nothing in Visual Basic). - public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions) + public JoinBlock(GroupingDataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Ensure we have options that can't be changed by the caller dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -361,10 +353,8 @@ public void Complete() } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - Debug.Assert(_sharedResources != null, "_sharedResources not initialized"); Debug.Assert(_sharedResources._exceptionAction != null, "_sharedResources._exceptionAction not initialized"); @@ -924,10 +914,8 @@ internal override void CompleteCore(Exception? exception, bool dropPendingMessag } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - CompleteCore(exception, dropPendingMessages: true, releaseReservedMessages: false); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformBlock.cs index 72f837445a60d8..443013d7834d69 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformBlock.cs @@ -88,7 +88,7 @@ public TransformBlock(Func> transform, ExecutionDataflowBl /// The options with which to configure this . /// The and are both null (Nothing in Visual Basic). /// The is null (Nothing in Visual Basic). - private TransformBlock(Func? transformSync, Func>? transformAsync, ExecutionDataflowBlockOptions dataflowBlockOptions) + private TransformBlock(Func? transformSync, Func>? transformAsync, ExecutionDataflowBlockOptions dataflowBlockOptions!!) { if (transformSync == null && transformAsync == null) throw new ArgumentNullException("transform"); if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); @@ -328,10 +328,8 @@ private void AsyncCompleteProcessMessageWithTask(Task completed, KeyVal public void Complete() { _target.Complete(exception: null, dropPendingMessages: false); } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - _target.Complete(exception, dropPendingMessages: true); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformManyBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformManyBlock.cs index 55bacb242ea747..6cb21afa18e06f 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformManyBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/TransformManyBlock.cs @@ -567,10 +567,8 @@ private void UpdateBoundingCountWithOutputCount(int count) public void Complete() { _target.Complete(exception: null, dropPendingMessages: false); } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - _target.Complete(exception, dropPendingMessages: true); } diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/WriteOnceBlock.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/WriteOnceBlock.cs index ba46828913e284..a1b97e5a12c713 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/WriteOnceBlock.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Blocks/WriteOnceBlock.cs @@ -60,11 +60,8 @@ public WriteOnceBlock(Func? cloningFunction) : /// /// The options with which to configure this . /// The is null (Nothing in Visual Basic). - public WriteOnceBlock(Func? cloningFunction, DataflowBlockOptions dataflowBlockOptions) + public WriteOnceBlock(Func? cloningFunction, DataflowBlockOptions dataflowBlockOptions!!) { - // Validate arguments - if (dataflowBlockOptions == null) throw new ArgumentNullException(nameof(dataflowBlockOptions)); - // Store the option _cloningFunction = cloningFunction; _dataflowBlockOptions = dataflowBlockOptions.DefaultOrClone(); @@ -204,10 +201,8 @@ private void CompleteBlock(IList? exceptions) } /// - void IDataflowBlock.Fault(Exception exception) + void IDataflowBlock.Fault(Exception exception!!) { - if (exception == null) throw new ArgumentNullException(nameof(exception)); - CompleteCore(exception, storeExceptionEvenIfAlreadyCompleting: false); } @@ -295,12 +290,8 @@ bool IReceivableSourceBlock.TryReceiveAll([NotNullWhen(true)] out IList? i } /// - public IDisposable LinkTo(ITargetBlock target, DataflowLinkOptions linkOptions) + public IDisposable LinkTo(ITargetBlock target!!, DataflowLinkOptions linkOptions!!) { - // Validate arguments - if (target == null) throw new ArgumentNullException(nameof(target)); - if (linkOptions == null) throw new ArgumentNullException(nameof(linkOptions)); - bool hasValue; bool isCompleted; lock (ValueLock) diff --git a/src/libraries/System.Threading.Tasks.Dataflow/src/Internal/SourceCore.cs b/src/libraries/System.Threading.Tasks.Dataflow/src/Internal/SourceCore.cs index 9bc5e46e678971..65ad286b4c4b1d 100644 --- a/src/libraries/System.Threading.Tasks.Dataflow/src/Internal/SourceCore.cs +++ b/src/libraries/System.Threading.Tasks.Dataflow/src/Internal/SourceCore.cs @@ -121,12 +121,8 @@ internal SourceCore( } /// - internal IDisposable LinkTo(ITargetBlock target, DataflowLinkOptions linkOptions) + internal IDisposable LinkTo(ITargetBlock target!!, DataflowLinkOptions linkOptions!!) { - // Validate arguments - if (target == null) throw new ArgumentNullException(nameof(target)); - if (linkOptions == null) throw new ArgumentNullException(nameof(linkOptions)); - // If the block is already completed, there is not much to do - // we have to propagate completion if that was requested, and // then bail without taking the lock. diff --git a/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.ForEachAsync.cs b/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.ForEachAsync.cs index 3a7d40b7d0489b..8ac0b38d0bf927 100644 --- a/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.ForEachAsync.cs +++ b/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.ForEachAsync.cs @@ -15,17 +15,8 @@ public static partial class Parallel /// The exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. /// The operation will execute at most operations in parallel. - public static Task ForEachAsync(IEnumerable source, Func body) + public static Task ForEachAsync(IEnumerable source!!, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, DefaultDegreeOfParallelism, TaskScheduler.Default, default(CancellationToken), body); } @@ -37,17 +28,8 @@ public static Task ForEachAsync(IEnumerable source, FuncThe exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. /// The operation will execute at most operations in parallel. - public static Task ForEachAsync(IEnumerable source, CancellationToken cancellationToken, Func body) + public static Task ForEachAsync(IEnumerable source!!, CancellationToken cancellationToken, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, DefaultDegreeOfParallelism, TaskScheduler.Default, cancellationToken, body); } @@ -58,21 +40,8 @@ public static Task ForEachAsync(IEnumerable source, Cancellati /// An asynchronous delegate that is invoked once per element in the data source. /// The exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. - public static Task ForEachAsync(IEnumerable source, ParallelOptions parallelOptions, Func body) + public static Task ForEachAsync(IEnumerable source!!, ParallelOptions parallelOptions!!, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (parallelOptions is null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, parallelOptions.EffectiveMaxConcurrencyLevel, parallelOptions.EffectiveTaskScheduler, parallelOptions.CancellationToken, body); } @@ -183,77 +152,46 @@ private static Task ForEachAsync(IEnumerable source, int dop, } } - /// Executes a for each operation on an in which iterations may run in parallel. + /// Executes a for each operation on an in which iterations may run in parallel. /// The type of the data in the source. - /// An enumerable data source. + /// An asynchronous enumerable data source. /// An asynchronous delegate that is invoked once per element in the data source. /// The exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. /// The operation will execute at most operations in parallel. - public static Task ForEachAsync(IAsyncEnumerable source, Func body) + public static Task ForEachAsync(IAsyncEnumerable source!!, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, DefaultDegreeOfParallelism, TaskScheduler.Default, default(CancellationToken), body); } - /// Executes a for each operation on an in which iterations may run in parallel. + /// Executes a for each operation on an in which iterations may run in parallel. /// The type of the data in the source. - /// An enumerable data source. + /// An asynchronous enumerable data source. /// A cancellation token that may be used to cancel the for each operation. /// An asynchronous delegate that is invoked once per element in the data source. /// The exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. /// The operation will execute at most operations in parallel. - public static Task ForEachAsync(IAsyncEnumerable source, CancellationToken cancellationToken, Func body) + public static Task ForEachAsync(IAsyncEnumerable source!!, CancellationToken cancellationToken, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, DefaultDegreeOfParallelism, TaskScheduler.Default, cancellationToken, body); } - /// Executes a for each operation on an in which iterations may run in parallel. + /// Executes a for each operation on an in which iterations may run in parallel. /// The type of the data in the source. - /// An enumerable data source. + /// An asynchronous enumerable data source. /// An object that configures the behavior of this operation. /// An asynchronous delegate that is invoked once per element in the data source. /// The exception that is thrown when the argument or argument is null. /// A task that represents the entire for each operation. - public static Task ForEachAsync(IAsyncEnumerable source, ParallelOptions parallelOptions, Func body) + public static Task ForEachAsync(IAsyncEnumerable source!!, ParallelOptions parallelOptions!!, Func body!!) { - if (source is null) - { - throw new ArgumentNullException(nameof(source)); - } - if (parallelOptions is null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - if (body is null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachAsync(source, parallelOptions.EffectiveMaxConcurrencyLevel, parallelOptions.EffectiveTaskScheduler, parallelOptions.CancellationToken, body); } - /// Executes a for each operation on an in which iterations may run in parallel. + /// Executes a for each operation on an in which iterations may run in parallel. /// The type of the data in the source. - /// An enumerable data source. + /// An asynchronous enumerable data source. /// A integer indicating how many operations to allow to run in parallel. /// The task scheduler on which all code should execute. /// A cancellation token that may be used to cancel the for each operation. diff --git a/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.cs b/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.cs index 1b81cfbb8b9b4a..965c5d4d97638d 100644 --- a/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.cs +++ b/src/libraries/System.Threading.Tasks.Parallel/src/System/Threading/Tasks/Parallel.cs @@ -187,17 +187,8 @@ public static void Invoke(params Action[] actions) /// provided operations has completed, regardless of whether completion /// occurs due to normal or exceptional termination. /// - public static void Invoke(ParallelOptions parallelOptions, params Action[] actions) + public static void Invoke(ParallelOptions parallelOptions!!, params Action[] actions!!) { - if (actions == null) - { - throw new ArgumentNullException(nameof(actions)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - // On .NET Framework, we throw an ODE if we're passed a disposed CancellationToken. // Here, CancellationToken.ThrowIfSourceDisposed() is not exposed. // This is benign, because we'll end up throwing ODE when we register @@ -386,13 +377,8 @@ public static void Invoke(ParallelOptions parallelOptions, params Action[] actio /// The delegate is invoked once for each value in the iteration range: /// [fromInclusive, toExclusive). It is provided with the iteration count (an Int32) as a parameter. /// - public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action body) + public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForWorker( fromInclusive, toExclusive, s_defaultParallelOptions, @@ -415,13 +401,8 @@ public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action< /// The delegate is invoked once for each value in the iteration range: /// [fromInclusive, toExclusive). It is provided with the iteration count (an Int64) as a parameter. /// - public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action body) + public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForWorker64( fromInclusive, toExclusive, s_defaultParallelOptions, body, null, null, null, null); @@ -454,17 +435,8 @@ public static ParallelLoopResult For(long fromInclusive, long toExclusive, Actio /// The delegate is invoked once for each value in the iteration range: /// [fromInclusive, toExclusive). It is provided with the iteration count (an Int32) as a parameter. /// - public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions!!, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForWorker( fromInclusive, toExclusive, parallelOptions, body, null, null, null, null); @@ -497,17 +469,8 @@ public static ParallelLoopResult For(int fromInclusive, int toExclusive, Paralle /// The delegate is invoked once for each value in the iteration range: /// [fromInclusive, toExclusive). It is provided with the iteration count (an Int64) as a parameter. /// - public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions!!, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForWorker64( fromInclusive, toExclusive, parallelOptions, body, null, null, null, null); @@ -553,13 +516,8 @@ public static ParallelLoopResult For(long fromInclusive, long toExclusive, Paral /// relevant information about the loop's completion. /// /// - public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action body) + public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForWorker( fromInclusive, toExclusive, s_defaultParallelOptions, null, body, null, null, null); @@ -583,13 +541,8 @@ public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action< /// and a ParallelLoopState instance that may be /// used to break out of the loop prematurely. /// - public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action body) + public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForWorker64( fromInclusive, toExclusive, s_defaultParallelOptions, null, body, null, null, null); @@ -624,17 +577,8 @@ public static ParallelLoopResult For(long fromInclusive, long toExclusive, Actio /// and a ParallelLoopState instance that may be /// used to break out of the loop prematurely. /// - public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions!!, Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForWorker( fromInclusive, toExclusive, parallelOptions, null, body, null, null, null); @@ -669,18 +613,9 @@ public static ParallelLoopResult For(int fromInclusive, int toExclusive, Paralle /// and a ParallelLoopState instance that may be /// used to break out of the loop prematurely. /// - public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, - Action body) + public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions!!, + Action body!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForWorker64( fromInclusive, toExclusive, parallelOptions, null, body, null, null, null); @@ -726,23 +661,10 @@ public static ParallelLoopResult For(long fromInclusive, long toExclusive, Paral /// public static ParallelLoopResult For( int fromInclusive, int toExclusive, - Func localInit, - Func body, - Action localFinally) + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - return ForWorker( fromInclusive, toExclusive, s_defaultParallelOptions, null, null, body, localInit, localFinally); @@ -788,23 +710,10 @@ public static ParallelLoopResult For( /// public static ParallelLoopResult For( long fromInclusive, long toExclusive, - Func localInit, - Func body, - Action localFinally) + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - return ForWorker64( fromInclusive, toExclusive, s_defaultParallelOptions, null, null, body, localInit, localFinally); @@ -860,28 +769,11 @@ public static ParallelLoopResult For( /// /// public static ParallelLoopResult For( - int fromInclusive, int toExclusive, ParallelOptions parallelOptions, - Func localInit, - Func body, - Action localFinally) + int fromInclusive, int toExclusive, ParallelOptions parallelOptions!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForWorker( fromInclusive, toExclusive, parallelOptions, null, null, body, localInit, localFinally); @@ -937,29 +829,11 @@ public static ParallelLoopResult For( /// /// public static ParallelLoopResult For( - long fromInclusive, long toExclusive, ParallelOptions parallelOptions, - Func localInit, - Func body, - Action localFinally) + long fromInclusive, long toExclusive, ParallelOptions parallelOptions!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - - return ForWorker64( fromInclusive, toExclusive, parallelOptions, null, null, body, localInit, localFinally); @@ -1538,17 +1412,8 @@ private static ParallelLoopResult ForWorker64( /// The delegate is invoked once for each element in the /// enumerable. It is provided with the current element as a parameter. /// - public static ParallelLoopResult ForEach(IEnumerable source, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachWorker( source, s_defaultParallelOptions, body, null, null, null, null, null, null); } @@ -1583,21 +1448,8 @@ public static ParallelLoopResult ForEach(IEnumerable source, A /// The delegate is invoked once for each element in the /// enumerable. It is provided with the current element as a parameter. /// - public static ParallelLoopResult ForEach(IEnumerable source, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, ParallelOptions parallelOptions!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForEachWorker( source, parallelOptions, body, null, null, null, null, null, null); } @@ -1623,17 +1475,8 @@ public static ParallelLoopResult ForEach(IEnumerable source, P /// and a ParallelLoopState instance that may be /// used to break out of the loop prematurely. /// - public static ParallelLoopResult ForEach(IEnumerable source, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachWorker( source, s_defaultParallelOptions, null, body, null, null, null, null, null); } @@ -1670,21 +1513,8 @@ public static ParallelLoopResult ForEach(IEnumerable source, A /// and a ParallelLoopState instance that may be /// used to break out of the loop prematurely. /// - public static ParallelLoopResult ForEach(IEnumerable source, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, ParallelOptions parallelOptions!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForEachWorker( source, parallelOptions, null, body, null, null, null, null, null); } @@ -1710,17 +1540,8 @@ public static ParallelLoopResult ForEach(IEnumerable source, P /// a ParallelLoopState instance that may be /// used to break out of the loop prematurely, and the current element's index (an Int64). /// - public static ParallelLoopResult ForEach(IEnumerable source, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return ForEachWorker( source, s_defaultParallelOptions, null, null, body, null, null, null, null); } @@ -1757,21 +1578,8 @@ public static ParallelLoopResult ForEach(IEnumerable source, A /// a ParallelLoopState instance that may be /// used to break out of the loop prematurely, and the current element's index (an Int64). /// - public static ParallelLoopResult ForEach(IEnumerable source, ParallelOptions parallelOptions, Action body) + public static ParallelLoopResult ForEach(IEnumerable source!!, ParallelOptions parallelOptions!!, Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForEachWorker( source, parallelOptions, null, null, body, null, null, null, null); } @@ -1817,26 +1625,9 @@ public static ParallelLoopResult ForEach(IEnumerable source, P /// action on each thread's local state. /// /// - public static ParallelLoopResult ForEach(IEnumerable source, Func localInit, - Func body, Action localFinally) + public static ParallelLoopResult ForEach(IEnumerable source!!, Func localInit!!, + Func body!!, Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - return ForEachWorker( source, s_defaultParallelOptions, null, null, null, body, null, localInit, localFinally); } @@ -1893,31 +1684,10 @@ public static ParallelLoopResult ForEach(IEnumerable s /// action on each thread's local state. /// /// - public static ParallelLoopResult ForEach(IEnumerable source, - ParallelOptions parallelOptions, Func localInit, - Func body, Action localFinally) + public static ParallelLoopResult ForEach(IEnumerable source!!, + ParallelOptions parallelOptions!!, Func localInit!!, + Func body!!, Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForEachWorker( source, parallelOptions, null, null, null, body, null, localInit, localFinally); } @@ -1963,26 +1733,9 @@ public static ParallelLoopResult ForEach(IEnumerable s /// action on each thread's local state. /// /// - public static ParallelLoopResult ForEach(IEnumerable source, Func localInit, - Func body, Action localFinally) + public static ParallelLoopResult ForEach(IEnumerable source!!, Func localInit!!, + Func body!!, Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - return ForEachWorker( source, s_defaultParallelOptions, null, null, null, null, body, localInit, localFinally); } @@ -2039,30 +1792,9 @@ public static ParallelLoopResult ForEach(IEnumerable s /// action on each thread's local state. /// /// - public static ParallelLoopResult ForEach(IEnumerable source, ParallelOptions parallelOptions, Func localInit, - Func body, Action localFinally) + public static ParallelLoopResult ForEach(IEnumerable source!!, ParallelOptions parallelOptions!!, Func localInit!!, + Func body!!, Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return ForEachWorker( source, parallelOptions, null, null, null, null, body, localInit, localFinally); } @@ -2291,18 +2023,9 @@ private static ParallelLoopResult ForEachWorker( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - Action body) + Partitioner source!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return PartitionerForEachWorker(source, s_defaultParallelOptions, body, null, null, null, null, null, null); } @@ -2350,18 +2073,9 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - Action body) + Partitioner source!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - return PartitionerForEachWorker(source, s_defaultParallelOptions, null, body, null, null, null, null, null); } @@ -2412,18 +2126,9 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - OrderablePartitioner source, - Action body) + OrderablePartitioner source!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (!source.KeysNormalized) { throw new InvalidOperationException(SR.Parallel_ForEach_OrderedPartitionerKeysNotNormalized); @@ -2494,28 +2199,11 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - Func localInit, - Func body, - Action localFinally) + Partitioner source!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - return PartitionerForEachWorker(source, s_defaultParallelOptions, null, null, null, body, null, localInit, localFinally); } @@ -2584,28 +2272,11 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - OrderablePartitioner source, - Func localInit, - Func body, - Action localFinally) + OrderablePartitioner source!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (!source.KeysNormalized) { throw new InvalidOperationException(SR.Parallel_ForEach_OrderedPartitionerKeysNotNormalized); @@ -2667,23 +2338,10 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - ParallelOptions parallelOptions, - Action body) + Partitioner source!!, + ParallelOptions parallelOptions!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return PartitionerForEachWorker(source, parallelOptions, body, null, null, null, null, null, null); } @@ -2742,23 +2400,10 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - ParallelOptions parallelOptions, - Action body) + Partitioner source!!, + ParallelOptions parallelOptions!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return PartitionerForEachWorker(source, parallelOptions, null, body, null, null, null, null, null); } @@ -2820,23 +2465,10 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - OrderablePartitioner source, - ParallelOptions parallelOptions, - Action body) + OrderablePartitioner source!!, + ParallelOptions parallelOptions!!, + Action body!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - if (!source.KeysNormalized) { throw new InvalidOperationException(SR.Parallel_ForEach_OrderedPartitionerKeysNotNormalized); @@ -2918,33 +2550,12 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - Partitioner source, - ParallelOptions parallelOptions, - Func localInit, - Func body, - Action localFinally) + Partitioner source!!, + ParallelOptions parallelOptions!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - return PartitionerForEachWorker(source, parallelOptions, null, null, null, body, null, localInit, localFinally); } @@ -3024,33 +2635,12 @@ public static ParallelLoopResult ForEach( /// /// public static ParallelLoopResult ForEach( - OrderablePartitioner source, - ParallelOptions parallelOptions, - Func localInit, - Func body, - Action localFinally) + OrderablePartitioner source!!, + ParallelOptions parallelOptions!!, + Func localInit!!, + Func body!!, + Action localFinally!!) { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); - } - if (body == null) - { - throw new ArgumentNullException(nameof(body)); - } - if (localInit == null) - { - throw new ArgumentNullException(nameof(localInit)); - } - if (localFinally == null) - { - throw new ArgumentNullException(nameof(localFinally)); - } - if (parallelOptions == null) - { - throw new ArgumentNullException(nameof(parallelOptions)); - } - if (!source.KeysNormalized) { throw new InvalidOperationException(SR.Parallel_ForEach_OrderedPartitionerKeysNotNormalized); diff --git a/src/libraries/System.Transactions.Local/src/System/Transactions/Transaction.cs b/src/libraries/System.Transactions.Local/src/System/Transactions/Transaction.cs index d2af113ed8f63e..7b16ffc28bda48 100644 --- a/src/libraries/System.Transactions.Local/src/System/Transactions/Transaction.cs +++ b/src/libraries/System.Transactions.Local/src/System/Transactions/Transaction.cs @@ -286,11 +286,7 @@ internal Transaction(DistributedTransaction distributedTransaction) internal Transaction(IsolationLevel isoLevel, ISimpleTransactionSuperior superior) { TransactionManager.ValidateIsolationLevel(isoLevel); - - if (superior == null) - { - throw new ArgumentNullException(nameof(superior)); - } + ArgumentNullException.ThrowIfNull(superior); _isoLevel = isoLevel; @@ -504,10 +500,7 @@ public Enlistment EnlistDurable( throw new ArgumentException(SR.BadResourceManagerId, nameof(resourceManagerIdentifier)); } - if (enlistmentNotification == null) - { - throw new ArgumentNullException(nameof(enlistmentNotification)); - } + ArgumentNullException.ThrowIfNull(enlistmentNotification); if (enlistmentOptions != EnlistmentOptions.None && enlistmentOptions != EnlistmentOptions.EnlistDuringPrepareRequired) { @@ -558,10 +551,7 @@ public Enlistment EnlistDurable( throw new ArgumentException(SR.BadResourceManagerId, nameof(resourceManagerIdentifier)); } - if (singlePhaseNotification == null) - { - throw new ArgumentNullException(nameof(singlePhaseNotification)); - } + ArgumentNullException.ThrowIfNull(singlePhaseNotification); if (enlistmentOptions != EnlistmentOptions.None && enlistmentOptions != EnlistmentOptions.EnlistDuringPrepareRequired) { @@ -657,10 +647,7 @@ public Enlistment EnlistVolatile(IEnlistmentNotification enlistmentNotification, throw new ObjectDisposedException(nameof(Transaction)); } - if (enlistmentNotification == null) - { - throw new ArgumentNullException(nameof(enlistmentNotification)); - } + ArgumentNullException.ThrowIfNull(enlistmentNotification); if (enlistmentOptions != EnlistmentOptions.None && enlistmentOptions != EnlistmentOptions.EnlistDuringPrepareRequired) { @@ -702,10 +689,7 @@ public Enlistment EnlistVolatile(ISinglePhaseNotification singlePhaseNotificatio throw new ObjectDisposedException(nameof(Transaction)); } - if (singlePhaseNotification == null) - { - throw new ArgumentNullException(nameof(singlePhaseNotification)); - } + ArgumentNullException.ThrowIfNull(singlePhaseNotification); if (enlistmentOptions != EnlistmentOptions.None && enlistmentOptions != EnlistmentOptions.EnlistDuringPrepareRequired) { @@ -990,10 +974,7 @@ public bool EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promo throw new ObjectDisposedException(nameof(Transaction)); } - if (promotableSinglePhaseNotification == null) - { - throw new ArgumentNullException(nameof(promotableSinglePhaseNotification)); - } + ArgumentNullException.ThrowIfNull(promotableSinglePhaseNotification); if (promoterType == Guid.Empty) { @@ -1042,15 +1023,8 @@ public Enlistment PromoteAndEnlistDurable(Guid resourceManagerIdentifier, throw new ArgumentException(SR.BadResourceManagerId, nameof(resourceManagerIdentifier)); } - if (promotableNotification == null) - { - throw new ArgumentNullException(nameof(promotableNotification)); - } - - if (enlistmentNotification == null) - { - throw new ArgumentNullException(nameof(enlistmentNotification)); - } + ArgumentNullException.ThrowIfNull(promotableNotification); + ArgumentNullException.ThrowIfNull(enlistmentNotification); if (enlistmentOptions != EnlistmentOptions.None && enlistmentOptions != EnlistmentOptions.EnlistDuringPrepareRequired) { @@ -1091,10 +1065,7 @@ public void SetDistributedTransactionIdentifier(IPromotableSinglePhaseNotificati throw new ObjectDisposedException(nameof(Transaction)); } - if (promotableNotification == null) - { - throw new ArgumentNullException(nameof(promotableNotification)); - } + ArgumentNullException.ThrowIfNull(promotableNotification); if (distributedTransactionIdentifier == Guid.Empty) { diff --git a/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionInterop.cs b/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionInterop.cs index d47da0914ef205..e257b162577815 100644 --- a/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionInterop.cs +++ b/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionInterop.cs @@ -60,18 +60,8 @@ internal static DistributedTransaction ConvertToDistributedTransaction(Transacti /// public static readonly Guid PromoterTypeDtc = new Guid("14229753-FFE1-428D-82B7-DF73045CB8DA"); - public static byte[] GetExportCookie(Transaction transaction, byte[] whereabouts) + public static byte[] GetExportCookie(Transaction transaction!!, byte[] whereabouts!!) { - if (null == transaction) - { - throw new ArgumentNullException(nameof(transaction)); - } - - if (null == whereabouts) - { - throw new ArgumentNullException(nameof(whereabouts)); - } - TransactionsEtwProvider etwLog = TransactionsEtwProvider.Log; if (etwLog.IsEnabled()) { @@ -93,13 +83,8 @@ public static byte[] GetExportCookie(Transaction transaction, byte[] whereabouts return cookie; } - public static Transaction GetTransactionFromExportCookie(byte[] cookie) + public static Transaction GetTransactionFromExportCookie(byte[] cookie!!) { - if (null == cookie) - { - throw new ArgumentNullException(nameof(cookie)); - } - if (cookie.Length < 32) { throw new ArgumentException(SR.InvalidArgument, nameof(cookie)); @@ -169,13 +154,8 @@ public static byte[] GetTransmitterPropagationToken(Transaction transaction) return token; } - public static Transaction GetTransactionFromTransmitterPropagationToken(byte[] propagationToken) + public static Transaction GetTransactionFromTransmitterPropagationToken(byte[] propagationToken!!) { - if (null == propagationToken) - { - throw new ArgumentNullException(nameof(propagationToken)); - } - if (propagationToken.Length < 24) { throw new ArgumentException(SR.InvalidArgument, nameof(propagationToken)); @@ -240,13 +220,8 @@ public static IDtcTransaction GetDtcTransaction(Transaction transaction) return transactionNative; } - public static Transaction GetTransactionFromDtcTransaction(IDtcTransaction transactionNative) + public static Transaction GetTransactionFromDtcTransaction(IDtcTransaction transactionNative!!) { - if (null == transactionNative) - { - throw new ArgumentNullException(nameof(transactionNative)); - } - TransactionsEtwProvider etwLog = TransactionsEtwProvider.Log; if (etwLog.IsEnabled()) { @@ -280,13 +255,8 @@ public static byte[] GetWhereabouts() return returnValue; } - internal static DistributedTransaction GetDistributedTransactionFromTransmitterPropagationToken(byte[] propagationToken) + internal static DistributedTransaction GetDistributedTransactionFromTransmitterPropagationToken(byte[] propagationToken!!) { - if (null == propagationToken) - { - throw new ArgumentNullException(nameof(propagationToken)); - } - if (propagationToken.Length < 24) { throw new ArgumentException(SR.InvalidArgument, nameof(propagationToken)); diff --git a/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionManager.cs b/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionManager.cs index 4ccd3c5f17bc50..456c7f9fe82bd9 100644 --- a/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionManager.cs +++ b/src/libraries/System.Transactions.Local/src/System/Transactions/TransactionManager.cs @@ -110,10 +110,7 @@ public static HostCurrentTransactionCallback? HostCurrentCallback { // Note do not add trace notifications to this method. It is called // at the startup of SQLCLR and tracing has too much working set overhead. - if (value == null) - { - throw new ArgumentNullException(nameof(value)); - } + ArgumentNullException.ThrowIfNull(value); lock (ClassSyncObject) { diff --git a/src/libraries/System.Web.HttpUtility/src/System/Web/HttpUtility.cs b/src/libraries/System.Web.HttpUtility/src/System/Web/HttpUtility.cs index 365b6c6bcfb25c..2f03ff684a174e 100644 --- a/src/libraries/System.Web.HttpUtility/src/System/Web/HttpUtility.cs +++ b/src/libraries/System.Web.HttpUtility/src/System/Web/HttpUtility.cs @@ -80,18 +80,8 @@ public override string ToString() public static NameValueCollection ParseQueryString(string query) => ParseQueryString(query, Encoding.UTF8); - public static NameValueCollection ParseQueryString(string query, Encoding encoding) + public static NameValueCollection ParseQueryString(string query!!, Encoding encoding!!) { - if (query == null) - { - throw new ArgumentNullException(nameof(query)); - } - - if (encoding == null) - { - throw new ArgumentNullException(nameof(encoding)); - } - HttpQSCollection result = new HttpQSCollection(); int queryLength = query.Length; int namePos = queryLength > 0 && query[0] == '?' ? 1 : 0; diff --git a/src/libraries/System.Web.HttpUtility/src/System/Web/Util/HttpEncoder.cs b/src/libraries/System.Web.HttpUtility/src/System/Web/Util/HttpEncoder.cs index 658665d3c66614..7aab010e301d7c 100644 --- a/src/libraries/System.Web.HttpUtility/src/System/Web/Util/HttpEncoder.cs +++ b/src/libraries/System.Web.HttpUtility/src/System/Web/Util/HttpEncoder.cs @@ -55,10 +55,8 @@ internal static void HtmlAttributeEncode(string? value, TextWriter output) { return; } - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } + + ArgumentNullException.ThrowIfNull(output); HtmlAttributeEncodeInternal(value, output); } @@ -110,26 +108,16 @@ private static void HtmlAttributeEncodeInternal(string s, TextWriter output) [return: NotNullIfNotNull("value")] internal static string? HtmlDecode(string? value) => string.IsNullOrEmpty(value) ? value : WebUtility.HtmlDecode(value); - internal static void HtmlDecode(string? value, TextWriter output) + internal static void HtmlDecode(string? value, TextWriter output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - output.Write(WebUtility.HtmlDecode(value)); } [return: NotNullIfNotNull("value")] internal static string? HtmlEncode(string? value) => string.IsNullOrEmpty(value) ? value : WebUtility.HtmlEncode(value); - internal static void HtmlEncode(string? value, TextWriter output) + internal static void HtmlEncode(string? value, TextWriter output!!) { - if (output == null) - { - throw new ArgumentNullException(nameof(output)); - } - output.Write(WebUtility.HtmlEncode(value)); } @@ -647,10 +635,7 @@ private static bool ValidateUrlEncodingParameters([NotNullWhen(true)] byte[]? by return false; } - if (bytes == null) - { - throw new ArgumentNullException(nameof(bytes)); - } + ArgumentNullException.ThrowIfNull(bytes); if (offset < 0 || offset > bytes.Length) { throw new ArgumentOutOfRangeException(nameof(offset)); diff --git a/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj b/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj index 2266de2c9476d6..b2de19721e30a7 100644 --- a/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj +++ b/src/libraries/System.Windows.Extensions/src/System.Windows.Extensions.csproj @@ -12,7 +12,7 @@ System.Security.Cryptography.X509Certificates.X509Certificate2UI System.Security.Cryptography.X509Certificates.X509SelectionFlag - + SR.PlatformNotSupported_System_Windows_Extensions @@ -82,6 +82,10 @@ System.Security.Cryptography.X509Certificates.X509SelectionFlag + + + diff --git a/src/libraries/System.Windows.Extensions/src/System/Security/Cryptography/X509Certificates/X509Certificate2UI.cs b/src/libraries/System.Windows.Extensions/src/System/Security/Cryptography/X509Certificates/X509Certificate2UI.cs index 2f0db1203faca7..a6b90e6f034d2d 100644 --- a/src/libraries/System.Windows.Extensions/src/System/Security/Cryptography/X509Certificates/X509Certificate2UI.cs +++ b/src/libraries/System.Windows.Extensions/src/System/Security/Cryptography/X509Certificates/X509Certificate2UI.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Win32.SafeHandles; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace System.Security.Cryptography.X509Certificates @@ -17,17 +18,13 @@ public sealed class X509Certificate2UI internal const int ERROR_SUCCESS = 0; internal const int ERROR_CANCELLED = 1223; - public static void DisplayCertificate(X509Certificate2 certificate) + public static void DisplayCertificate(X509Certificate2 certificate!!) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); DisplayX509Certificate(certificate, IntPtr.Zero); } - public static void DisplayCertificate(X509Certificate2 certificate, IntPtr hwndParent) + public static void DisplayCertificate(X509Certificate2 certificate!!, IntPtr hwndParent) { - if (certificate == null) - throw new ArgumentNullException(nameof(certificate)); DisplayX509Certificate(certificate, hwndParent); } @@ -41,7 +38,7 @@ public static X509Certificate2Collection SelectFromCollection(X509Certificate2Co return SelectFromCollectionHelper(certificates, title, message, selectionFlag, hwndParent); } - private static void DisplayX509Certificate(X509Certificate2 certificate, IntPtr hwndParent) + private static unsafe void DisplayX509Certificate(X509Certificate2 certificate, IntPtr hwndParent) { using (SafeCertContextHandle safeCertContext = X509Utils.DuplicateCertificateContext(certificate)) { @@ -51,8 +48,12 @@ private static void DisplayX509Certificate(X509Certificate2 certificate, IntPtr int dwErrorCode = ERROR_SUCCESS; // Initialize view structure. - Interop.CryptUI.CRYPTUI_VIEWCERTIFICATE_STRUCTW ViewInfo = new Interop.CryptUI.CRYPTUI_VIEWCERTIFICATE_STRUCTW(); - ViewInfo.dwSize = (uint)Marshal.SizeOf(ViewInfo); + Interop.CryptUI.CRYPTUI_VIEWCERTIFICATE_STRUCTW ViewInfo = default; +#if NET7_0_OR_GREATER + ViewInfo.dwSize = (uint)sizeof(Interop.CryptUI.CRYPTUI_VIEWCERTIFICATE_STRUCTW.Native); +#else + ViewInfo.dwSize = (uint)Marshal.SizeOf(); +#endif ViewInfo.hwndParent = hwndParent; ViewInfo.dwFlags = 0; ViewInfo.szTitle = null; @@ -82,10 +83,8 @@ private static void DisplayX509Certificate(X509Certificate2 certificate, IntPtr } } - private static X509Certificate2Collection SelectFromCollectionHelper(X509Certificate2Collection certificates, string? title, string? message, X509SelectionFlag selectionFlag, IntPtr hwndParent) + private static X509Certificate2Collection SelectFromCollectionHelper(X509Certificate2Collection certificates!!, string? title, string? message, X509SelectionFlag selectionFlag, IntPtr hwndParent) { - if (certificates == null) - throw new ArgumentNullException(nameof(certificates)); if (selectionFlag < X509SelectionFlag.SingleSelection || selectionFlag > X509SelectionFlag.MultiSelection) throw new ArgumentException(SR.Format(SR.Enum_InvalidValue, nameof(selectionFlag))); @@ -110,10 +109,18 @@ private static unsafe SafeCertStoreHandle SelectFromStore(SafeCertStoreHandle sa if (safeCertStoreHandle == null || safeCertStoreHandle.IsInvalid) throw new CryptographicException(Marshal.GetLastWin32Error()); - Interop.CryptUI.CRYPTUI_SELECTCERTIFICATE_STRUCTW csc = new Interop.CryptUI.CRYPTUI_SELECTCERTIFICATE_STRUCTW(); + Interop.CryptUI.CRYPTUI_SELECTCERTIFICATE_STRUCTW csc = default; // Older versions of CRYPTUI do not check the size correctly, // so always force it to the oldest version of the structure. +#if NET7_0_OR_GREATER + // Declare a local for Native to enable us to get the managed byte offset + // without having a null check cause a failure. + Interop.CryptUI.CRYPTUI_SELECTCERTIFICATE_STRUCTW.Native native; + Unsafe.SkipInit(out native); + csc.dwSize = (uint)Unsafe.ByteOffset(ref Unsafe.As(ref native), ref Unsafe.As(ref native.hSelectedCertStore)); +#else csc.dwSize = (uint)Marshal.OffsetOf(typeof(Interop.CryptUI.CRYPTUI_SELECTCERTIFICATE_STRUCTW), "hSelectedCertStore"); +#endif csc.hwndParent = hwndParent; csc.dwFlags = (uint)selectionFlags; csc.szTitle = title; @@ -131,7 +138,7 @@ private static unsafe SafeCertStoreHandle SelectFromStore(SafeCertStoreHandle sa csc.rgPropSheetPages = IntPtr.Zero; csc.hSelectedCertStore = safeCertStoreHandle.DangerousGetHandle(); - SafeCertContextHandle safeCertContextHandle = Interop.CryptUI.CryptUIDlgSelectCertificateW(csc); + SafeCertContextHandle safeCertContextHandle = Interop.CryptUI.CryptUIDlgSelectCertificateW(ref csc); if (safeCertContextHandle != null && !safeCertContextHandle.IsInvalid) { diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets index 0941e72a2e0aa6..269259c5d81e69 100644 --- a/src/libraries/sendtohelix-wasm.targets +++ b/src/libraries/sendtohelix-wasm.targets @@ -41,7 +41,13 @@ + + + + + + @@ -91,8 +97,8 @@ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'src', 'mono', 'wasm', 'build')) - $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'NetCoreServer', '$(AspNetCoreAppCurrent)-$(Configuration)')) - $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'RemoteLoopServer', '$(AspNetCoreAppCurrent)-$(Configuration)')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'NetCoreServer', '$(Configuration)', '$(AspNetCoreAppCurrent)')) + $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin', 'RemoteLoopServer', '$(Configuration)', '$(AspNetCoreAppCurrent)')) Workloads- EMSDK- $(Scenario)- @@ -137,7 +143,7 @@ - + @@ -156,7 +162,6 @@ <_WasmWorkItem Include="$(WorkItemArchiveWildCard)" Exclude="$(HelixCorrelationPayload)" Condition="'$(Scenario)' == 'BuildWasmApps'" /> <_WasmWorkItem Include="$(TestArchiveTestsRoot)**/Wasm.Debugger.Tests.zip" Condition="'$(IsWasmDebuggerTests)' == 'true'" /> - <_WasmWorkItem Include="$(TestArchiveRoot)browseronly/**/*.zip" Condition="'$(Scenario)' == 'WasmTestOnBrowser'" /> @@ -165,6 +170,19 @@ + + + <_WasmWorkItem Include="$(TestArchiveRoot)browseronly/**/*.zip" Condition="'$(Scenario)' == 'WasmTestOnBrowser'" /> + <_WasmWorkItem Include="$(TestArchiveRoot)browserornodejs/**/*.zip" Condition="'$(Scenario)' == 'WasmTestOnBrowser'" /> + <_WasmWorkItem Include="$(TestArchiveRoot)browserornodejs/**/*.zip" Condition="'$(Scenario)' == 'WasmTestOnNodeJs'" /> + <_WasmWorkItem Include="$(TestArchiveRoot)nodejsonly/**/*.zip" Condition="'$(Scenario)' == 'WasmTestOnNodeJs'" /> + + + %(Identity) + $(HelixCommand) + $(_workItemTimeout) + + diff --git a/src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard.txt b/src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard.txt index 40ec257771a8bc..64a79cd3476c11 100644 --- a/src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard.txt +++ b/src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard.txt @@ -1,91 +1,22 @@ Compat issues with assembly mscorlib: TypeCannotChangeClassification : Type 'System.RuntimeArgumentHandle' is a 'ref struct' in the implementation but is a 'struct' in the contract. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.RuntimeTypeHandle.GetModuleHandle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.SByte)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.SByte)' in the contract but not the implementation. TypeCannotChangeClassification : Type 'System.TypedReference' is a 'ref struct' in the implementation but is a 'struct' in the contract. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.TypedReference.MakeTypedReference(System.Object, System.Reflection.FieldInfo[])' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.TypedReference.SetTypedReference(System.TypedReference, System.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr..ctor(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.UIntPtr)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.ToPointer()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.DispIdAttribute' exists on 'System.Collections.IEnumerable.GetEnumerator()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.AppendChar(System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.InsertAt(System.Int32, System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.RemoveAt(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.SetAt(System.Int32, System.Char)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. Compat issues with assembly netstandard: TypeCannotChangeClassification : Type 'System.RuntimeArgumentHandle' is a 'ref struct' in the implementation but is a 'struct' in the contract. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.RuntimeTypeHandle.GetModuleHandle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.SByte)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.SByte)' in the contract but not the implementation. TypeCannotChangeClassification : Type 'System.TypedReference' is a 'ref struct' in the implementation but is a 'struct' in the contract. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.TypedReference.MakeTypedReference(System.Object, System.Reflection.FieldInfo[])' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.TypedReference.SetTypedReference(System.TypedReference, System.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr..ctor(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.UIntPtr)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.ToPointer()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.DispIdAttribute' exists on 'System.Collections.IEnumerable.GetEnumerator()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.ComponentModel.BackgroundWorker' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.CancellationPending' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.IsBusy' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerReportsProgress' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerSupportsCancellation' in the contract but not the implementation. CannotSealType : Type 'System.ComponentModel.BaseNumberConverter' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.ComponentModel.BaseNumberConverter..ctor()' does not exist in the implementation but it does exist in the contract. CannotMakeMemberNonVirtual : Member 'public System.Boolean System.ComponentModel.BaseNumberConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Boolean System.ComponentModel.BaseNumberConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Object System.ComponentModel.BaseNumberConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Object System.ComponentModel.BaseNumberConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)' is non-virtual in the implementation but is virtual in the contract. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.RunWorkerCompletedEventArgs.UserState' in the contract but not the implementation. CannotSealType : Type 'System.Data.Constraint' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Data.Constraint..ctor()' does not exist in the implementation but it does exist in the contract. CannotMakeMemberNonVirtual : Member 'public System.String System.Data.Constraint.ConstraintName' is non-virtual in the implementation but is virtual in the contract. @@ -98,130 +29,8 @@ CannotMakeMemberNonVirtual : Member 'public System.String System.Data.Constraint CannotMakeMemberNonVirtual : Member 'protected System.Data.DataSet System.Data.Constraint._DataSet.get()' is non-virtual in the implementation but is virtual in the contract. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultPropertyAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.BasePriority' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HandleCount' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Id' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowTitle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MaxWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MinWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityBoostEnabled' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityClass' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivilegedProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessorAffinity' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Responding' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SessionId' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.TotalProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.UserProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ErrorDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Diagnostics.Process.Exited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.OutputDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessModule.FileVersionInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Domain' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.LoadUserProfile' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UserName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verb' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WindowStyle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.IdealProcessor' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.ProcessorAffinity' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.AttributeUsageAttribute' on 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' changed from '[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Event | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Struct, Inherited=false, AllowMultiple=false)]' in the contract to '[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Event | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Struct, Inherited=false, AllowMultiple=false)]' in the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.IO.FileSystemWatcher' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.IncludeSubdirectories' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.NotifyFilter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Site' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Error' in the contract but not the implementation. CannotSealType : Type 'System.Linq.EnumerableExecutor' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Linq.EnumerableExecutor..ctor()' does not exist in the implementation but it does exist in the contract. CannotSealType : Type 'System.Linq.EnumerableQuery' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. @@ -230,17 +39,6 @@ CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProces CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.InsertAt(System.Int32, System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.RemoveAt(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.SetAt(System.Int32, System.Char)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.Serialization.OptionalFieldAttribute' exists on 'System.TimeSpan System.Text.RegularExpressions.Regex.internalMatchTimeout' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.Semaphore.Release()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.AutoReset' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Enabled' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Timers.Timer.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Elapsed' in the contract but not the implementation. CannotSealType : Type 'System.Xml.Schema.XmlSchemaDatatype' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Xml.Schema.XmlSchemaDatatype..ctor()' does not exist in the implementation but it does exist in the contract. CannotMakeMemberNonVirtual : Member 'public System.Xml.XmlTokenizedType System.Xml.Schema.XmlSchemaDatatype.TokenizedType' is non-virtual in the implementation but is virtual in the contract. @@ -261,159 +59,18 @@ CannotMakeMemberNonVirtual : Member 'public System.Xml.Schema.XmlSchemaObjectCol CannotMakeMemberNonVirtual : Member 'public System.Xml.Schema.XmlSchemaObjectCollection System.Xml.Schema.XmlSchemaGroupBase.Items.get()' is non-virtual in the implementation but is virtual in the contract. Compat issues with assembly System: CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.ComponentModel.BackgroundWorker' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.CancellationPending' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.IsBusy' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerReportsProgress' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerSupportsCancellation' in the contract but not the implementation. CannotSealType : Type 'System.ComponentModel.BaseNumberConverter' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.ComponentModel.BaseNumberConverter..ctor()' does not exist in the implementation but it does exist in the contract. CannotMakeMemberNonVirtual : Member 'public System.Boolean System.ComponentModel.BaseNumberConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Type)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Boolean System.ComponentModel.BaseNumberConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Type)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Object System.ComponentModel.BaseNumberConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Object System.ComponentModel.BaseNumberConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext, System.Globalization.CultureInfo, System.Object, System.Type)' is non-virtual in the implementation but is virtual in the contract. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.RunWorkerCompletedEventArgs.UserState' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultPropertyAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.BasePriority' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HandleCount' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Id' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowTitle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MaxWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MinWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityBoostEnabled' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityClass' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivilegedProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessorAffinity' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Responding' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SessionId' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.TotalProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.UserProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ErrorDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Diagnostics.Process.Exited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.OutputDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessModule.FileVersionInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Domain' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.LoadUserProfile' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UserName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verb' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WindowStyle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.IdealProcessor' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.ProcessorAffinity' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.AttributeUsageAttribute' on 'System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute' changed from '[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Event | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Struct, Inherited=false, AllowMultiple=false)]' in the contract to '[AttributeUsageAttribute(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Event | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Struct, Inherited=false, AllowMultiple=false)]' in the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.IO.FileSystemWatcher' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.IncludeSubdirectories' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.NotifyFilter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Site' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Error' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.Serialization.OptionalFieldAttribute' exists on 'System.TimeSpan System.Text.RegularExpressions.Regex.internalMatchTimeout' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.Semaphore.Release()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.AutoReset' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Enabled' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Timers.Timer.Interval' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Timers.Timer.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Elapsed' in the contract but not the implementation. Compat issues with assembly System.ComponentModel.EventBasedAsync: CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.ComponentModel.BackgroundWorker' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.CancellationPending' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.BackgroundWorker.IsBusy' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerReportsProgress' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.ComponentModel.BackgroundWorker.WorkerSupportsCancellation' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.ComponentModel.RunWorkerCompletedEventArgs.UserState' in the contract but not the implementation. Compat issues with assembly System.ComponentModel.TypeConverter: CannotSealType : Type 'System.ComponentModel.BaseNumberConverter' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.ComponentModel.BaseNumberConverter..ctor()' does not exist in the implementation but it does exist in the contract. @@ -429,188 +86,31 @@ MembersMustExist : Member 'protected void System.Linq.EnumerableQuery..ctor()' d Compat issues with assembly System.Data: CannotSealType : Type 'System.Data.Constraint' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Data.Constraint..ctor()' does not exist in the implementation but it does exist in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint.ConstraintName' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint.Table' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint._DataSet' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint.ConstraintName.get()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'public System.String System.Data.Constraint.ConstraintName' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'public System.Data.DataTable System.Data.Constraint.Table' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'protected System.Data.DataSet System.Data.Constraint._DataSet' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'public System.String System.Data.Constraint.ConstraintName.get()' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public void System.Data.Constraint.ConstraintName.set(System.String)' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Data.DataTable System.Data.Constraint.Table.get()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint.ToString()' is non-virtual in the implementation but is virtual in the contract. -CannotMakeMemberNonVirtual : Member 'System.Data.Constraint._DataSet.get()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'public System.String System.Data.Constraint.ToString()' is non-virtual in the implementation but is virtual in the contract. +CannotMakeMemberNonVirtual : Member 'protected System.Data.DataSet System.Data.Constraint._DataSet.get()' is non-virtual in the implementation but is virtual in the contract. Compat issues with assembly System.Diagnostics.Process: CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultPropertyAttribute' exists on 'System.Diagnostics.Process' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.BasePriority' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitCode' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ExitTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Handle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HandleCount' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.HasExited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Id' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MachineName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainModule' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MainWindowTitle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MaxWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.MinWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Modules' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.NonpagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PagedSystemMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakPagedMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakVirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PeakWorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityBoostEnabled' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PriorityClass' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivateMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.PrivilegedProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.ProcessorAffinity' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Responding' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SafeHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.SessionId' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.StartTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.Process.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.Threads' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.TotalProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.UserProcessorTime' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.VirtualMemorySize64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.Process.WorkingSet64' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.ErrorDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Diagnostics.Process.Exited' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.Process.OutputDataReceived' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessModule.FileVersionInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Arguments' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.CreateNoWindow' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Domain' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Environment' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.EnvironmentVariables' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialog' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.ErrorDialogParentHandle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.FileName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.LoadUserProfile' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.PasswordInClearText' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardError' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardInput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.RedirectStandardOutput' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UserName' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.UseShellExecute' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verb' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DesignerSerializationVisibilityAttribute' exists on 'System.Diagnostics.ProcessStartInfo.Verbs' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WindowStyle' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.NotifyParentPropertyAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.Diagnostics.ProcessStartInfo.WorkingDirectory' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.IdealProcessor' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.Diagnostics.ProcessThread.ProcessorAffinity' in the contract but not the implementation. Compat issues with assembly System.IO.FileSystem.Watcher: CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultEventAttribute' exists on 'System.IO.FileSystemWatcher' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.EnableRaisingEvents' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Filter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.IncludeSubdirectories' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.InternalBufferSize' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.NotifyFilter' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.SettingsBindableAttribute' exists on 'System.IO.FileSystemWatcher.Path' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Site' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.DefaultValueAttribute' exists on 'System.IO.FileSystemWatcher.SynchronizingObject' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exists on 'System.IO.FileSystemWatcher.Error' in the contract but not the implementation. Compat issues with assembly System.Linq.Queryable: CannotSealType : Type 'System.Linq.EnumerableExecutor' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Linq.EnumerableExecutor..ctor()' does not exist in the implementation but it does exist in the contract. CannotSealType : Type 'System.Linq.EnumerableQuery' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Linq.EnumerableQuery..ctor()' does not exist in the implementation but it does exist in the contract. Compat issues with assembly System.Runtime: -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.RuntimeTypeHandle.GetModuleHandle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.SByte)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.SByte.TryParse(System.String, System.SByte)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt16.TryParse(System.String, System.UInt16)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt32.TryParse(System.String, System.UInt32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.Globalization.NumberStyles, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.Parse(System.String, System.IFormatProvider)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.Globalization.NumberStyles, System.IFormatProvider, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UInt64.TryParse(System.String, System.UInt64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr..ctor(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.UIntPtr)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.op_Explicit(System.Void*)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.CLSCompliantAttribute' exists on 'System.UIntPtr.ToPointer()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.DispIdAttribute' exists on 'System.Collections.IEnumerable.GetEnumerator()' in the contract but not the implementation. Compat issues with assembly System.Security.SecureString: CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.AppendChar(System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.InsertAt(System.Int32, System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.RemoveAt(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute' exists on 'System.Security.SecureString.SetAt(System.Int32, System.Char)' in the contract but not the implementation. -Compat issues with assembly System.Text.RegularExpressions: -CannotRemoveAttribute : Attribute 'System.Runtime.Serialization.OptionalFieldAttribute' exists on 'System.TimeSpan System.Text.RegularExpressions.Regex.internalMatchTimeout' in the contract but not the implementation. -Compat issues with assembly System.Threading: -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.Semaphore.Release()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.Wait(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute' exists on 'System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[], System.Boolean, System.Int32)' in the contract but not the implementation. Compat issues with assembly System.Xml: CannotSealType : Type 'System.Xml.Schema.XmlSchemaDatatype' is effectively (has a private constructor) sealed in the implementation but not sealed in the contract. MembersMustExist : Member 'protected void System.Xml.Schema.XmlSchemaDatatype..ctor()' does not exist in the implementation but it does exist in the contract. @@ -630,5 +130,4 @@ CannotSealType : Type 'System.Xml.Schema.XmlSchemaGroupBase' is effectively (has MembersMustExist : Member 'protected void System.Xml.Schema.XmlSchemaGroupBase..ctor()' does not exist in the implementation but it does exist in the contract. CannotMakeMemberNonVirtual : Member 'public System.Xml.Schema.XmlSchemaObjectCollection System.Xml.Schema.XmlSchemaGroupBase.Items' is non-virtual in the implementation but is virtual in the contract. CannotMakeMemberNonVirtual : Member 'public System.Xml.Schema.XmlSchemaObjectCollection System.Xml.Schema.XmlSchemaGroupBase.Items.get()' is non-virtual in the implementation but is virtual in the contract. -TypesMustExist : Type 'System.Collections.ObjectModel.ReadOnlyDictionary' does not exist in the implementation but it does exist in the contract. -Total Issues: 618 +Total Issues: 119 diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index bc7da23c21ab40..d11f1dc9b4e49a 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -294,6 +294,8 @@ + + @@ -312,6 +314,7 @@ + @@ -367,9 +370,7 @@ - - - + diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt index 348b5e9960bab1..08fe534fab39ec 100644 --- a/src/mono/CMakeLists.txt +++ b/src/mono/CMakeLists.txt @@ -485,6 +485,11 @@ if(GCC) # We require C99 with some GNU extensions, e.g. `linux` macro set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") endif() + + # Turn off floating point expression contraction because it is considered a value changing + # optimization in the IEEE 754 specification and is therefore considered unsafe. + add_compile_options(-ffp-contract=off) + # The runtime code does not respect ANSI C strict aliasing rules append("-fno-strict-aliasing" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) # We rely on signed overflow to behave @@ -732,7 +737,7 @@ else() set(EGLIB_SEARCHSEP ":") set(EGLIB_OS "UNIX") set(EGLIB_PIDTYPE "int") - set(EGLIB_GSIZE_FORMAT "\"lu\"") + set(EGLIB_GSIZE_FORMAT "\"zu\"") endif() set(EGLIB_GSIZE "size_t") diff --git a/src/mono/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventPipe.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventPipe.Mono.cs index 8d3ed1968d5f46..722f2b73a64f4a 100644 --- a/src/mono/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventPipe.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventPipe.Mono.cs @@ -90,4 +90,4 @@ internal static ulong GetRuntimeCounterValue(RuntimeCounters counterID) } #endif } -} \ No newline at end of file +} diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index b2ce581c3e5dde..674fadb7a2f9f7 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -74,7 +74,7 @@ public sealed partial class TypeBuilder : TypeInfo [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] private TypeInfo? created; - private bool is_byreflike_set; + private int is_byreflike_set; private int state; #endregion @@ -1534,7 +1534,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } else if (attrname == "System.Runtime.CompilerServices.IsByRefLikeAttribute") { - is_byreflike_set = true; + is_byreflike_set = 1; } if (cattrs != null) diff --git a/src/mono/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveCMarshal.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveCMarshal.Mono.cs index ad7f39b64d7431..d01e69ac190b51 100644 --- a/src/mono/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveCMarshal.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Runtime/InteropServices/ObjectiveCMarshal.Mono.cs @@ -34,4 +34,4 @@ private static IntPtr CreateReferenceTrackingHandleInternal( out int memInSizeT, out IntPtr mem) => throw new NotImplementedException(); } -} \ No newline at end of file +} diff --git a/src/mono/System.Private.CoreLib/src/System/Runtime/JitInfo.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Runtime/JitInfo.Mono.cs index c22549cdf85856..312e98239b1283 100644 --- a/src/mono/System.Private.CoreLib/src/System/Runtime/JitInfo.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Runtime/JitInfo.Mono.cs @@ -35,4 +35,4 @@ private static long GetCompilationTimeInTicks(bool currentThread = false) return currentThread ? 0 : (long)EventPipeInternal.GetRuntimeCounterValue(EventPipeInternal.RuntimeCounters.JIT_TICKS_IN_JIT); } } -} \ No newline at end of file +} diff --git a/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs b/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs index 289b471450cb66..095d82d13659b8 100644 --- a/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/RuntimeType.Mono.cs @@ -2317,14 +2317,11 @@ public override bool IsSubclassOf(Type type) return RuntimeTypeHandle.IsSubclassOf(this, rtType); } - private const int DEFAULT_PACKING_SIZE = 8; - internal StructLayoutAttribute? GetStructLayoutAttribute() { if (IsInterface || HasElementType || IsGenericParameter) return null; - int pack, size; LayoutKind layoutKind = LayoutKind.Auto; switch (Attributes & TypeAttributes.LayoutMask) { @@ -2343,13 +2340,7 @@ public override bool IsSubclassOf(Type type) default: break; } - GetPacking(out pack, out size); - - // Metadata parameter checking should not have allowed 0 for packing size. - // The runtime later converts a packing size of 0 to 8 so do the same here - // because it's more useful from a user perspective. - if (pack == 0) - pack = DEFAULT_PACKING_SIZE; + GetPacking(out int pack, out int size); return new StructLayoutAttribute(layoutKind) { Pack = pack, Size = size, CharSet = charSet }; } diff --git a/src/mono/mono/component/mini-wasm-debugger.c b/src/mono/mono/component/mini-wasm-debugger.c index faf918d9f79c67..28b83912a9daa0 100644 --- a/src/mono/mono/component/mini-wasm-debugger.c +++ b/src/mono/mono/component/mini-wasm-debugger.c @@ -368,9 +368,7 @@ EMSCRIPTEN_KEEPALIVE gboolean mono_wasm_send_dbg_command_with_parms (int id, MdbgProtCommandSet command_set, int command, guint8* data, unsigned int size, int valtype, char* newvalue) { if (!debugger_enabled) { - EM_ASM ({ - MONO.mono_wasm_add_dbg_command_received ($0, $1, $2, $3); - }, 0, id, 0, 0); + mono_wasm_add_dbg_command_received (0, id, 0, 0); return TRUE; } MdbgProtBuffer bufWithParms; @@ -389,9 +387,7 @@ EMSCRIPTEN_KEEPALIVE gboolean mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, guint8* data, unsigned int size) { if (!debugger_enabled) { - EM_ASM ({ - MONO.mono_wasm_add_dbg_command_received ($0, $1, $2, $3); - }, 0, id, 0, 0); + mono_wasm_add_dbg_command_received(0, id, 0, 0); return TRUE; } ss_calculate_framecount (NULL, NULL, TRUE, NULL, NULL); @@ -410,7 +406,7 @@ mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, else error = mono_process_dbg_packet (id, command_set, command, &no_reply, data, data + size, &buf); - mono_wasm_add_dbg_command_received(error == MDBGPROT_ERR_NONE, id, buf.buf, buf.p-buf.buf); + mono_wasm_add_dbg_command_received (error == MDBGPROT_ERR_NONE, id, buf.buf, buf.p-buf.buf); buffer_free (&buf); return TRUE; @@ -419,7 +415,7 @@ mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, static gboolean receive_debugger_agent_message (void *data, int len) { - mono_wasm_add_dbg_command_received(1, -1, data, len); + mono_wasm_add_dbg_command_received(1, 0, data, len); mono_wasm_save_thread_context(); mono_wasm_fire_debugger_agent_message (); return FALSE; diff --git a/src/mono/mono/eglib/CMakeLists.txt b/src/mono/mono/eglib/CMakeLists.txt index 1325ee6c1126ce..69bf7e188696b1 100644 --- a/src/mono/mono/eglib/CMakeLists.txt +++ b/src/mono/mono/eglib/CMakeLists.txt @@ -43,6 +43,10 @@ set(eglib_common_sources gunicode.c unicode-data.h) +if(HAVE_CLOCK_NANOSLEEP) +list(APPEND eglib_common_sources gclock-nanosleep.c) +endif() + addprefix(eglib_sources ../eglib/ "${eglib_platform_sources};${eglib_common_sources}") add_library(eglib_objects OBJECT "${eglib_sources}") diff --git a/src/mono/mono/eglib/eglib-remap.h b/src/mono/mono/eglib/eglib-remap.h index c3e956842dea85..3af646a8e47b2f 100644 --- a/src/mono/mono/eglib/eglib-remap.h +++ b/src/mono/mono/eglib/eglib-remap.h @@ -318,3 +318,7 @@ #define g_ascii_charcmp monoeg_ascii_charcmp #define g_ascii_charcasecmp monoeg_ascii_charcasecmp #define g_warning_d monoeg_warning_d + +#ifdef HAVE_CLOCK_NANOSLEEP +#define g_clock_nanosleep monoeg_clock_nanosleep +#endif diff --git a/src/mono/mono/eglib/gclock-nanosleep.c b/src/mono/mono/eglib/gclock-nanosleep.c new file mode 100644 index 00000000000000..f2ced8b2c07d1a --- /dev/null +++ b/src/mono/mono/eglib/gclock-nanosleep.c @@ -0,0 +1,31 @@ +/* + * gclock_nanosleep.c: Clock nanosleep on platforms that have clock_nanosleep(). + * + * Copyright 2022 Microsoft + * Licensed under the MIT license. See LICENSE file in the project root for full license information. +*/ + +#include +#include +#include + +gint +g_clock_nanosleep (clockid_t clockid, gint flags, const struct timespec *request, struct timespec *remain) +{ + gint ret = 0; + +#if defined(HAVE_CLOCK_NANOSLEEP) && !defined(__PASE__) + ret = clock_nanosleep (clockid, flags, request, remain); +#else + g_assert_not_reached (); +#endif + +#ifdef HOST_ANDROID + // Workaround for incorrect implementation of clock_nanosleep return value on old Android (<=5.1) + // See https://github.com/xamarin/xamarin-android/issues/6600 + if (ret == -1) + ret = errno; +#endif + + return ret; +} diff --git a/src/mono/mono/eglib/gdate-unix.c b/src/mono/mono/eglib/gdate-unix.c index 53f4bbb3d5adc2..9a98e663045762 100644 --- a/src/mono/mono/eglib/gdate-unix.c +++ b/src/mono/mono/eglib/gdate-unix.c @@ -64,7 +64,7 @@ g_usleep (gulong microseconds) } do { - ret = clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL); + ret = g_clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL); if (ret != 0 && ret != EINTR) g_error ("%s: clock_nanosleep () returned %d", __func__, ret); } while (ret == EINTR); diff --git a/src/mono/mono/eglib/glib.h b/src/mono/mono/eglib/glib.h index 14872b9814f481..5cc269957307e2 100644 --- a/src/mono/mono/eglib/glib.h +++ b/src/mono/mono/eglib/glib.h @@ -28,6 +28,7 @@ #include #include #include +#include // - Pointers should only be converted to or from pointer-sized integers. // - Any size integer can be converted to any other size integer. @@ -1506,4 +1507,13 @@ mono_qsort (void* base, size_t num, size_t size, int (*compare)(const void*, con #define g_try_realloc(obj, size) (g_cast (monoeg_try_realloc ((obj), (size)))) #define g_memdup(mem, size) (g_cast (monoeg_g_memdup ((mem), (size)))) +/* + * Clock Nanosleep + */ + +#ifdef HAVE_CLOCK_NANOSLEEP +gint +g_clock_nanosleep (clockid_t clockid, gint flags, const struct timespec *request, struct timespec *remain); +#endif + #endif // __GLIB_H diff --git a/src/mono/mono/eventpipe/ep-rt-mono.c b/src/mono/mono/eventpipe/ep-rt-mono.c index b50c78617ea8b9..ed1c3da6c5fc90 100644 --- a/src/mono/mono/eventpipe/ep-rt-mono.c +++ b/src/mono/mono/eventpipe/ep-rt-mono.c @@ -2953,6 +2953,8 @@ get_module_event_data ( module_data->module_flags |= MODULE_FLAGS_NATIVE_MODULE; module_data->module_il_path = image && image->filename ? image->filename : ""; + module_data->module_il_pdb_path = ""; + module_data->module_il_pdb_age = 0; if (image && image->image_info) { MonoPEDirEntry *debug_dir_entry = (MonoPEDirEntry *)&image->image_info->cli_header.datadir.pe_debug; @@ -2994,6 +2996,7 @@ ep_rt_mono_write_event_module_load (MonoImage *image) if (image) { ModuleEventData module_data; + memset (&module_data, 0, sizeof (module_data)); if (get_module_event_data (image, &module_data)) { FireEtwModuleLoad_V2 ( module_data.module_id, @@ -3037,6 +3040,7 @@ ep_rt_mono_write_event_module_unload (MonoImage *image) if (image) { ModuleEventData module_data; + memset (&module_data, 0, sizeof (module_data)); if (get_module_event_data (image, &module_data)) { FireEtwModuleUnload_V2 ( module_data.module_id, @@ -3095,6 +3099,7 @@ ep_rt_mono_write_event_assembly_load (MonoAssembly *assembly) if (assembly) { AssemblyEventData assembly_data; + memset (&assembly_data, 0, sizeof (assembly_data)); if (get_assembly_event_data (assembly, &assembly_data)) { FireEtwAssemblyLoad_V1 ( assembly_data.assembly_id, @@ -3121,6 +3126,7 @@ ep_rt_mono_write_event_assembly_unload (MonoAssembly *assembly) if (assembly) { AssemblyEventData assembly_data; + memset (&assembly_data, 0, sizeof (assembly_data)); if (get_assembly_event_data (assembly, &assembly_data)) { FireEtwAssemblyUnload_V1 ( assembly_data.assembly_id, @@ -5473,6 +5479,7 @@ mono_profiler_module_loaded ( if (image) { ModuleEventData module_data; + memset (&module_data, 0, sizeof (module_data)); if (get_module_event_data (image, &module_data)) module_path = (const ep_char8_t *)module_data.module_il_path; module_guid = (const ep_char8_t *)mono_image_get_guid (image); @@ -5524,6 +5531,7 @@ mono_profiler_module_unloaded ( if (image) { ModuleEventData module_data; + memset (&module_data, 0, sizeof (module_data)); if (get_module_event_data (image, &module_data)) module_path = (const ep_char8_t *)module_data.module_il_path; module_guid = (const ep_char8_t *)mono_image_get_guid (image); diff --git a/src/mono/mono/metadata/class-setup-vtable.c b/src/mono/mono/metadata/class-setup-vtable.c index a0b7128ce0705d..a7452c6a9f5b3f 100644 --- a/src/mono/mono/metadata/class-setup-vtable.c +++ b/src/mono/mono/metadata/class-setup-vtable.c @@ -1742,11 +1742,11 @@ mono_class_setup_vtable_general (MonoClass *klass, MonoMethod **overrides, int o for (int i = 0; i < iface_onum; i++) { MonoMethod *decl = iface_overrides [i*2]; MonoMethod *override = iface_overrides [i*2 + 1]; - if (decl->is_inflated) { + if (mono_class_is_gtd (override->klass)) { + override = mono_class_inflate_generic_method_full_checked (override, ic, mono_class_get_context (ic), error); + } else if (decl->is_inflated) { override = mono_class_inflate_generic_method_checked (override, mono_method_get_context (decl), error); mono_error_assert_ok (error); - } else if (mono_class_is_gtd (override->klass)) { - override = mono_class_inflate_generic_method_full_checked (override, ic, mono_class_get_context (ic), error); } if (!apply_override (klass, ic, vtable, decl, override, &override_map, &override_class_map, &conflict_map)) goto fail; diff --git a/src/mono/mono/metadata/object-internals.h b/src/mono/mono/metadata/object-internals.h index efa4b0624548d6..3d0ea67230940e 100644 --- a/src/mono/mono/metadata/object-internals.h +++ b/src/mono/mono/metadata/object-internals.h @@ -1222,7 +1222,7 @@ struct _MonoReflectionTypeBuilder { MonoGenericContainer *generic_container; MonoArray *generic_params; MonoReflectionType *created; - gboolean is_byreflike_set; + gint32 is_byreflike_set; gint32 state; }; diff --git a/src/mono/mono/metadata/seq-points-data.c b/src/mono/mono/metadata/seq-points-data.c index 47208dbf26f8ed..454227bf45bb47 100644 --- a/src/mono/mono/metadata/seq-points-data.c +++ b/src/mono/mono/metadata/seq-points-data.c @@ -409,9 +409,12 @@ mono_seq_point_data_read (SeqPointData *data, char *path) fseek(f, 0, SEEK_SET); buffer_orig = buffer = (guint8 *)g_malloc (fsize + 1); - size_t items = fread(buffer_orig, fsize, 1, f); - if (items != 1) + size_t len = fread(buffer_orig, fsize, 1, f); + if (ferror(f)) { + fclose(f); return FALSE; + } + g_assert (len == fsize || (len < fsize && feof(f))); fclose(f); diff --git a/src/mono/mono/metadata/sre.c b/src/mono/mono/metadata/sre.c index 62254b3fa2c3e8..52f737655356cd 100644 --- a/src/mono/mono/metadata/sre.c +++ b/src/mono/mono/metadata/sre.c @@ -2406,7 +2406,7 @@ mono_reflection_get_custom_attrs_blob_checked (MonoReflectionAssembly *assembly, MonoObject *prop; for (i = 0; i < mono_array_length_internal (properties); ++i) { - MonoType *ptype; + MonoType *ptype = NULL; char *pname; prop = (MonoObject *)mono_array_get_internal (properties, gpointer, i); @@ -2430,7 +2430,7 @@ mono_reflection_get_custom_attrs_blob_checked (MonoReflectionAssembly *assembly, MonoObject *field; for (i = 0; i < mono_array_length_internal (fields); ++i) { - MonoType *ftype; + MonoType *ftype = NULL; char *fname; field = (MonoObject *)mono_array_get_internal (fields, gpointer, i); @@ -3866,7 +3866,7 @@ ves_icall_TypeBuilder_create_runtime_class (MonoReflectionTypeBuilderHandle ref_ * The IsByRefLike attribute only applies to value types and enums. This matches CoreCLR behavior. */ if (klass->enumtype || klass->valuetype) - klass->is_byreflike = MONO_HANDLE_GETVAL (MONO_HANDLE_CAST (MonoReflectionTypeBuilder, ref_tb), is_byreflike_set); + klass->is_byreflike = MONO_HANDLE_GETVAL (MONO_HANDLE_CAST (MonoReflectionTypeBuilder, ref_tb), is_byreflike_set) != 0; /* enums are done right away */ if (!klass->enumtype) diff --git a/src/mono/mono/mini/aot-compiler.c b/src/mono/mono/mini/aot-compiler.c index 7bc376cd3bf56b..f4837247e4c64b 100644 --- a/src/mono/mono/mini/aot-compiler.c +++ b/src/mono/mono/mini/aot-compiler.c @@ -230,6 +230,7 @@ typedef struct MonoAotOptions { gboolean stats; gboolean verbose; gboolean deterministic; + gboolean allow_errors; char *tool_prefix; char *ld_flags; char *ld_name; @@ -528,7 +529,7 @@ report_loader_error (MonoAotCompile *acfg, MonoError *error, gboolean fatal, con va_end (args); mono_error_cleanup (error); - if (acfg->is_full_aot && fatal) { + if (acfg->is_full_aot && !acfg->aot_opts.allow_errors && fatal) { fprintf (output, "FullAOT cannot continue if there are loader errors.\n"); exit (1); } @@ -8349,6 +8350,8 @@ parse_cpu_features (const gchar *attr) #elif defined(TARGET_WASM) if (!strcmp (attr + prefix, "simd")) feature = MONO_CPU_WASM_SIMD; +#else + (void)prefix; // unused #endif if (enabled) @@ -8504,6 +8507,8 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts) opts->profile_only = TRUE; } else if (!strcmp (arg, "verbose")) { opts->verbose = TRUE; + } else if (!strcmp (arg, "allow-errors")) { + opts->allow_errors = TRUE; } else if (str_begins_with (arg, "llvmopts=")){ if (opts->llvm_opts) { char *s = g_strdup_printf ("%s %s", opts->llvm_opts, arg + strlen ("llvmopts=")); @@ -8587,6 +8592,7 @@ mono_aot_parse_options (const char *aot_options, MonoAotOptions *opts) printf (" threads=\n"); printf (" write-symbols\n"); printf (" verbose\n"); + printf (" allow-errors\n"); printf (" no-opt\n"); printf (" llvmopts=\n"); printf (" llvmllc=\n"); diff --git a/src/mono/mono/mini/aot-runtime.c b/src/mono/mono/mini/aot-runtime.c index d7e370676fe6cb..6e7496586cb536 100644 --- a/src/mono/mono/mini/aot-runtime.c +++ b/src/mono/mono/mini/aot-runtime.c @@ -2309,7 +2309,7 @@ load_aot_module (MonoAssemblyLoadContext *alc, MonoAssembly *assembly, gpointer if (amodule->out_of_date) { mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_AOT, "AOT: Module %s is unusable because a dependency is out-of-date.", assembly->image->name); - if (mono_aot_only) + if (mono_aot_only && (mono_aot_mode != MONO_AOT_MODE_LLVMONLY_INTERP)) g_error ("Failed to load AOT module '%s' while running in aot-only mode because a dependency cannot be found or it is out of date.\n", found_aot_name); } else { mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_AOT, "AOT: image '%s' found.", found_aot_name); diff --git a/src/mono/mono/mini/cfgdump.c b/src/mono/mono/mini/cfgdump.c index df52e911b9b1c3..bf97eeeac6f5ce 100644 --- a/src/mono/mono/mini/cfgdump.c +++ b/src/mono/mono/mini/cfgdump.c @@ -70,21 +70,23 @@ create_socket (const char *hostname, const int port) static void write_byte (MonoCompile *cfg, unsigned char b) { - write (cfg->gdump_ctx->fd, &b, 1); + int ret; + while ((ret = write (cfg->gdump_ctx->fd, &b, 1)) < 0 && errno == EINTR); } static void write_short (MonoCompile *cfg, short s) { short swap = htons (s); - write (cfg->gdump_ctx->fd, &swap, 2); + int ret; + while ((ret = write (cfg->gdump_ctx->fd, &swap, 2)) < 0 && errno == EINTR); } static void write_int (MonoCompile *cfg, int v) { - int swap = htonl (v); - write (cfg->gdump_ctx->fd, &swap, 4); + int swap = htonl (v), ret; + while ((ret = write (cfg->gdump_ctx->fd, &swap, 4)) < 0 && errno == EINTR); } static void diff --git a/src/mono/mono/mini/cpu-amd64.md b/src/mono/mono/mini/cpu-amd64.md index 48a1b9f0fbafae..8ee095962f51f1 100644 --- a/src/mono/mono/mini/cpu-amd64.md +++ b/src/mono/mono/mini/cpu-amd64.md @@ -284,7 +284,6 @@ float_cgt_membase: dest:i src1:f src2:b len:35 float_cgt_un_membase: dest:i src1:f src2:b len:48 float_clt_membase: dest:i src1:f src2:b len:35 float_clt_un_membase: dest:i src1:f src2:b len:42 -float_conv_to_u: dest:i src1:f len:46 # R4 opcodes r4_conv_to_i1: dest:i src1:f len:32 diff --git a/src/mono/mono/mini/cpu-arm.md b/src/mono/mono/mini/cpu-arm.md index b14cc6f3218128..cab9cd2c45bcd1 100644 --- a/src/mono/mono/mini/cpu-arm.md +++ b/src/mono/mono/mini/cpu-arm.md @@ -220,7 +220,6 @@ float_clt_un: dest:i src1:f src2:f len:20 float_cneq: dest:y src1:f src2:f len:20 float_cge: dest:y src1:f src2:f len:20 float_cle: dest:y src1:f src2:f len:20 -float_conv_to_u: dest:i src1:f len:36 # R4 opcodes rmove: dest:f src1:f len:4 diff --git a/src/mono/mono/mini/cpu-arm64.md b/src/mono/mono/mini/cpu-arm64.md index aff89052937a78..06e4fe0d5e9798 100644 --- a/src/mono/mono/mini/cpu-arm64.md +++ b/src/mono/mono/mini/cpu-arm64.md @@ -218,7 +218,6 @@ float_clt_un: dest:i src1:f src2:f len:20 float_cneq: dest:i src1:f src2:f len:20 float_cge: dest:i src1:f src2:f len:20 float_cle: dest:i src1:f src2:f len:20 -float_conv_to_u: dest:i src1:f len:36 setfret: src1:f len:12 # R4 opcodes diff --git a/src/mono/mono/mini/cpu-mips.md b/src/mono/mono/mini/cpu-mips.md index 96920a0747b52c..3757749fcdf676 100644 --- a/src/mono/mono/mini/cpu-mips.md +++ b/src/mono/mono/mini/cpu-mips.md @@ -383,7 +383,6 @@ float_cgt: dest:i src1:f src2:f len:20 float_cgt_un: dest:i src1:f src2:f len:20 float_clt: dest:i src1:f src2:f len:20 float_clt_un: dest:i src1:f src2:f len:20 -float_conv_to_u: dest:i src1:f len:36 call_handler: len:20 clob:c endfilter: src1:i len:16 aotconst: dest:i len:8 diff --git a/src/mono/mono/mini/cpu-ppc.md b/src/mono/mono/mini/cpu-ppc.md index 6ef33f2887220a..69e9e1beb525ff 100644 --- a/src/mono/mono/mini/cpu-ppc.md +++ b/src/mono/mono/mini/cpu-ppc.md @@ -200,7 +200,6 @@ float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 float_clt: dest:i src1:f src2:f len:16 float_clt_un: dest:i src1:f src2:f len:20 -float_conv_to_u: dest:i src1:f len:36 float_cneq: dest:i src1:f src2:f len:16 float_cge: dest:i src1:f src2:f len:16 float_cle: dest:i src1:f src2:f len:16 diff --git a/src/mono/mono/mini/cpu-ppc64.md b/src/mono/mono/mini/cpu-ppc64.md index fc0e634baa460f..6ce9314bffe8e5 100644 --- a/src/mono/mono/mini/cpu-ppc64.md +++ b/src/mono/mono/mini/cpu-ppc64.md @@ -204,7 +204,6 @@ float_cgt: dest:i src1:f src2:f len:16 float_cgt_un: dest:i src1:f src2:f len:20 float_clt: dest:i src1:f src2:f len:16 float_clt_un: dest:i src1:f src2:f len:20 -float_conv_to_u: dest:i src1:f len:36 float_cneq: dest:i src1:f src2:f len:16 float_cge: dest:i src1:f src2:f len:16 float_cle: dest:i src1:f src2:f len:16 diff --git a/src/mono/mono/mini/cpu-s390x.md b/src/mono/mono/mini/cpu-s390x.md index f3196485c13a36..d4469bda39c972 100644 --- a/src/mono/mono/mini/cpu-s390x.md +++ b/src/mono/mono/mini/cpu-s390x.md @@ -128,7 +128,6 @@ float_conv_to_u1: dest:i src1:f len:72 float_conv_to_u2: dest:i src1:f len:72 float_conv_to_u4: dest:i src1:f len:72 float_conv_to_u8: dest:i src1:f len:72 -float_conv_to_u: dest:i src1:f len:36 float_div: dest:f src1:f src2:f len:24 float_div_un: dest:f src1:f src2:f len:30 float_mul: dest:f src1:f src2:f len:8 diff --git a/src/mono/mono/mini/cpu-sparc.md b/src/mono/mono/mini/cpu-sparc.md index 403a73c380ee80..64487cf52a328e 100644 --- a/src/mono/mono/mini/cpu-sparc.md +++ b/src/mono/mono/mini/cpu-sparc.md @@ -180,7 +180,6 @@ float_cgt: dest:i src1:f src2:f len:64 float_cgt_un: dest:i src1:f src2:f len:64 float_clt: dest:i src1:f src2:f len:64 float_clt_un: dest:i src1:f src2:f len:64 -float_conv_to_u: dest:i src1:f len:64 call_handler: len:64 clob:c aotconst: dest:i len:64 adc: dest:i src1:i src2:i len:4 diff --git a/src/mono/mono/mini/cpu-x86.md b/src/mono/mono/mini/cpu-x86.md index 25e44d16eea5b7..6132887bbd3450 100644 --- a/src/mono/mono/mini/cpu-x86.md +++ b/src/mono/mono/mini/cpu-x86.md @@ -266,7 +266,6 @@ float_clt_un: dest:y src1:f src2:f len:32 float_cneq: dest:y src1:f src2:f len:25 float_cge: dest:y src1:f src2:f len:37 float_cle: dest:y src1:f src2:f len:37 -float_conv_to_u: dest:i src1:f len:36 call_handler: len:11 clob:c aotconst: dest:i len:5 load_gotaddr: dest:i len:64 diff --git a/src/mono/mono/mini/interp/interp.c b/src/mono/mono/mini/interp/interp.c index fa00bca3b67d37..be5e6a6e2960c4 100644 --- a/src/mono/mono/mini/interp/interp.c +++ b/src/mono/mono/mini/interp/interp.c @@ -5169,7 +5169,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK; MINT_IN_BREAK; MINT_IN_CASE(MINT_CONV_U4_R8) #ifdef MONO_ARCH_EMULATE_FCONV_TO_U4 - LOCAL_VAR (ip [1], gint32) = mono_fconv_u4_2 (LOCAL_VAR (ip [2], double)); + LOCAL_VAR (ip [1], gint32) = mono_fconv_u4 (LOCAL_VAR (ip [2], double)); #else LOCAL_VAR (ip [1], gint32) = (guint32) LOCAL_VAR (ip [2], double); #endif @@ -5225,7 +5225,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK; MINT_IN_BREAK; MINT_IN_CASE(MINT_CONV_U8_R8) #ifdef MONO_ARCH_EMULATE_FCONV_TO_U8 - LOCAL_VAR (ip [1], gint64) = mono_fconv_u8_2 (LOCAL_VAR (ip [2], double)); + LOCAL_VAR (ip [1], gint64) = mono_fconv_u8 (LOCAL_VAR (ip [2], double)); #else LOCAL_VAR (ip [1], gint64) = (guint64) LOCAL_VAR (ip [2], double); #endif diff --git a/src/mono/mono/mini/jit-icalls.c b/src/mono/mono/mini/jit-icalls.c index 8d92b1c06f2120..d40ff1f321cfc1 100644 --- a/src/mono/mono/mini/jit-icalls.c +++ b/src/mono/mono/mini/jit-icalls.c @@ -918,6 +918,7 @@ mono_ldtoken_wrapper_generic_shared (MonoImage *image, int token, MonoMethod *me return mono_ldtoken_wrapper (image, token, generic_context); } +#ifdef MONO_ARCH_EMULATE_FCONV_TO_U8 guint64 mono_fconv_u8 (double v) { @@ -935,18 +936,6 @@ mono_fconv_u8 (double v) #endif } -#ifdef MONO_ARCH_EMULATE_FCONV_TO_U8 -guint64 -mono_fconv_u8_2 (double v) -{ - // Separate from mono_fconv_u8 to avoid duplicate JIT icall. - // - // When there are duplicates, there is single instancing - // against function address that breaks stuff. For example, - // wrappers are only produced for one of them, breaking FullAOT. - return mono_fconv_u8 (v); -} - guint64 mono_rconv_u8 (float v) { @@ -973,6 +962,7 @@ mono_fconv_i8 (double v) } #endif +#ifdef MONO_ARCH_EMULATE_FCONV_TO_U4 guint32 mono_fconv_u4 (double v) { @@ -982,18 +972,6 @@ mono_fconv_u4 (double v) return (guint32)v; } -#ifdef MONO_ARCH_EMULATE_FCONV_TO_U4 -guint32 -mono_fconv_u4_2 (double v) -{ - // Separate from mono_fconv_u4 to avoid duplicate JIT icall. - // - // When there are duplicates, there is single instancing - // against function address that breaks stuff. For example, - // wrappers are only produced for one of them, breaking FullAOT. - return mono_fconv_u4 (v); -} - guint32 mono_rconv_u4 (float v) { @@ -1443,6 +1421,7 @@ constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *k * * Make a call to CMETHOD using the receiver MP, which is assumed to be of type KLASS. ARGS contains * the arguments to the method in the format used by mono_runtime_invoke_checked (). + * MP is NULL if CMETHOD is a static virtual method. */ MonoObject* mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, guint8 *deref_args, gpointer *args) diff --git a/src/mono/mono/mini/jit-icalls.h b/src/mono/mono/mini/jit-icalls.h index fb816a34a17549..be547267285846 100644 --- a/src/mono/mono/mini/jit-icalls.h +++ b/src/mono/mono/mini/jit-icalls.h @@ -77,14 +77,12 @@ ICALL_EXPORT gpointer mono_ldtoken_wrapper (MonoImage *image, int token, MonoGen ICALL_EXPORT gpointer mono_ldtoken_wrapper_generic_shared (MonoImage *image, int token, MonoMethod *method); ICALL_EXPORT guint64 mono_fconv_u8 (double v); -ICALL_EXPORT guint64 mono_fconv_u8_2 (double v); ICALL_EXPORT guint64 mono_rconv_u8 (float v); ICALL_EXPORT gint64 mono_fconv_i8 (double v); ICALL_EXPORT guint32 mono_fconv_u4 (double v); -ICALL_EXPORT guint32 mono_fconv_u4_2 (double v); ICALL_EXPORT guint32 mono_rconv_u4 (float v); diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index d1a1e91ed21d70..d2823dbb024218 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -1133,7 +1133,10 @@ type_from_op (MonoCompile *cfg, MonoInst *ins, MonoInst *src1, MonoInst *src2) ins->opcode = OP_LCONV_TO_U; break; case STACK_R8: - ins->opcode = OP_FCONV_TO_U; + if (TARGET_SIZEOF_VOID_P == 8) + ins->opcode = OP_FCONV_TO_U8; + else + ins->opcode = OP_FCONV_TO_U4; break; case STACK_R4: if (TARGET_SIZEOF_VOID_P == 8) @@ -3736,12 +3739,15 @@ handle_constrained_gsharedvt_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMe * plus some simple interface calls enough to support AsyncTaskMethodBuilder. */ - args [0] = sp [0]; + if (fsig->hasthis) + args [0] = sp [0]; + else + EMIT_NEW_PCONST (cfg, args [0], NULL); args [1] = emit_get_rgctx_method (cfg, mono_method_check_context_used (cmethod), cmethod, MONO_RGCTX_INFO_METHOD); args [2] = mini_emit_get_rgctx_klass (cfg, mono_class_check_context_used (constrained_class), constrained_class, MONO_RGCTX_INFO_KLASS); - /* !fsig->hasthis is for the wrapper for the Object.GetType () icall */ - if (fsig->hasthis && fsig->param_count) { + /* !fsig->hasthis is for the wrapper for the Object.GetType () icall or static virtual methods */ + if ((fsig->hasthis || m_method_is_static (cmethod)) && fsig->param_count) { /* Call mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gboolean *deref_args, gpointer *args) */ gboolean has_gsharedvt = FALSE; for (int i = 0; i < fsig->param_count; ++i) { @@ -3780,12 +3786,14 @@ handle_constrained_gsharedvt_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMe MONO_EMIT_NEW_STORE_MEMBASE_IMM (cfg, OP_STOREI1_MEMBASE_IMM, args [3]->dreg, i, 0); } + MonoInst *arg = sp [i + fsig->hasthis]; + if (mini_is_gsharedvt_type (fsig->params [i]) || MONO_TYPE_IS_PRIMITIVE (fsig->params [i]) || MONO_TYPE_ISSTRUCT (fsig->params [i])) { - EMIT_NEW_VARLOADA_VREG (cfg, ins, sp [i + 1]->dreg, fsig->params [i]); + EMIT_NEW_VARLOADA_VREG (cfg, ins, arg->dreg, fsig->params [i]); addr_reg = ins->dreg; EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [4]->dreg, i * sizeof (target_mgreg_t), addr_reg); } else { - EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [4]->dreg, i * sizeof (target_mgreg_t), sp [i + 1]->dreg); + EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [4]->dreg, i * sizeof (target_mgreg_t), arg->dreg); } } } else { @@ -5723,9 +5731,9 @@ handle_constrained_call (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignat } if (m_method_is_static (cmethod)) { - /* Call to an abstract static method */ + /* Call to an abstract static method, handled normally */ return NULL; - } if (constrained_partial_call) { + } else if (constrained_partial_call) { gboolean need_box = TRUE; /* @@ -7177,7 +7185,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b * FIXME: This is very slow, need to create a wrapper at JIT time * instead based on the signature. */ - EMIT_NEW_IMAGECONST (cfg, args [0], m_class_get_image (method->klass)); + EMIT_NEW_IMAGECONST (cfg, args [0], ((MonoDynamicMethod*)method)->assembly->image); EMIT_NEW_PCONST (cfg, args [1], fsig); args [2] = addr; // FIXME tailcall? @@ -7322,6 +7330,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b gboolean direct_icall; direct_icall = FALSE; gboolean tailcall_calli; tailcall_calli = FALSE; gboolean noreturn; noreturn = FALSE; + gboolean gshared_static_virtual; gshared_static_virtual = FALSE; #ifdef TARGET_WASM gboolean needs_stack_walk; needs_stack_walk = FALSE; #endif @@ -7354,20 +7363,24 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b MonoMethod *cil_method; cil_method = cmethod; if (constrained_class) { - if (m_method_is_static (cil_method) && mini_class_check_context_used (cfg, constrained_class)) - // FIXME: - GENERIC_SHARING_FAILURE (CEE_CALL); - - cmethod = get_constrained_method (cfg, image, token, cil_method, constrained_class, generic_context); - CHECK_CFG_ERROR; + if (m_method_is_static (cil_method) && mini_class_check_context_used (cfg, constrained_class)) { + /* get_constrained_method () doesn't work on the gparams used by generic sharing */ + // FIXME: Other configurations + //if (!cfg->gsharedvt) + // GENERIC_SHARING_FAILURE (CEE_CALL); + gshared_static_virtual = TRUE; + } else { + cmethod = get_constrained_method (cfg, image, token, cil_method, constrained_class, generic_context); + CHECK_CFG_ERROR; - if (m_class_is_enumtype (constrained_class) && !strcmp (cmethod->name, "GetHashCode")) { - /* Use the corresponding method from the base type to avoid boxing */ - MonoType *base_type = mono_class_enum_basetype_internal (constrained_class); - g_assert (base_type); - constrained_class = mono_class_from_mono_type_internal (base_type); - cmethod = get_method_nofail (constrained_class, cmethod->name, 0, 0); - g_assert (cmethod); + if (m_class_is_enumtype (constrained_class) && !strcmp (cmethod->name, "GetHashCode")) { + /* Use the corresponding method from the base type to avoid boxing */ + MonoType *base_type = mono_class_enum_basetype_internal (constrained_class); + g_assert (base_type); + constrained_class = mono_class_from_mono_type_internal (base_type); + cmethod = get_method_nofail (constrained_class, cmethod->name, 0, 0); + g_assert (cmethod); + } } } @@ -7397,7 +7410,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b #endif } - if (!virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT)) { + if (!virtual_ && (cmethod->flags & METHOD_ATTRIBUTE_ABSTRACT) && !gshared_static_virtual) { if (!mono_class_is_interface (method->klass)) emit_bad_image_failure (cfg, method, cil_method); else @@ -7507,7 +7520,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b if (constrained_class) { ins = handle_constrained_call (cfg, cmethod, fsig, constrained_class, sp, &cdata, &cmethod, &virtual_, &emit_widen); CHECK_CFG_EXCEPTION; - constrained_class = NULL; + if (!gshared_static_virtual) + constrained_class = NULL; if (ins) goto call_end; } @@ -7932,41 +7946,56 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b /* Generic sharing */ /* + * Calls to generic methods from shared code cannot go through the trampoline infrastructure + * in some cases, because the called method might end up being different on every call. + * Load the called method address from the rgctx and do an indirect call in these cases. * Use this if the callee is gsharedvt sharable too, since * at runtime we might find an instantiation so the call cannot * be patched (the 'no_patch' code path in mini-trampolines.c). */ - if (context_used && !imt_arg && !array_rank && !delegate_invoke && - (!mono_method_is_generic_sharable_full (cmethod, TRUE, FALSE, FALSE) || - !mono_class_generic_sharing_enabled (cmethod->klass)) && - (!virtual_ || MONO_METHOD_IS_FINAL (cmethod) || - !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) { + gboolean gshared_indirect; + gshared_indirect = context_used && !imt_arg && !array_rank && !delegate_invoke; + if (gshared_indirect) + gshared_indirect = (!mono_method_is_generic_sharable_full (cmethod, TRUE, FALSE, FALSE) || + !mono_class_generic_sharing_enabled (cmethod->klass) || + gshared_static_virtual); + if (gshared_indirect) + gshared_indirect = (!virtual_ || MONO_METHOD_IS_FINAL (cmethod) || + !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL)); + if (gshared_indirect) { INLINE_FAILURE ("gshared"); g_assert (cfg->gshared && cmethod); g_assert (!addr); - /* - * We are compiling a call to a - * generic method from shared code, - * which means that we have to look up - * the method in the rgctx and do an - * indirect call. - */ if (fsig->hasthis) MONO_EMIT_NEW_CHECK_THIS (cfg, sp [0]->dreg); if (cfg->llvm_only) { - if (cfg->gsharedvt && mini_is_gsharedvt_variable_signature (fsig)) + if (cfg->gsharedvt && mini_is_gsharedvt_variable_signature (fsig)) { + /* Handled in handle_constrained_gsharedvt_call () */ + g_assert (!gshared_static_virtual); addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GSHAREDVT_OUT_WRAPPER); - else - addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_METHOD_FTNDESC); + } else { + if (gshared_static_virtual) + addr = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_CODE); + else + addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_METHOD_FTNDESC); + } // FIXME: Avoid initializing imt_arg/vtable_arg ins = mini_emit_llvmonly_calli (cfg, fsig, sp, addr); if (inst_tailcall) // FIXME mono_tailcall_print ("missed tailcall context_used_llvmonly %s -> %s\n", method->name, cmethod->name); } else { - addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE); + if (gshared_static_virtual) { + /* + * cmethod is a static interface method, the actual called method at runtime + * needs to be computed using constrained_class and cmethod. + */ + addr = emit_get_rgctx_virt_method (cfg, mono_class_check_context_used (constrained_class), constrained_class, cmethod, MONO_RGCTX_INFO_VIRT_METHOD_CODE); + } else { + addr = emit_get_rgctx_method (cfg, context_used, cmethod, MONO_RGCTX_INFO_GENERIC_METHOD_CODE); + } if (inst_tailcall) mono_tailcall_print ("%s tailcall_calli#2 %s -> %s\n", tailcall_calli ? "making" : "missed", method->name, cmethod->name); tailcall = tailcall_calli; diff --git a/src/mono/mono/mini/mini-arm.c b/src/mono/mono/mini/mini-arm.c index 69360a1946d649..8adcaad4e2304c 100644 --- a/src/mono/mono/mini/mini-arm.c +++ b/src/mono/mono/mini/mini-arm.c @@ -5686,7 +5686,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: - case OP_FCONV_TO_U: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, FALSE); break; case OP_FCONV_TO_I8: diff --git a/src/mono/mono/mini/mini-llvm.c b/src/mono/mono/mini/mini-llvm.c index c222a8d80c76aa..8daf4a617fe256 100644 --- a/src/mono/mono/mini/mini-llvm.c +++ b/src/mono/mono/mini/mini-llvm.c @@ -632,6 +632,21 @@ simd_class_to_llvm_type (EmitContext *ctx, MonoClass *klass) } } +static LLVMTypeRef +simd_valuetuple_to_llvm_type (EmitContext *ctx, MonoClass *klass) +{ + const char *klass_name = m_class_get_name (klass); + if (!strcmp (klass_name, "ValueTuple`2")) { + MonoType *etype = mono_class_get_generic_class (klass)->context.class_inst->type_argv [0]; + if (etype->type != MONO_TYPE_GENERICINST) + g_assert_not_reached (); + MonoClass *eklass = etype->data.generic_class->cached_class; + LLVMTypeRef ltype = simd_class_to_llvm_type (ctx, eklass); + return LLVMArrayType (ltype, 2); + } + g_assert_not_reached (); +} + /* Return the 128 bit SIMD type corresponding to the mono type TYPE */ static inline G_GNUC_UNUSED LLVMTypeRef type_to_sse_type (int type) @@ -981,7 +996,6 @@ op_to_llvm_type (int opcode) case OP_RCONV_TO_U8: return LLVMInt64Type (); case OP_FCONV_TO_I: - case OP_FCONV_TO_U: return TARGET_SIZEOF_VOID_P == 8 ? LLVMInt64Type () : LLVMInt32Type (); case OP_IADD_OVF: case OP_IADD_OVF_UN: @@ -1461,12 +1475,10 @@ sig_to_llvm_sig_no_cinfo (EmitContext *ctx, MonoMethodSignature *sig) LLVMTypeRef *param_types = NULL; LLVMTypeRef res; int i, pindex; - MonoType *rtype; ret_type = type_to_llvm_type (ctx, sig->ret); if (!ctx_ok (ctx)) return NULL; - rtype = mini_get_underlying_type (sig->ret); param_types = g_new0 (LLVMTypeRef, (sig->param_count * 8) + 3); pindex = 0; @@ -2003,10 +2015,6 @@ get_aotconst (EmitContext *ctx, MonoJumpInfoType type, gconstpointer data, LLVMT cfg = ctx->cfg; - MonoJumpInfo tmp_ji; - tmp_ji.type = type; - tmp_ji.data.target = data; - load = get_aotconst_module (ctx->module, ctx->builder, type, data, llvm_type, &got_offset, &ji); ji->next = cfg->patch_info; @@ -3806,13 +3814,11 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder) */ for (i = 0; i < cfg->num_varinfo; ++i) { MonoInst *var = cfg->varinfo [i]; - LLVMTypeRef vtype; if ((var->opcode == OP_GSHAREDVT_LOCAL || var->opcode == OP_GSHAREDVT_ARG_REGOFFSET)) continue; if (var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT) || (mini_type_is_vtype (var->inst_vtype) && !MONO_CLASS_IS_SIMD (ctx->cfg, var->klass))) { - vtype = type_to_llvm_type (ctx, var->inst_vtype); if (!ctx_ok (ctx)) return; /* Could be already created by an OP_VPHI */ @@ -4017,6 +4023,7 @@ emit_entry_bb (EmitContext *ctx, LLVMBuilderRef builder) rgctx_alloc = ctx->addresses [cfg->rgctx_var->dreg]; /* This volatile store will keep the alloca alive */ store = mono_llvm_build_store (builder, convert (ctx, ctx->rgctx_arg, IntPtrType ()), rgctx_alloc, TRUE, LLVM_BARRIER_NONE); + (void)store; /* unused */ set_metadata_flag (rgctx_alloc, "mono.this"); } @@ -4868,7 +4875,6 @@ static const char *default_personality_name = "__gxx_personality_v0"; static LLVMTypeRef default_cpp_lpad_exc_signature (void) { - static gboolean inited = FALSE; static LLVMTypeRef sig; if (!sig) { @@ -4876,7 +4882,6 @@ default_cpp_lpad_exc_signature (void) signature [0] = LLVMPointerType (LLVMInt8Type (), 0); signature [1] = LLVMInt32Type (); sig = LLVMStructType (signature, 2, FALSE); - inited = TRUE; } return sig; @@ -5496,7 +5501,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) BBInfo *bblocks = ctx->bblocks; MonoInst *ins; LLVMBasicBlockRef cbb; - LLVMBuilderRef builder, starting_builder; + LLVMBuilderRef builder; gboolean has_terminator; LLVMValueRef v; LLVMValueRef lhs, rhs, arg3; @@ -5611,7 +5616,6 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) } has_terminator = FALSE; - starting_builder = builder; for (ins = bb->code; ins; ins = ins->next) { const char *spec = LLVM_INS_INFO (ins->opcode); char *dname = NULL; @@ -10632,6 +10636,49 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb) values [ins->dreg] = result; break; } + case OP_ARM64_LDNP: + case OP_ARM64_LDNP_SCALAR: + case OP_ARM64_LDP: + case OP_ARM64_LDP_SCALAR: { + const char *oname = NULL; + gboolean nontemporal = FALSE; + gboolean scalar = FALSE; + switch (ins->opcode) { + case OP_ARM64_LDNP: oname = "arm64_ldnp"; nontemporal = TRUE; break; + case OP_ARM64_LDNP_SCALAR: oname = "arm64_ldnp_scalar"; nontemporal = TRUE; scalar = TRUE; break; + case OP_ARM64_LDP: oname = "arm64_ldp"; break; + case OP_ARM64_LDP_SCALAR: oname = "arm64_ldp_scalar"; scalar = TRUE; break; + } + if (!addresses [ins->dreg]) + addresses [ins->dreg] = build_named_alloca (ctx, m_class_get_byval_arg (ins->klass), oname); + LLVMTypeRef ret_t = simd_valuetuple_to_llvm_type (ctx, ins->klass); + LLVMTypeRef vec_t = LLVMGetElementType (ret_t); + LLVMValueRef ix = const_int32 (1); + LLVMTypeRef src_t = LLVMPointerType (scalar ? LLVMGetElementType (vec_t) : vec_t, 0); + LLVMValueRef src0 = convert (ctx, lhs, src_t); + LLVMValueRef src1 = LLVMBuildGEP (builder, src0, &ix, 1, oname); + LLVMValueRef vals [] = { src0, src1 }; + for (int i = 0; i < 2; ++i) { + vals [i] = LLVMBuildLoad (builder, vals [i], oname); + if (nontemporal) + set_nontemporal_flag (vals [i]); + } + unsigned int vec_sz = mono_llvm_get_prim_size_bits (vec_t); + if (scalar) { + g_assert (vec_sz == 64); + LLVMValueRef undef = LLVMGetUndef (vec_t); + for (int i = 0; i < 2; ++i) + vals [i] = LLVMBuildInsertElement (builder, undef, vals [i], const_int32 (0), oname); + } + LLVMValueRef val = LLVMGetUndef (ret_t); + for (int i = 0; i < 2; ++i) + val = LLVMBuildInsertValue (builder, val, vals [i], i, oname); + LLVMTypeRef retptr_t = LLVMPointerType (ret_t, 0); + LLVMValueRef dst = convert (ctx, addresses [ins->dreg], retptr_t); + LLVMBuildStore (builder, val, dst); + values [ins->dreg] = vec_sz == 64 ? val : NULL; + break; + } case OP_ARM64_ST1: { LLVMTypeRef t = LLVMTypeOf (rhs); LLVMValueRef address = convert (ctx, lhs, LLVMPointerType (t, 0)); @@ -12220,11 +12267,9 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call) { MonoInst *in; MonoMethodSignature *sig; - int i, n, stack_size; + int i, n; LLVMArgInfo *ainfo; - stack_size = 0; - sig = call->signature; n = sig->param_count + sig->hasthis; diff --git a/src/mono/mono/mini/mini-mips.c b/src/mono/mono/mini/mini-mips.c index d8fe51f52c8e05..809196338135a6 100644 --- a/src/mono/mono/mini/mini-mips.c +++ b/src/mono/mono/mini/mini-mips.c @@ -4270,7 +4270,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: - case OP_FCONV_TO_U: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, FALSE); break; case OP_SQRT: diff --git a/src/mono/mono/mini/mini-ops.h b/src/mono/mono/mini/mini-ops.h index f4b6fa56581dd2..9ad1d7110c41d1 100644 --- a/src/mono/mono/mini/mini-ops.h +++ b/src/mono/mono/mini/mini-ops.h @@ -586,7 +586,6 @@ MINI_OP(OP_FCGT_UN_MEMBASE,"float_cgt_un_membase", IREG, FREG, IREG) MINI_OP(OP_FCLT_MEMBASE, "float_clt_membase", IREG, FREG, IREG) MINI_OP(OP_FCLT_UN_MEMBASE,"float_clt_un_membase", IREG, FREG, IREG) -MINI_OP(OP_FCONV_TO_U, "float_conv_to_u", IREG, FREG, NONE) MINI_OP(OP_CKFINITE, "ckfinite", FREG, FREG, NONE) /* r4 opcodes: must be in the same order as the matching CEE_ opcodes: ovfops_op_map */ @@ -1624,6 +1623,15 @@ MINI_OP3(OP_ARM64_LD1_INSERT, "arm64_ld1_insert", XREG, IREG, XREG, IREG) MINI_OP(OP_ARM64_LD1, "arm64_ld1", XREG, IREG, NONE) MINI_OP(OP_ARM64_LD1R, "arm64_ld1r", XREG, IREG, NONE) +/* Loads two consecutive vector (or scalar) values into a pair of + * vector registers. Returns a ValueTuple in a vreg. klass must be set to the + * MonoClass representing the ValueTuple return type of the op. + */ +MINI_OP(OP_ARM64_LDNP, "arm64_ldnp", VREG, IREG, NONE) +MINI_OP(OP_ARM64_LDNP_SCALAR, "arm64_ldnp_scalar", VREG, IREG, NONE) +MINI_OP(OP_ARM64_LDP, "arm64_ldp", VREG, IREG, NONE) +MINI_OP(OP_ARM64_LDP_SCALAR, "arm64_ldp_scalar", VREG, IREG, NONE) + MINI_OP(OP_ARM64_ST1, "arm64_st1", NONE, IREG, XREG) MINI_OP(OP_ARM64_SXTL, "arm64_sxtl", XREG, XREG, NONE) MINI_OP(OP_ARM64_SXTL2, "arm64_sxtl2", XREG, XREG, NONE) diff --git a/src/mono/mono/mini/mini-posix.c b/src/mono/mono/mini/mini-posix.c index b706de969f5ce6..8bb41ee1cb9a36 100644 --- a/src/mono/mono/mini/mini-posix.c +++ b/src/mono/mono/mini/mini-posix.c @@ -78,6 +78,7 @@ #include #include "mini-runtime.h" #include "jit-icalls.h" +#include #ifdef HOST_DARWIN #include @@ -484,7 +485,7 @@ clock_init_for_profiler (MonoProfilerSampleMode mode) * CLOCK_PROCESS_CPUTIME_ID clock but don't actually support it. For * those systems, we fall back to CLOCK_MONOTONIC if we get EINVAL. */ - if (clock_nanosleep (CLOCK_PROCESS_CPUTIME_ID, TIMER_ABSTIME, &ts, NULL) != EINVAL) { + if (g_clock_nanosleep (CLOCK_PROCESS_CPUTIME_ID, TIMER_ABSTIME, &ts, NULL) != EINVAL) { sampling_clock = CLOCK_PROCESS_CPUTIME_ID; break; } @@ -509,7 +510,6 @@ clock_sleep_ns_abs (guint64 ns_abs) do { ret = clock_nanosleep (sampling_clock, TIMER_ABSTIME, &then, NULL); - if (ret != 0 && ret != EINTR) g_error ("%s: clock_nanosleep () returned %d", __func__, ret); } while (ret == EINTR && mono_atomic_load_i32 (&sampling_thread_running)); diff --git a/src/mono/mono/mini/mini-ppc.c b/src/mono/mono/mini/mini-ppc.c index ed8bf63f631a1a..8052b7d53b22db 100644 --- a/src/mono/mono/mini/mini-ppc.c +++ b/src/mono/mono/mini/mini-ppc.c @@ -4163,7 +4163,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, TRUE); break; case OP_FCONV_TO_U4: - case OP_FCONV_TO_U: code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 4, FALSE); break; case OP_LCONV_TO_R_UN: diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index 93cc2a51357fce..697eacdb511200 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -4760,11 +4760,11 @@ register_icalls (void) #endif #ifdef MONO_ARCH_EMULATE_FCONV_TO_U8 - register_opcode_emulation (OP_FCONV_TO_U8, __emul_fconv_to_u8, mono_icall_sig_ulong_double, mono_fconv_u8_2, FALSE); + register_opcode_emulation (OP_FCONV_TO_U8, __emul_fconv_to_u8, mono_icall_sig_ulong_double, mono_fconv_u8, FALSE); register_opcode_emulation (OP_RCONV_TO_U8, __emul_rconv_to_u8, mono_icall_sig_ulong_float, mono_rconv_u8, FALSE); #endif #ifdef MONO_ARCH_EMULATE_FCONV_TO_U4 - register_opcode_emulation (OP_FCONV_TO_U4, __emul_fconv_to_u4, mono_icall_sig_uint32_double, mono_fconv_u4_2, FALSE); + register_opcode_emulation (OP_FCONV_TO_U4, __emul_fconv_to_u4, mono_icall_sig_uint32_double, mono_fconv_u4, FALSE); register_opcode_emulation (OP_RCONV_TO_U4, __emul_rconv_to_u4, mono_icall_sig_uint32_float, mono_rconv_u4, FALSE); #endif register_opcode_emulation (OP_FCONV_TO_OVF_I8, __emul_fconv_to_ovf_i8, mono_icall_sig_long_double, mono_fconv_ovf_i8, FALSE); @@ -4842,13 +4842,6 @@ register_icalls (void) register_icall (mono_class_interface_match, mono_icall_sig_uint32_ptr_int32, TRUE); #endif - // FIXME Elsewhere these are registered with no_wrapper = FALSE -#if SIZEOF_REGISTER == 4 - register_opcode_emulation (OP_FCONV_TO_U, __emul_fconv_to_u, mono_icall_sig_uint32_double, mono_fconv_u4, TRUE); -#else - register_opcode_emulation (OP_FCONV_TO_U, __emul_fconv_to_u, mono_icall_sig_ulong_double, mono_fconv_u8, TRUE); -#endif - /* other jit icalls */ register_icall (ves_icall_mono_delegate_ctor, mono_icall_sig_void_object_object_ptr, FALSE); register_icall (ves_icall_mono_delegate_ctor_interp, mono_icall_sig_void_object_object_ptr, FALSE); diff --git a/src/mono/mono/mini/mini-s390x.c b/src/mono/mono/mini/mini-s390x.c index 3cc263ec280dae..d707893c96bb66 100644 --- a/src/mono/mono/mini/mini-s390x.c +++ b/src/mono/mono/mini/mini-s390x.c @@ -4290,7 +4290,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) s390_cfdbr (code, ins->dreg, 5, ins->sreg1); break; case OP_FCONV_TO_U4: - case OP_FCONV_TO_U: if (mono_hwcap_s390x_has_fpe) { s390_clgdbr (code, ins->dreg, 5, ins->sreg1, 0); } else { diff --git a/src/mono/mono/mini/mini-sparc.c b/src/mono/mono/mini/mini-sparc.c index 8a51c738ed79ba..954fab8e03bec0 100644 --- a/src/mono/mono/mini/mini-sparc.c +++ b/src/mono/mono/mini/mini-sparc.c @@ -3395,7 +3395,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb) case OP_FCONV_TO_U2: #ifndef SPARCV9 case OP_FCONV_TO_I: - case OP_FCONV_TO_U: #endif case OP_FCONV_TO_I4: case OP_FCONV_TO_U4: { diff --git a/src/mono/mono/mini/mini.h b/src/mono/mono/mini/mini.h index baa30d8bdcdb59..cee603b27baf79 100644 --- a/src/mono/mono/mini/mini.h +++ b/src/mono/mono/mini/mini.h @@ -1909,7 +1909,7 @@ realloc_code (MonoCompile *cfg, int size) const int EXTRA_CODE_SPACE = 16; const int code_len = cfg->code_len; - if (G_UNLIKELY (code_len + size > (cfg->code_size - EXTRA_CODE_SPACE))) + if (G_UNLIKELY ((guint)(code_len + size) > (cfg->code_size - EXTRA_CODE_SPACE))) return mini_realloc_code_slow (cfg, size); return cfg->native_code + code_len; } @@ -1917,7 +1917,7 @@ realloc_code (MonoCompile *cfg, int size) static inline void set_code_len (MonoCompile *cfg, int len) { - g_assert (len <= cfg->code_size); + g_assert ((guint)len <= cfg->code_size); cfg->code_len = len; } diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index f63cf472b9e038..0635caf8dade22 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -196,6 +196,9 @@ emit_simd_ins (MonoCompile *cfg, MonoClass *klass, int opcode, int sreg1, int sr } else if (spec [MONO_INST_DEST] == 'f') { ins->dreg = alloc_freg (cfg); ins->type = STACK_R8; + } else if (spec [MONO_INST_DEST] == 'v') { + ins->dreg = alloc_dreg (cfg, STACK_VTYPE); + ins->type = STACK_VTYPE; } ins->sreg1 = sreg1; ins->sreg2 = sreg2; @@ -560,6 +563,7 @@ type_to_extract_op (MonoTypeEnum type) } static guint16 sri_vector_methods [] = { + SN_Abs, SN_As, SN_AsByte, SN_AsDouble, @@ -576,9 +580,12 @@ static guint16 sri_vector_methods [] = { SN_AsVector256, SN_AsVector3, SN_AsVector4, + SN_Ceiling, + SN_ConditionalSelect, SN_Create, SN_CreateScalar, SN_CreateScalarUnsafe, + SN_Floor, SN_GetElement, SN_GetLower, SN_GetUpper, @@ -633,6 +640,23 @@ emit_sri_vector (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsi MonoTypeEnum arg0_type = fsig->param_count > 0 ? get_underlying_type (fsig->params [0]) : MONO_TYPE_VOID; switch (id) { + case SN_Abs: { +#ifdef TARGET_ARM64 + switch (arg0_type) { + case MONO_TYPE_U1: + case MONO_TYPE_U2: + case MONO_TYPE_U4: + case MONO_TYPE_U8: + case MONO_TYPE_U: + return NULL; + } + gboolean is_float = arg0_type == MONO_TYPE_R4 || arg0_type == MONO_TYPE_R8; + int iid = is_float ? INTRINS_AARCH64_ADV_SIMD_FABS : INTRINS_AARCH64_ADV_SIMD_ABS; + return emit_simd_ins_for_sig (cfg, klass, OP_XOP_OVR_X_X, iid, arg0_type, fsig, args); +#else + return NULL; +#endif +} case SN_As: case SN_AsByte: case SN_AsDouble: @@ -650,6 +674,24 @@ emit_sri_vector (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsi return NULL; return emit_simd_ins (cfg, klass, OP_XCAST, args [0]->dreg, -1); } + case SN_Ceiling: + case SN_Floor: { +#ifdef TARGET_ARM64 + if ((arg0_type != MONO_TYPE_R4) && (arg0_type != MONO_TYPE_R8)) + return NULL; + int ceil_or_floor = id == SN_Ceiling ? INTRINS_AARCH64_ADV_SIMD_FRINTP : INTRINS_AARCH64_ADV_SIMD_FRINTM; + return emit_simd_ins_for_sig (cfg, klass, OP_XOP_OVR_X_X, ceil_or_floor, arg0_type, fsig, args); +#else + return NULL; +#endif + } + case SN_ConditionalSelect: { +#ifdef TARGET_ARM64 + return emit_simd_ins_for_sig (cfg, klass, OP_ARM64_BSL, -1, arg0_type, fsig, args); +#else + return NULL; +#endif + } case SN_Create: { MonoType *etype = get_vector_t_elem_type (fsig->ret); if (fsig->param_count == 1 && mono_metadata_type_equal (fsig->params [0], etype)) @@ -1393,6 +1435,12 @@ static SimdIntrinsic advsimd_methods [] = { {SN_LoadAndInsertScalar, OP_ARM64_LD1_INSERT}, {SN_LoadAndReplicateToVector128, OP_ARM64_LD1R}, {SN_LoadAndReplicateToVector64, OP_ARM64_LD1R}, + {SN_LoadPairScalarVector64, OP_ARM64_LDP_SCALAR}, + {SN_LoadPairScalarVector64NonTemporal, OP_ARM64_LDNP_SCALAR}, + {SN_LoadPairVector128, OP_ARM64_LDP}, + {SN_LoadPairVector128NonTemporal, OP_ARM64_LDNP}, + {SN_LoadPairVector64, OP_ARM64_LDP}, + {SN_LoadPairVector64NonTemporal, OP_ARM64_LDNP}, {SN_LoadVector128, OP_ARM64_LD1}, {SN_LoadVector64, OP_ARM64_LD1}, {SN_Max, OP_XOP_OVR_X_X_X, INTRINS_AARCH64_ADV_SIMD_SMAX, OP_XOP_OVR_X_X_X, INTRINS_AARCH64_ADV_SIMD_UMAX, OP_XOP_OVR_X_X_X, INTRINS_AARCH64_ADV_SIMD_FMAX}, diff --git a/src/mono/mono/mini/simd-methods.h b/src/mono/mono/mini/simd-methods.h index d223b2ba5aee87..b79ab97a7d388b 100644 --- a/src/mono/mono/mini/simd-methods.h +++ b/src/mono/mono/mini/simd-methods.h @@ -59,6 +59,7 @@ METHOD(AsVector4) METHOD(Create) METHOD(CreateScalar) METHOD(CreateScalarUnsafe) +METHOD(ConditionalSelect) METHOD(GetElement) METHOD(GetLower) METHOD(GetUpper) @@ -390,6 +391,12 @@ METHOD(InsertSelectedScalar) METHOD(LoadAndInsertScalar) METHOD(LoadAndReplicateToVector128) METHOD(LoadAndReplicateToVector64) +METHOD(LoadPairScalarVector64) +METHOD(LoadPairScalarVector64NonTemporal) +METHOD(LoadPairVector128) +METHOD(LoadPairVector128NonTemporal) +METHOD(LoadPairVector64) +METHOD(LoadPairVector64NonTemporal) METHOD(LoadVector64) METHOD(MaxAcross) METHOD(MaxNumber) diff --git a/src/mono/mono/mini/type-checking.c b/src/mono/mono/mini/type-checking.c index 1d279e86b8d228..cd28c8624eec56 100644 --- a/src/mono/mono/mini/type-checking.c +++ b/src/mono/mono/mini/type-checking.c @@ -557,7 +557,7 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us MONO_START_BB (cfg, pointer_check_bb); // Check if the parent class of the element is non-null, else manually check the type - MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, parent_reg, NULL); + MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, parent_reg, 0); MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, is_null_bb); MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, class_kind_reg, MONO_CLASS_POINTER); MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, false_bb); diff --git a/src/mono/mono/sgen/sgen-protocol.c b/src/mono/mono/sgen/sgen-protocol.c index 5fc013d6b57f3d..bc757d96ae9e59 100644 --- a/src/mono/mono/sgen/sgen-protocol.c +++ b/src/mono/mono/sgen/sgen-protocol.c @@ -115,7 +115,12 @@ binary_protocol_open_file (gboolean assert_on_failure) #endif } else { /* We have acquired the lock. Truncate the file */ - ftruncate (binary_protocol_file, 0); + int ret; + while ((ret = ftruncate (binary_protocol_file, 0)) < 0 && errno == EINTR); + if (ret < 0) { + binary_protocol_file = -1; + break; + } } } while (binary_protocol_file == -1); #else diff --git a/src/mono/mono/tools/offsets-tool/offsets-tool.py b/src/mono/mono/tools/offsets-tool/offsets-tool.py index 4a2c68920d2bd7..ca019a727c8380 100644 --- a/src/mono/mono/tools/offsets-tool/offsets-tool.py +++ b/src/mono/mono/tools/offsets-tool/offsets-tool.py @@ -281,7 +281,7 @@ def run_clang(self): clang_args += self.target_args clang_args += ['-std=gnu99', '-DMONO_GENERATING_OFFSETS'] for include in self.sys_includes: - clang_args.append ("-I") + clang_args.append ("-isystem") clang_args.append (include) for include in mono_includes: clang_args.append ("-I") diff --git a/src/mono/mono/utils/mono-dl.c b/src/mono/mono/utils/mono-dl.c index 5583be758e17bf..6d0d07f67d7300 100644 --- a/src/mono/mono/utils/mono-dl.c +++ b/src/mono/mono/utils/mono-dl.c @@ -232,7 +232,7 @@ mono_dl_open_full (const char *name, int mono_flags, int native_flags, char **er void *lib; MonoDlFallbackHandler *dl_fallback = NULL; int lflags = mono_dl_convert_flags (mono_flags, native_flags); - char *found_name; + char *found_name = NULL; if (error_msg) *error_msg = NULL; diff --git a/src/mono/mono/utils/mono-threads.c b/src/mono/mono/utils/mono-threads.c index e3a936a1abc3cc..7697ac5002240c 100644 --- a/src/mono/mono/utils/mono-threads.c +++ b/src/mono/mono/utils/mono-threads.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -1748,7 +1749,7 @@ mono_thread_info_sleep (guint32 ms, gboolean *alerted) } do { - ret = clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL); + ret = g_clock_nanosleep (CLOCK_MONOTONIC, TIMER_ABSTIME, &target, NULL); } while (ret != 0); #elif HOST_WIN32 Sleep (ms); diff --git a/src/mono/wasm/debugger/BrowserDebugHost/Startup.cs b/src/mono/wasm/debugger/BrowserDebugHost/Startup.cs index 074a953b694ae8..b4e116e81485d0 100644 --- a/src/mono/wasm/debugger/BrowserDebugHost/Startup.cs +++ b/src/mono/wasm/debugger/BrowserDebugHost/Startup.cs @@ -139,7 +139,9 @@ async Task RewriteArray(HttpContext context) Dictionary[] tabs = await ProxyGetJsonAsync[]>(GetEndpoint(context)); Dictionary[] alteredTabs = tabs.Select(t => mapFunc(t, context, devToolsHost)).ToArray(); context.Response.ContentType = "application/json"; - await context.Response.WriteAsync(JsonSerializer.Serialize(alteredTabs)); + string text = JsonSerializer.Serialize(alteredTabs); + context.Response.ContentLength = text.Length; + await context.Response.WriteAsync(text); } async Task ConnectProxy(HttpContext context) diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs b/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs index fbb25bff17e8e2..7346976cb35623 100644 --- a/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs +++ b/src/mono/wasm/debugger/BrowserDebugProxy/DebugStore.cs @@ -22,6 +22,7 @@ using System.Reflection; using System.Collections.Immutable; using System.Diagnostics; +using System.Text; namespace Microsoft.WebAssembly.Diagnostics { @@ -901,7 +902,8 @@ internal SourceFile(AssemblyInfo assembly, int id, DocumentHandle docHandle, Uri this.url = url; this.DebuggerFileName = url.Replace("\\", "/").Replace(":", ""); - this.SourceUri = new Uri((Path.IsPathRooted(url) ? "file://" : "") + url, UriKind.RelativeOrAbsolute); + var urlWithSpecialCharCodedHex = EscapeAscii(url); + this.SourceUri = new Uri((Path.IsPathRooted(url) ? "file://" : "") + urlWithSpecialCharCodedHex, UriKind.RelativeOrAbsolute); if (SourceUri.IsFile && File.Exists(SourceUri.LocalPath)) { this.Url = this.SourceUri.ToString(); @@ -912,6 +914,33 @@ internal SourceFile(AssemblyInfo assembly, int id, DocumentHandle docHandle, Uri } } + private static string EscapeAscii(string path) + { + var builder = new StringBuilder(); + foreach (char c in path) + { + switch (c) + { + case var _ when c >= 'a' && c <= 'z': + case var _ when c >= 'A' && c <= 'Z': + case var _ when char.IsDigit(c): + case var _ when c > 255: + case var _ when c == '+' || c == ':' || c == '.' || c == '-' || c == '_' || c == '~': + builder.Append(c); + break; + case var _ when c == Path.DirectorySeparatorChar: + case var _ when c == Path.AltDirectorySeparatorChar: + case var _ when c == '\\': + builder.Append(c); + break; + default: + builder.Append(string.Format($"%{((int)c):X2}")); + break; + } + } + return builder.ToString(); + } + internal void AddMethod(MethodInfo mi) { if (!this.methods.ContainsKey(mi.Token)) diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs b/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs index 173dfd3b26d8ff..b3e1feb4e3a9b3 100644 --- a/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs +++ b/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs @@ -700,8 +700,8 @@ public PointerValue(long address, int typeId, string varName) internal class MonoSDBHelper { private static int debuggerObjectId; - private static int cmdId; - private static int GetId() {return cmdId++;} + private static int cmdId = 1; //cmdId == 0 is used by events which come from runtime + private static int GetNewId() {return cmdId++;} private static int MINOR_VERSION = 61; private static int MAJOR_VERSION = 2; @@ -862,7 +862,7 @@ public async Task EnableReceiveRequests(EventKind eventKind, CancellationT } internal async Task SendDebuggerAgentCommand(T command, MonoBinaryWriter arguments, CancellationToken token) => - MonoBinaryReader.From (await proxy.SendMonoCommand(sessionId, MonoCommands.SendDebuggerAgentCommand(proxy.RuntimeId, GetId(), (int)GetCommandSetForCommand(command), (int)(object)command, arguments?.ToBase64().data ?? string.Empty), token)); + MonoBinaryReader.From (await proxy.SendMonoCommand(sessionId, MonoCommands.SendDebuggerAgentCommand(proxy.RuntimeId, GetNewId(), (int)GetCommandSetForCommand(command), (int)(object)command, arguments?.ToBase64().data ?? string.Empty), token)); internal CommandSet GetCommandSetForCommand(T command) => command switch { @@ -885,7 +885,7 @@ internal CommandSet GetCommandSetForCommand(T command) => }; internal async Task SendDebuggerAgentCommandWithParms(T command, (string data, int length) encoded, int type, string extraParm, CancellationToken token) => - MonoBinaryReader.From(await proxy.SendMonoCommand(sessionId, MonoCommands.SendDebuggerAgentCommandWithParms(proxy.RuntimeId, GetId(), (int)GetCommandSetForCommand(command), (int)(object)command, encoded.data, encoded.length, type, extraParm), token)); + MonoBinaryReader.From(await proxy.SendMonoCommand(sessionId, MonoCommands.SendDebuggerAgentCommandWithParms(proxy.RuntimeId, GetNewId(), (int)GetCommandSetForCommand(command), (int)(object)command, encoded.data, encoded.length, type, extraParm), token)); public async Task CreateString(string value, CancellationToken token) { @@ -2180,6 +2180,7 @@ public async Task GetValueTypeProxy(int valueTypeId, CancellationToken t command = CmdVM.InvokeMethod, buffer = data, length = length, + id = GetNewId() }), name = propertyNameStr })); @@ -2505,7 +2506,8 @@ async Task GetFieldsValues(List fields, bool isOwn, bool command = CmdObject.RefSetValues, buffer = data, valtype, - length = length + length, + id = GetNewId() })); } if (!isRootHidden) @@ -2636,7 +2638,8 @@ public async Task GetObjectProxy(int objectId, CancellationToken token) command = CmdVM.InvokeMethod, buffer = data, valtype = attr["set"]["valtype"], - length = length + length, + id = GetNewId() }); } continue; @@ -2655,7 +2658,8 @@ public async Task GetObjectProxy(int objectId, CancellationToken token) commandSet = CommandSet.Vm, command = CmdVM.InvokeMethod, buffer = data, - length = length + length = length, + id = GetNewId() }), name = propertyNameStr })); diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/MiscTests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/MiscTests.cs index 6f705edcbcfb51..13c21509a463aa 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/MiscTests.cs +++ b/src/mono/wasm/debugger/DebuggerTestSuite/MiscTests.cs @@ -954,5 +954,24 @@ await EvaluateAndCheck( ); } //TODO add tests covering basic stepping behavior as step in/out/over + + [Theory] + [InlineData( + "DebuggerTests.CheckSpecialCharactersInPath", + "dotnet://debugger-test-special-char-in-path.dll/test#.cs")] + [InlineData( + "DebuggerTests.CheckSNonAsciiCharactersInPath", + "dotnet://debugger-test-special-char-in-path.dll/non-ascii-test-Ä…Å‚.cs")] + public async Task SetBreakpointInProjectWithSpecialCharactersInPath( + string classWithNamespace, string expectedFileLocation) + { + var bp = await SetBreakpointInMethod("debugger-test-special-char-in-path.dll", classWithNamespace, "Evaluate", 1); + await EvaluateAndCheck( + $"window.setTimeout(function() {{ invoke_static_method ('[debugger-test-special-char-in-path] {classWithNamespace}:Evaluate'); }}, 1);", + expectedFileLocation, + bp.Value["locations"][0]["lineNumber"].Value(), + bp.Value["locations"][0]["columnNumber"].Value(), + "Evaluate"); + } } } diff --git a/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/debugger-test-special-char-in-path.csproj b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/debugger-test-special-char-in-path.csproj new file mode 100644 index 00000000000000..d75d7cd720ac04 --- /dev/null +++ b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/debugger-test-special-char-in-path.csproj @@ -0,0 +1,5 @@ + + + false + + diff --git "a/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/non-ascii-test-\304\205\305\202.cs" "b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/non-ascii-test-\304\205\305\202.cs" new file mode 100644 index 00000000000000..db51e5895aba56 --- /dev/null +++ "b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/non-ascii-test-\304\205\305\202.cs" @@ -0,0 +1,10 @@ +namespace DebuggerTests +{ + public class CheckSNonAsciiCharactersInPath + { + public static void Evaluate() + { + var a = 123; + } + } +} diff --git a/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/test#.cs b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/test#.cs new file mode 100644 index 00000000000000..851c232e5ef2c8 --- /dev/null +++ b/src/mono/wasm/debugger/tests/debugger-test-special-char-in-path-#@/test#.cs @@ -0,0 +1,10 @@ +namespace DebuggerTests +{ + public class CheckSpecialCharactersInPath + { + public static void Evaluate() + { + var a = 123; + } + } +} diff --git a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj index c431aa7821ea67..c19d678bf0ba94 100644 --- a/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj +++ b/src/mono/wasm/debugger/tests/debugger-test/debugger-test.csproj @@ -24,6 +24,7 @@ + @@ -46,6 +47,7 @@ + diff --git a/src/mono/wasm/runtime/debug.ts b/src/mono/wasm/runtime/debug.ts index ee10a5d9f5c97b..ac7b035e642d1d 100644 --- a/src/mono/wasm/runtime/debug.ts +++ b/src/mono/wasm/runtime/debug.ts @@ -6,7 +6,8 @@ import { toBase64StringImpl } from "./base64"; import cwraps from "./cwraps"; import { VoidPtr, CharPtr } from "./types/emscripten"; -let commands_received: CommandResponse; +const commands_received : any = new Map(); +commands_received.remove = function (key: number) : CommandResponse { const value = this.get(key); this.delete(key); return value;}; let _call_function_res_cache: any = {}; let _next_call_function_res_id = 0; let _debugger_buffer_len = -1; @@ -43,7 +44,9 @@ export function mono_wasm_add_dbg_command_received(res_ok: boolean, id: number, value: base64String } }; - commands_received = buffer_obj; + if (commands_received.has(id)) + console.warn("Addind an id that already exists in commands_received"); + commands_received.set(id, buffer_obj); } function mono_wasm_malloc_and_set_debug_buffer(command_parameters: string) { @@ -63,7 +66,7 @@ export function mono_wasm_send_dbg_command_with_parms(id: number, command_set: n mono_wasm_malloc_and_set_debug_buffer(command_parameters); cwraps.mono_wasm_send_dbg_command_with_parms(id, command_set, command, _debugger_buffer, length, valtype, newvalue.toString()); - const { res_ok, res } = commands_received; + const { res_ok, res } = commands_received.remove(id); if (!res_ok) throw new Error("Failed on mono_wasm_invoke_method_debugger_agent_with_parms"); return res; @@ -73,7 +76,8 @@ export function mono_wasm_send_dbg_command(id: number, command_set: number, comm mono_wasm_malloc_and_set_debug_buffer(command_parameters); cwraps.mono_wasm_send_dbg_command(id, command_set, command, _debugger_buffer, command_parameters.length); - const { res_ok, res } = commands_received; + const { res_ok, res } = commands_received.remove(id); + if (!res_ok) throw new Error("Failed on mono_wasm_send_dbg_command"); return res; @@ -81,7 +85,8 @@ export function mono_wasm_send_dbg_command(id: number, command_set: number, comm } export function mono_wasm_get_dbg_command_info(): CommandResponseResult { - const { res_ok, res } = commands_received; + const { res_ok, res } = commands_received.remove(0); + if (!res_ok) throw new Error("Failed on mono_wasm_get_dbg_command_info"); return res; @@ -138,10 +143,10 @@ function _create_proxy_from_object_id(objectId: string, details: any) { prop.name, { get() { - return mono_wasm_send_dbg_command(-1, prop.get.commandSet, prop.get.command, prop.get.buffer); + return mono_wasm_send_dbg_command(prop.get.id, prop.get.commandSet, prop.get.command, prop.get.buffer); }, set: function (newValue) { - mono_wasm_send_dbg_command_with_parms(-1, prop.set.commandSet, prop.set.command, prop.set.buffer, prop.set.length, prop.set.valtype, newValue); return commands_received.res_ok; + mono_wasm_send_dbg_command_with_parms(prop.set.id, prop.set.commandSet, prop.set.command, prop.set.buffer, prop.set.length, prop.set.valtype, newValue); return true; } } ); @@ -153,7 +158,7 @@ function _create_proxy_from_object_id(objectId: string, details: any) { return prop.value; }, set: function (newValue) { - mono_wasm_send_dbg_command_with_parms(-1, prop.set.commandSet, prop.set.command, prop.set.buffer, prop.set.length, prop.set.valtype, newValue); return commands_received.res_ok; + mono_wasm_send_dbg_command_with_parms(prop.set.id, prop.set.commandSet, prop.set.command, prop.set.buffer, prop.set.length, prop.set.valtype, newValue); return true; } } ); diff --git a/src/mono/wasm/wasm.proj b/src/mono/wasm/wasm.proj index fffeeb55d7c2e3..32326f087ad20f 100644 --- a/src/mono/wasm/wasm.proj +++ b/src/mono/wasm/wasm.proj @@ -71,7 +71,8 @@ <_EmccLinkFlags Include="-s NO_EXIT_RUNTIME=1" /> <_EmccLinkFlags Include="-s FORCE_FILESYSTEM=1" /> <_EmccLinkFlags Include="-s EXPORTED_RUNTIME_METHODS="['FS','print','ccall','cwrap','setValue','getValue','UTF8ToString','UTF8ArrayToString','FS_createPath','FS_createDataFile','removeRunDependency','addRunDependency']"" /> - <_EmccLinkFlags Include="-s EXPORTED_FUNCTIONS="['_free','_malloc']"" /> + + <_EmccLinkFlags Include="-s EXPORTED_FUNCTIONS=_free,_malloc,_htons,_ntohs,__get_daylight,__get_timezone,__get_tzname" /> <_EmccLinkFlags Include="--source-map-base http://example.com" /> <_EmccLinkFlags Include="-s STRICT_JS=1" /> <_EmccLinkFlags Include="-s EXPORT_NAME="'createDotnetRuntime'"" /> diff --git a/src/native/corehost/comhost/clsidmap.cpp b/src/native/corehost/comhost/clsidmap.cpp index 5c17a7af86d9e5..978cdeddb104b2 100644 --- a/src/native/corehost/comhost/clsidmap.cpp +++ b/src/native/corehost/comhost/clsidmap.cpp @@ -11,9 +11,9 @@ #include #include +#include #include #include -#include using comhost::clsid_map_entry; using comhost::clsid_map; diff --git a/src/native/corehost/json_parser.h b/src/native/corehost/json_parser.h index aa0b2ff7e626f7..2c2845aac46bfe 100644 --- a/src/native/corehost/json_parser.h +++ b/src/native/corehost/json_parser.h @@ -4,13 +4,9 @@ #ifndef __JSON_PARSER_H__ #define __JSON_PARSER_H__ -#ifdef __sun -// This optimization relies on zeros in higher 16-bits, whereas SunOS has 1s. More details at -// https://github.com/Tencent/rapidjson/issues/1596. -// The impact here was that runtimeOptions key available in hwapp.runtimeconfig.json was not -// located by RapidJson's FindMember() API from runtime_config_t::ensure_parsed(). +// Turn off flaky optimization. For details, see: +// https://github.com/Tencent/rapidjson/issues/1596#issuecomment-548774663 #define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0 -#endif #include "pal.h" #include diff --git a/src/native/libs/System.Native/pal_io.c b/src/native/libs/System.Native/pal_io.c index 4dd5c55dede84f..5061e4b114cd3b 100644 --- a/src/native/libs/System.Native/pal_io.c +++ b/src/native/libs/System.Native/pal_io.c @@ -1350,7 +1350,7 @@ int32_t SystemNative_CopyFile(intptr_t sourceFd, intptr_t destinationFd, int64_t intptr_t SystemNative_INotifyInit(void) { #if HAVE_INOTIFY - return inotify_init(); + return inotify_init1(IN_CLOEXEC); #else errno = ENOTSUP; return -1; diff --git a/src/native/libs/System.Native/pal_signal.c b/src/native/libs/System.Native/pal_signal.c index 6e7243fca17eee..fb9628382762e4 100644 --- a/src/native/libs/System.Native/pal_signal.c +++ b/src/native/libs/System.Native/pal_signal.c @@ -584,6 +584,16 @@ int32_t InitializeSignalHandlingCore() return 0; } +#ifdef HAS_CONSOLE_SIGNALS + // Unconditionally register signals for terminal configuration. + bool installed = InstallSignalHandler(SIGINT, SA_RESTART); + assert(installed); + installed = InstallSignalHandler(SIGQUIT, SA_RESTART); + assert(installed); + installed = InstallSignalHandler(SIGCONT, SA_RESTART); + assert(installed); +#endif + return 1; } @@ -612,7 +622,12 @@ void SystemNative_DisablePosixSignalHandling(int signalCode) { g_hasPosixSignalRegistrations[signalCode - 1] = false; - if (!(g_consoleTtouHandler && signalCode == SIGTTOU) && + // Don't restore handler when something other than posix handling needs the signal. + if ( +#ifdef HAS_CONSOLE_SIGNALS + signalCode != SIGINT && signalCode != SIGQUIT && signalCode != SIGCONT && +#endif + !(g_consoleTtouHandler && signalCode == SIGTTOU) && !(g_sigChldCallback && signalCode == SIGCHLD) && !(g_terminalInvalidationCallback && (signalCode == SIGCONT || signalCode == SIGCHLD || diff --git a/src/native/libs/System.Security.Cryptography.Native/entrypoints.c b/src/native/libs/System.Security.Cryptography.Native/entrypoints.c index bcca0693f63fbc..3ee4300de95d18 100644 --- a/src/native/libs/System.Security.Cryptography.Native/entrypoints.c +++ b/src/native/libs/System.Security.Cryptography.Native/entrypoints.c @@ -316,6 +316,7 @@ static const Entry s_cryptoNative[] = DllImportEntry(CryptoNative_SslSetAlpnProtos) DllImportEntry(CryptoNative_SslSetBio) DllImportEntry(CryptoNative_SslSetClientCertCallback) + DllImportEntry(CryptoNative_SslSetPostHandshakeAuth) DllImportEntry(CryptoNative_SslSetConnectState) DllImportEntry(CryptoNative_SslSetData) DllImportEntry(CryptoNative_SslSetQuietShutdown) diff --git a/src/native/libs/System.Security.Cryptography.Native/opensslshim.h b/src/native/libs/System.Security.Cryptography.Native/opensslshim.h index bad52f66bde0c6..f1b39f2f5020d4 100644 --- a/src/native/libs/System.Security.Cryptography.Native/opensslshim.h +++ b/src/native/libs/System.Security.Cryptography.Native/opensslshim.h @@ -517,6 +517,9 @@ const EVP_CIPHER* EVP_chacha20_poly1305(void); REQUIRED_FUNCTION(SSL_write) \ REQUIRED_FUNCTION(SSL_use_certificate) \ REQUIRED_FUNCTION(SSL_use_PrivateKey) \ + LIGHTUP_FUNCTION(SSL_verify_client_post_handshake) \ + LIGHTUP_FUNCTION(SSL_set_post_handshake_auth) \ + REQUIRED_FUNCTION(SSL_version) \ FALLBACK_FUNCTION(X509_check_host) \ REQUIRED_FUNCTION(X509_check_purpose) \ REQUIRED_FUNCTION(X509_cmp_current_time) \ @@ -977,6 +980,9 @@ FOR_ALL_OPENSSL_FUNCTIONS #define SSL_write SSL_write_ptr #define SSL_use_certificate SSL_use_certificate_ptr #define SSL_use_PrivateKey SSL_use_PrivateKey_ptr +#define SSL_verify_client_post_handshake SSL_verify_client_post_handshake_ptr +#define SSL_set_post_handshake_auth SSL_set_post_handshake_auth_ptr +#define SSL_version SSL_version_ptr #define TLS_method TLS_method_ptr #define X509_check_host X509_check_host_ptr #define X509_check_purpose X509_check_purpose_ptr diff --git a/src/native/libs/System.Security.Cryptography.Native/osslcompat_111.h b/src/native/libs/System.Security.Cryptography.Native/osslcompat_111.h index 59f0fc5f59d5df..4ffd26220abb7c 100644 --- a/src/native/libs/System.Security.Cryptography.Native/osslcompat_111.h +++ b/src/native/libs/System.Security.Cryptography.Native/osslcompat_111.h @@ -60,7 +60,9 @@ unsigned long SSL_CTX_set_options(SSL_CTX* ctx, unsigned long options); void SSL_CTX_set_security_level(SSL_CTX* ctx, int32_t level); int32_t SSL_is_init_finished(SSL* ssl); unsigned long SSL_set_options(SSL* ctx, unsigned long options); +void SSL_set_post_handshake_auth(SSL *s, int val); int SSL_session_reused(SSL* ssl); +int SSL_verify_client_post_handshake(SSL *s); const SSL_METHOD* TLS_method(void); const ASN1_TIME* X509_CRL_get0_nextUpdate(const X509_CRL* crl); int32_t X509_NAME_get0_der(X509_NAME* x509Name, const uint8_t** pder, size_t* pderlen); diff --git a/src/native/libs/System.Security.Cryptography.Native/pal_ssl.c b/src/native/libs/System.Security.Cryptography.Native/pal_ssl.c index 698e3282c45096..5b5e2028c0203d 100644 --- a/src/native/libs/System.Security.Cryptography.Native/pal_ssl.c +++ b/src/native/libs/System.Security.Cryptography.Native/pal_ssl.c @@ -411,6 +411,27 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX* store) int32_t CryptoNative_SslRenegotiate(SSL* ssl, int32_t* error) { +#ifdef NEED_OPENSSL_1_1 + // TLS1.3 uses different API for renegotiation/delayed client cert request + #ifndef TLS1_3_VERSION + #define TLS1_3_VERSION 0x0304 + #endif + if (SSL_version(ssl) == TLS1_3_VERSION) + { + // this is just a sanity check, if TLS 1.3 was negotiated, then the function must be available + if (API_EXISTS(SSL_verify_client_post_handshake)) + { + // Post-handshake auth reqires SSL_VERIFY_PEER to be set + CryptoNative_SslSetVerifyPeer(ssl); + return SSL_verify_client_post_handshake(ssl); + } + else + { + return 0; + } + } +#endif + // The openssl context is destroyed so we can't use ticket or session resumption. SSL_set_options(ssl, SSL_OP_NO_TICKET | SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION); @@ -733,6 +754,19 @@ void CryptoNative_SslSetClientCertCallback(SSL* ssl, int set) SSL_set_cert_cb(ssl, set ? client_certificate_cb : NULL, NULL); } +void CryptoNative_SslSetPostHandshakeAuth(SSL* ssl, int32_t val) +{ +#ifdef NEED_OPENSSL_1_1 + if (API_EXISTS(SSL_set_post_handshake_auth)) + { + SSL_set_post_handshake_auth(ssl, val); + } +#else + (void)ssl; + (void)val; +#endif +} + int32_t CryptoNative_SslSetData(SSL* ssl, void *ptr) { return SSL_set_ex_data(ssl, 0, ptr); diff --git a/src/native/libs/System.Security.Cryptography.Native/pal_ssl.h b/src/native/libs/System.Security.Cryptography.Native/pal_ssl.h index bdbfed127af998..5bb758eeff16ee 100644 --- a/src/native/libs/System.Security.Cryptography.Native/pal_ssl.h +++ b/src/native/libs/System.Security.Cryptography.Native/pal_ssl.h @@ -147,6 +147,11 @@ It will unset callback if set is zero. */ PALEXPORT void CryptoNative_SslSetClientCertCallback(SSL* ssl, int set); +/* +Requests that client sends Post-Handshake Authentication extension in ClientHello. +*/ +PALEXPORT void CryptoNative_SslSetPostHandshakeAuth(SSL* ssl, int32_t val); + /*======= Sets session caching. 0 is disabled. */ @@ -222,9 +227,9 @@ when an error is encountered. PALEXPORT int32_t CryptoNative_SslRead(SSL* ssl, void* buf, int32_t num, int32_t* error); /* -Shims the SSL_renegotiate method. +Shims the SSL_renegotiate method (up to TLS 1.2), or SSL_verify_client_post_handshake (TLS 1.3) -Returns 1 when renegotiation started; 0 on error. +Returns 1 when renegotiation/post-handshake authentication started; 0 on error. */ PALEXPORT int32_t CryptoNative_SslRenegotiate(SSL* ssl, int32_t* error); diff --git a/src/tasks/AndroidAppBuilder/Templates/CMakeLists-android.txt b/src/tasks/AndroidAppBuilder/Templates/CMakeLists-android.txt index 7b602ad6a30292..b3032a9e5557ed 100644 --- a/src/tasks/AndroidAppBuilder/Templates/CMakeLists-android.txt +++ b/src/tasks/AndroidAppBuilder/Templates/CMakeLists-android.txt @@ -4,14 +4,8 @@ project(monodroid) enable_language(C ASM) -if(NOT USE_LLVM) - # the assembler code we generate is GNU which isn't understood by llvm - add_compile_options(-no-integrated-as) -endif() - -# Prevent the warning: shared library text segment is not shareable which is treated as an error -if (NOT ANDROID_ABI STREQUAL "arm64-v8a") - add_link_options(-Wl,--no-warn-shared-textrel) +if(ANDROID_NDK_MAJOR VERSION_LESS "23") + message(FATAL_ERROR "Error: need at least Android NDK 23, got ${ANDROID_NDK_REVISION}!") endif() add_library( diff --git a/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/Logger.cs b/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/Logger.cs index 4c5ac74ba1c191..556d0f5150441d 100644 --- a/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/Logger.cs +++ b/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/Logger.cs @@ -143,4 +143,4 @@ private static void DebugThrowMissingOrIncorrectCode(string code, string message private static bool IsAsciiDigit(char c) => c >= '0' && c <= '9'; } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/MetadataKeys.cs b/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/MetadataKeys.cs index d6955cf85bb4e8..9644f56b8504e8 100644 --- a/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/MetadataKeys.cs +++ b/src/tasks/Crossgen2Tasks/CommonFilePulledFromSdkRepo/MetadataKeys.cs @@ -126,4 +126,4 @@ internal static class MetadataKeys public const string CreateCompositeImage = "CreateCompositeImage"; public const string PerfmapFormatVersion = "PerfmapFormatVersion"; } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/PrepareForReadyToRunCompilation.cs b/src/tasks/Crossgen2Tasks/PrepareForReadyToRunCompilation.cs index 40235b9092bc47..42fca5546a7a40 100644 --- a/src/tasks/Crossgen2Tasks/PrepareForReadyToRunCompilation.cs +++ b/src/tasks/Crossgen2Tasks/PrepareForReadyToRunCompilation.cs @@ -502,4 +502,4 @@ private static bool HasILCode(PEReader peReader, MetadataReader mdReader) return false; } } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/ResolveReadyToRunCompilers.cs b/src/tasks/Crossgen2Tasks/ResolveReadyToRunCompilers.cs index ddc44ccb782fa5..aac7b19ab70811 100644 --- a/src/tasks/Crossgen2Tasks/ResolveReadyToRunCompilers.cs +++ b/src/tasks/Crossgen2Tasks/ResolveReadyToRunCompilers.cs @@ -402,4 +402,4 @@ private static string ArchitectureToString(Architecture architecture) }; } } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/RunReadyToRunCompiler.cs b/src/tasks/Crossgen2Tasks/RunReadyToRunCompiler.cs index a71cee659acb62..bb12a1bc3c8206 100644 --- a/src/tasks/Crossgen2Tasks/RunReadyToRunCompiler.cs +++ b/src/tasks/Crossgen2Tasks/RunReadyToRunCompiler.cs @@ -408,4 +408,4 @@ protected override void LogEventsFromTextOutput(string singleLine, MessageImport } } } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/SimpleItemUtilities.cs b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/SimpleItemUtilities.cs index 1f975bc51860ed..9bd7a39e7d5254 100644 --- a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/SimpleItemUtilities.cs +++ b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/SimpleItemUtilities.cs @@ -37,4 +37,4 @@ public static bool HasMetadataValue(this ITaskItem item, string name, string exp return string.Equals(value, expectedValue, StringComparison.OrdinalIgnoreCase); } } -} \ No newline at end of file +} diff --git a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Strings.cs b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Strings.cs index 2321712f1f970f..fc8a0caa2d21dc 100644 --- a/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Strings.cs +++ b/src/tasks/Crossgen2Tasks/ShimFilesSimulatingLogicInSdkRepo/Strings.cs @@ -22,4 +22,4 @@ public static class Strings public static string ReadyToRunNoValidRuntimePackageError = "ReadyToRunNoValidRuntimePackageError"; public static string ReadyToRunTargetNotSupportedError = "ReadyToRunTargetNotSupportedError"; } -} \ No newline at end of file +} diff --git a/src/tasks/WorkloadBuildTasks/GenerateFileFromTemplate.cs b/src/tasks/WorkloadBuildTasks/GenerateFileFromTemplate.cs index 9aecb93aa1925f..7598ab93577108 100644 --- a/src/tasks/WorkloadBuildTasks/GenerateFileFromTemplate.cs +++ b/src/tasks/WorkloadBuildTasks/GenerateFileFromTemplate.cs @@ -147,4 +147,4 @@ public string Replace(string template, IDictionary values) return sb.ToString(); } -} \ No newline at end of file +} diff --git a/src/tests/Common/CLRTest.Execute.Bash.targets b/src/tests/Common/CLRTest.Execute.Bash.targets index ac563dff7cfed7..eaf413288f347b 100644 --- a/src/tests/Common/CLRTest.Execute.Bash.targets +++ b/src/tests/Common/CLRTest.Execute.Bash.targets @@ -96,7 +96,7 @@ then exit $(IncompatibleTestBashScriptExitCode) fi ]]> - + diff --git a/src/tests/Common/CLRTest.Execute.Batch.targets b/src/tests/Common/CLRTest.Execute.Batch.targets index 584f4d30cfd9b0..0b5b9bdc1067dd 100644 --- a/src/tests/Common/CLRTest.Execute.Batch.targets +++ b/src/tests/Common/CLRTest.Execute.Batch.targets @@ -93,7 +93,7 @@ IF NOT "%RunTieringTest%"=="" ( Exit /b 0 ) ]]> - + diff --git a/src/tests/Common/CLRTest.Execute.targets b/src/tests/Common/CLRTest.Execute.targets index 142133bd6aabe6..3c9ec6b40ec4f3 100644 --- a/src/tests/Common/CLRTest.Execute.targets +++ b/src/tests/Common/CLRTest.Execute.targets @@ -78,7 +78,6 @@ This file contains the logic for providing Execution Script generation. - diff --git a/src/tests/Common/CLRTest.NativeAot.targets b/src/tests/Common/CLRTest.NativeAot.targets deleted file mode 100644 index ca515f126f5280..00000000000000 --- a/src/tests/Common/CLRTest.NativeAot.targets +++ /dev/null @@ -1,194 +0,0 @@ - - - - $(BashScriptSnippetGen);GetNativeAotBashScript - $(BatchScriptSnippetGen);GetNativeAotBatchScript - - - - - - - - - - - - /dev/null - else - cp *.so native/ 2>/dev/null - fi - - ExePath=native/$(MSBuildProjectName) -fi - ]]> - - - $(NativeAotCleanupBashScript);$(BashCLRTestPreCommands);$(NativeAotBashScript) - - - - - - - - - - - - - - - - - - $(NativeAotCleanupBatchScript);$(CLRTestBatchPreCommands);$(NativeAotBatchScript) - - - - - - <_RootEntryAssemblyLine Condition="$(CLRTestFullTrimming) == 'true'"><TrimmerDefaultAction>link</TrimmerDefaultAction> - - <_NativeAotBuildProjectFile> - - - - $(MSBuildProjectName) - $(TargetFramework) - Exe - %24(MSBuildProjectDirectory)\ - %24(MSBuildProjectDirectory)\ - $(TargetArchitecture) - $(Optimize) - true - true - false - false - false - $(OutputRid) - $(_RootEntryAssemblyLine) - - - $(NativeAotProjectLines) - - - - - - -@(RuntimeHostConfigurationOption->' ', '%0A') - - - - - - - - - - - ]]> - - - - - - - - diff --git a/src/tests/Common/CoreCLRTestLibrary/HostPolicyMock.cs b/src/tests/Common/CoreCLRTestLibrary/HostPolicyMock.cs index 31a304a8d845e6..ec8096d80a3873 100644 --- a/src/tests/Common/CoreCLRTestLibrary/HostPolicyMock.cs +++ b/src/tests/Common/CoreCLRTestLibrary/HostPolicyMock.cs @@ -126,7 +126,18 @@ public Action LastSetErrorWriter else { Delegate d = Marshal.GetDelegateForFunctionPointer(errorWriterPtr, _corehost_error_writer_fnType); - return (string message) => { d.DynamicInvoke(message); }; + return (string message) => + { + IntPtr messagePtr = Marshal.StringToCoTaskMemAuto(message); + try + { + d.DynamicInvoke(messagePtr); + } + finally + { + Marshal.FreeCoTaskMem(messagePtr); + } + }; } } } diff --git a/src/tests/Common/CoreCLRTestLibrary/OutOfProcessTest.cs b/src/tests/Common/CoreCLRTestLibrary/OutOfProcessTest.cs index e96378339b8b7b..89fafa77da4331 100644 --- a/src/tests/Common/CoreCLRTestLibrary/OutOfProcessTest.cs +++ b/src/tests/Common/CoreCLRTestLibrary/OutOfProcessTest.cs @@ -45,9 +45,10 @@ static OutOfProcessTest() public static void RunOutOfProcessTest(string basePath, string assemblyPath) { int ret = -100; - string outputFile = System.IO.Path.GetFullPath(reportBase + assemblyPath + "output.txt"); - string errorFile = System.IO.Path.GetFullPath(reportBase + assemblyPath + "error.txt"); - string outputDir = System.IO.Path.GetDirectoryName(outputFile)!; + string baseDir = Path.GetDirectoryName(basePath); + string outputDir = System.IO.Path.GetFullPath(Path.Combine(reportBase, Path.GetDirectoryName(assemblyPath))); + string outputFile = Path.Combine(outputDir, "output.txt"); + string errorFile = Path.Combine(outputDir, "error.txt"); string testExecutable = null; Exception infraEx = null; @@ -57,14 +58,14 @@ public static void RunOutOfProcessTest(string basePath, string assemblyPath) if (OperatingSystem.IsWindows()) { - testExecutable = Path.Combine(basePath, Path.ChangeExtension(assemblyPath, ".cmd")); + testExecutable = Path.Combine(baseDir, Path.ChangeExtension(assemblyPath, ".cmd")); } else { - testExecutable = Path.Combine(basePath, Path.ChangeExtension(assemblyPath.Replace("\\", "/"), ".sh")); + testExecutable = Path.Combine(baseDir, Path.ChangeExtension(assemblyPath.Replace("\\", "/"), ".sh")); } - System.IO.Directory.CreateDirectory(reportBase + Path.GetDirectoryName(assemblyPath)); + System.IO.Directory.CreateDirectory(outputDir); ret = wrapper.RunTest(testExecutable, outputFile, errorFile, Assembly.GetEntryAssembly()!.FullName!, testBinaryBase, outputDir); } diff --git a/src/tests/Common/CoreCLRTestLibrary/Utilities.cs b/src/tests/Common/CoreCLRTestLibrary/Utilities.cs index 92f879051188af..ad4d5bac5d3f8f 100644 --- a/src/tests/Common/CoreCLRTestLibrary/Utilities.cs +++ b/src/tests/Common/CoreCLRTestLibrary/Utilities.cs @@ -101,6 +101,7 @@ public static bool IsWindowsIoTCore public static bool IsReflectionEmitSupported => true; #endif public static bool SupportsExceptionInterop => IsWindows && IsNotMonoRuntime && !IsNativeAot; // matches definitions in clr.featuredefines.props + public static bool IsGCStress => (Environment.GetEnvironmentVariable("COMPlus_GCStress") != null) || (Environment.GetEnvironmentVariable("DOTNET_GCStress") != null); public static string ByteArrayToString(byte[] bytes) { diff --git a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs index 91e7f8c461c196..23bbdc5ca48bf2 100644 --- a/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs +++ b/src/tests/Common/Coreclr.TestWrapper/CoreclrTestWrapperLib.cs @@ -61,7 +61,7 @@ public unsafe struct ProcessEntry32W public static extern bool Process32NextW(IntPtr snapshot, ref ProcessEntry32W entry); } - static class libproc + static class @libproc { [DllImport(nameof(libproc))] private static extern int proc_listchildpids(int ppid, int[] buffer, int byteSize); diff --git a/src/tests/Common/Directory.Build.targets b/src/tests/Common/Directory.Build.targets index 35a714d99aa1ac..4f31cd9fc7646c 100644 --- a/src/tests/Common/Directory.Build.targets +++ b/src/tests/Common/Directory.Build.targets @@ -31,7 +31,7 @@ DependsOnTargets="ResolveAssemblyReferences;ResolveRuntimeFilesFromLocalBuild"> - + @@ -171,16 +171,9 @@ - - - - - - - - - + + @@ -196,17 +189,6 @@ - - - - diff --git a/src/tests/Common/XHarnessRunnerLibrary/RunnerEntryPoint.cs b/src/tests/Common/XHarnessRunnerLibrary/RunnerEntryPoint.cs index 3a896f04f03412..4cbefd1589e9c5 100644 --- a/src/tests/Common/XHarnessRunnerLibrary/RunnerEntryPoint.cs +++ b/src/tests/Common/XHarnessRunnerLibrary/RunnerEntryPoint.cs @@ -96,11 +96,11 @@ public override string TestsResultsFinalPath { get { - string? publicDir = Environment.GetEnvironmentVariable("DOCSDIR"); - if (string.IsNullOrEmpty(publicDir)) - throw new ArgumentException("DOCSDIR should not be empty"); + string? testResultsDir = Environment.GetEnvironmentVariable("TEST_RESULTS_DIR"); + if (string.IsNullOrEmpty(testResultsDir)) + throw new ArgumentException("TEST_RESULTS_DIR should not be empty"); - return Path.Combine(publicDir, "testResults.xml"); + return Path.Combine(testResultsDir, "testResults.xml"); } } protected override IEnumerable GetTestAssemblies() => Array.Empty(); diff --git a/src/tests/Common/scripts/nativeaottest.cmd b/src/tests/Common/scripts/nativeaottest.cmd new file mode 100644 index 00000000000000..f189082edc6773 --- /dev/null +++ b/src/tests/Common/scripts/nativeaottest.cmd @@ -0,0 +1,15 @@ +@rem This script is a bridge that allows running NativeAOT compiled executables instead of using corerun. +@rem +@rem To use this script, set the CLRCustomTestLauncher environment variable to the full path of this script. +@rem +@rem The .cmd files of the individual tests will call this script to launch the test. +@rem This script gets the following arguments +@rem 1. Full path to the directory of the test binaries (the test .cmd file is in there) +@rem 2. Filename of the test executable +@rem 3. - n. Additional arguments that were passed to the test .cmd + +@rem File name of the test executable is the original assembly, so swap .dll for .exe +set __ExeFileName=%2 +set __ExeFileName=%__ExeFileName:~0,-4%.exe + +%_DebuggerFullPath% %1\native\%__ExeFileName% %3 %4 %5 %6 %7 %8 %9 diff --git a/src/tests/Common/scripts/nativeaottest.sh b/src/tests/Common/scripts/nativeaottest.sh new file mode 100755 index 00000000000000..c4c38fbd242b96 --- /dev/null +++ b/src/tests/Common/scripts/nativeaottest.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# This script is a bridge that allows running NativeAOT compiled executables instead of using corerun. +# +# To use this script, set the CLRCustomTestLauncher environment variable to the full path of this script. +# +# The .cmd files of the individual tests will call this script to launch the test. +# This script gets the following arguments +# 1. Full path to the directory of the test binaries (the test .sh file is in there) +# 2. Filename of the test executable +# 3. - n. Additional arguments that were passed to the test .sh + +exename=$(basename $2 .dll) +$_DebuggerFullPath $1/native/$exename "${@:3}" diff --git a/src/tests/Common/testenvironment.proj b/src/tests/Common/testenvironment.proj index aae081a1871265..97cfd88fb6ce00 100644 --- a/src/tests/Common/testenvironment.proj +++ b/src/tests/Common/testenvironment.proj @@ -63,6 +63,8 @@ COMPlus_JitRandomGuardedDevirtualization; COMPlus_JitRandomEdgeCounts; COMPlus_JitRandomOnStackReplacement; + COMPlus_JitForceControlFlowGuard; + COMPlus_JitCFGUseDispatcher; RunningIlasmRoundTrip @@ -195,6 +197,10 @@ + + + + diff --git a/src/tests/Directory.Build.targets b/src/tests/Directory.Build.targets index 6eda7ef53f14d1..0eaf8105c5c09e 100644 --- a/src/tests/Directory.Build.targets +++ b/src/tests/Directory.Build.targets @@ -12,7 +12,7 @@ true - Exe + Exe BuildAndRun BuildOnly 0 @@ -69,6 +69,10 @@ None + + + + @@ -249,6 +253,11 @@ Condition="'$(IsMergedTestRunnerAssembly)' == 'true'" File="$(OutputPath)\$(MSBuildProjectName).MergedTestAssembly" Lines="MergedTestAssembly" /> + + @@ -410,14 +419,14 @@ - + - - + + @@ -448,4 +457,40 @@ + + + $ORIGIN/.. + @executable_path/.. + + + true + + $(CoreCLRILCompilerDir) + $(CoreCLRILCompilerDir)netstandard/ILCompiler.Build.Tasks.dll + $(CoreCLRAotSdkDir) + $(MicrosoftNetCoreAppRuntimePackRidLibTfmDir) + $(MicrosoftNetCoreAppRuntimePackNativeDir) + $(OutputRid) + + true + true + $(IlcSdkPath) + + + true + false + <_UsingDefaultForHasRuntimeOutput>false + + + + + + + + diff --git a/src/tests/GC/API/GC/TotalMemory.csproj b/src/tests/GC/API/GC/TotalMemory.csproj index c98e67f9b1dcb7..27048c1d81d027 100644 --- a/src/tests/GC/API/GC/TotalMemory.csproj +++ b/src/tests/GC/API/GC/TotalMemory.csproj @@ -3,6 +3,10 @@ Exe 1 + + true diff --git a/src/tests/GC/API/GC/TotalMemory2.csproj b/src/tests/GC/API/GC/TotalMemory2.csproj index 05fccbfd27106a..eccd9b6b24523f 100644 --- a/src/tests/GC/API/GC/TotalMemory2.csproj +++ b/src/tests/GC/API/GC/TotalMemory2.csproj @@ -2,6 +2,10 @@ Exe 1 + + true diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_r.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_r.csproj index 9e5bb852c66c37..8124d4f14f7d33 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_r.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_r.csproj @@ -46,6 +46,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_ro.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_ro.csproj index 0f2b16160a2194..66ee5660a0f9f1 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_ro.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part2_ro.csproj @@ -46,6 +46,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_r.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_r.csproj index 437f1067d10762..0a5db075b14e71 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_r.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_r.csproj @@ -8,6 +8,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_ro.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_ro.csproj index 13580d32dfa23c..b967739de0e524 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_ro.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part3_ro.csproj @@ -8,6 +8,52 @@ True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_r.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_r.csproj index 143f9a5b8ecd05..10ec5b137683b9 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_r.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_r.csproj @@ -8,6 +8,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_ro.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_ro.csproj index 88cd888f12816d..754009ca65ed40 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_ro.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part4_ro.csproj @@ -8,6 +8,52 @@ True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,52 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_r.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_r.csproj index 39e343813daa39..9175e1f1047d1f 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_r.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_r.csproj @@ -8,6 +8,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,40 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_ro.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_ro.csproj index 66171e3eb6c9e1..fe864173832a36 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_ro.csproj +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part5_ro.csproj @@ -8,6 +8,52 @@ True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62,40 +108,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_r.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_r.csproj new file mode 100644 index 00000000000000..6d9e4362963e86 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_r.csproj @@ -0,0 +1,49 @@ + + + Exe + true + + + Embedded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_ro.csproj b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_ro.csproj new file mode 100644 index 00000000000000..226486a7c7cdd6 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/AdvSimd.Arm64_Part6_ro.csproj @@ -0,0 +1,49 @@ + + + Exe + true + + + Embedded + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Int32.cs new file mode 100644 index 00000000000000..f61ade4e143ca1 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64_Int32() + { + var test = new LoadPairScalarVector64_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64_Int32(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (Helpers.LoadPairScalar(firstOp, i) != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Single.cs new file mode 100644 index 00000000000000..0f9362df1652b7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64_Single() + { + var test = new LoadPairScalarVector64_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64_Single(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.SingleToInt32Bits(Helpers.LoadPairScalar(firstOp, i)) != BitConverter.SingleToInt32Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.UInt32.cs new file mode 100644 index 00000000000000..751a5b97646ea2 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64_UInt32() + { + var test = new LoadPairScalarVector64_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (Helpers.LoadPairScalar(firstOp, i) != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Int32.cs new file mode 100644 index 00000000000000..b44c071b7af205 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64NonTemporal_Int32() + { + var test = new LoadPairScalarVector64NonTemporal_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64NonTemporal_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64NonTemporal_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64NonTemporal_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64NonTemporal_Int32(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (Helpers.LoadPairScalar(firstOp, i) != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Single.cs new file mode 100644 index 00000000000000..c91dd43973d0a3 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64NonTemporal_Single() + { + var test = new LoadPairScalarVector64NonTemporal_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64NonTemporal_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64NonTemporal_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64NonTemporal_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64NonTemporal_Single(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.SingleToInt32Bits(Helpers.LoadPairScalar(firstOp, i)) != BitConverter.SingleToInt32Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.UInt32.cs new file mode 100644 index 00000000000000..f99e7e30dc1399 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairScalarVector64NonTemporal.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairScalarVector64NonTemporal_UInt32() + { + var test = new LoadPairScalarVector64NonTemporal_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairScalarVector64NonTemporal_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairScalarVector64NonTemporal_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairScalarVector64NonTemporal_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairScalarVector64NonTemporal_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairScalarVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (Helpers.LoadPairScalar(firstOp, i) != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairScalarVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Byte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Byte.cs new file mode 100644 index 00000000000000..d7a46dedb266ef --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Byte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Byte() + { + var test = new LoadPairVector128_Byte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Byte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Byte[] inArray, Byte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Byte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Byte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Byte); + private static readonly int Op1ElementCount = RetElementCount; + + private static Byte[] _data = new Byte[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Byte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetByte(); } + _dataTable = new DataTable(_data, new Byte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Byte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Byte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Byte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Byte(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Byte[] inArray = new Byte[Op1ElementCount]; + Byte[] outArray = new Byte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Byte[] firstOp, Byte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Double.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Double.cs new file mode 100644 index 00000000000000..3198050fa7201f --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Double.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Double() + { + var test = new LoadPairVector128_Double(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Double + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Double[] inArray, Double[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Double testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Double*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Double); + private static readonly int Op1ElementCount = RetElementCount; + + private static Double[] _data = new Double[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Double() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetDouble(); } + _dataTable = new DataTable(_data, new Double[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Double*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Double*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Double*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Double(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Double[] inArray = new Double[Op1ElementCount]; + Double[] outArray = new Double[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Double[] firstOp, Double[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int16.cs new file mode 100644 index 00000000000000..3480281b1f55c8 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Int16() + { + var test = new LoadPairVector128_Int16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Int16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int16[] inArray, Int16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Int16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Int16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int16); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int16[] _data = new Int16[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Int16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt16(); } + _dataTable = new DataTable(_data, new Int16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Int16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Int16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Int16(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int16[] inArray = new Int16[Op1ElementCount]; + Int16[] outArray = new Int16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int16[] firstOp, Int16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int32.cs new file mode 100644 index 00000000000000..9e31f9f8d9b4aa --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Int32() + { + var test = new LoadPairVector128_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Int32(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int64.cs new file mode 100644 index 00000000000000..200c1b3ceb4ab8 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Int64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Int64() + { + var test = new LoadPairVector128_Int64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Int64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int64[] inArray, Int64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Int64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Int64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int64); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int64[] _data = new Int64[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Int64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt64(); } + _dataTable = new DataTable(_data, new Int64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Int64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Int64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Int64(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int64[] inArray = new Int64[Op1ElementCount]; + Int64[] outArray = new Int64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int64[] firstOp, Int64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.SByte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.SByte.cs new file mode 100644 index 00000000000000..4dc099e5025598 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.SByte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_SByte() + { + var test = new LoadPairVector128_SByte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_SByte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(SByte[] inArray, SByte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_SByte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((SByte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(SByte); + private static readonly int Op1ElementCount = RetElementCount; + + private static SByte[] _data = new SByte[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_SByte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSByte(); } + _dataTable = new DataTable(_data, new SByte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((SByte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(SByte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(SByte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_SByte(); + test._fld = AdvSimd.Arm64.LoadPairVector128((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + SByte[] inArray = new SByte[Op1ElementCount]; + SByte[] outArray = new SByte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(SByte[] firstOp, SByte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Single.cs new file mode 100644 index 00000000000000..171d9e146b344d --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_Single() + { + var test = new LoadPairVector128_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_Single(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt16.cs new file mode 100644 index 00000000000000..3746c0d6b31c96 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_UInt16() + { + var test = new LoadPairVector128_UInt16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_UInt16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt16[] inArray, UInt16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_UInt16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((UInt16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt16); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt16[] _data = new UInt16[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_UInt16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt16(); } + _dataTable = new DataTable(_data, new UInt16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((UInt16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(UInt16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_UInt16(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt16[] inArray = new UInt16[Op1ElementCount]; + UInt16[] outArray = new UInt16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt16[] firstOp, UInt16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt32.cs new file mode 100644 index 00000000000000..a657cf7553c177 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_UInt32() + { + var test = new LoadPairVector128_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt64.cs new file mode 100644 index 00000000000000..150c2f07c952bd --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128.UInt64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128_UInt64() + { + var test = new LoadPairVector128_UInt64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128_UInt64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt64[] inArray, UInt64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128_UInt64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128((UInt64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt64); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt64[] _data = new UInt64[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128_UInt64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt64(); } + _dataTable = new DataTable(_data, new UInt64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128((UInt64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128), new Type[] { typeof(UInt64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128_UInt64(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt64[] inArray = new UInt64[Op1ElementCount]; + UInt64[] outArray = new UInt64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt64[] firstOp, UInt64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Byte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Byte.cs new file mode 100644 index 00000000000000..14f60e3313a0ef --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Byte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Byte() + { + var test = new LoadPairVector128NonTemporal_Byte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Byte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Byte[] inArray, Byte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Byte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Byte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Byte); + private static readonly int Op1ElementCount = RetElementCount; + + private static Byte[] _data = new Byte[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Byte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetByte(); } + _dataTable = new DataTable(_data, new Byte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Byte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Byte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Byte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Byte(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Byte[] inArray = new Byte[Op1ElementCount]; + Byte[] outArray = new Byte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Byte[] firstOp, Byte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Double.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Double.cs new file mode 100644 index 00000000000000..23c3f4aa72e2c1 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Double.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Double() + { + var test = new LoadPairVector128NonTemporal_Double(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Double + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Double[] inArray, Double[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Double testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Double*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Double); + private static readonly int Op1ElementCount = RetElementCount; + + private static Double[] _data = new Double[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Double() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetDouble(); } + _dataTable = new DataTable(_data, new Double[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Double*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Double*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Double*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Double(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Double[] inArray = new Double[Op1ElementCount]; + Double[] outArray = new Double[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Double[] firstOp, Double[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int16.cs new file mode 100644 index 00000000000000..fb8835f21329ba --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Int16() + { + var test = new LoadPairVector128NonTemporal_Int16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Int16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int16[] inArray, Int16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Int16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int16); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int16[] _data = new Int16[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Int16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt16(); } + _dataTable = new DataTable(_data, new Int16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Int16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Int16(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int16[] inArray = new Int16[Op1ElementCount]; + Int16[] outArray = new Int16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int16[] firstOp, Int16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int32.cs new file mode 100644 index 00000000000000..0189c3d27927f7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Int32() + { + var test = new LoadPairVector128NonTemporal_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Int32(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int64.cs new file mode 100644 index 00000000000000..98a35c6203f8e3 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Int64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Int64() + { + var test = new LoadPairVector128NonTemporal_Int64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Int64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int64[] inArray, Int64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Int64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Int64); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int64[] _data = new Int64[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Int64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt64(); } + _dataTable = new DataTable(_data, new Int64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Int64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Int64(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int64[] inArray = new Int64[Op1ElementCount]; + Int64[] outArray = new Int64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int64[] firstOp, Int64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.SByte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.SByte.cs new file mode 100644 index 00000000000000..d12edccb4bb4a2 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.SByte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_SByte() + { + var test = new LoadPairVector128NonTemporal_SByte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_SByte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(SByte[] inArray, SByte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_SByte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((SByte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(SByte); + private static readonly int Op1ElementCount = RetElementCount; + + private static SByte[] _data = new SByte[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_SByte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSByte(); } + _dataTable = new DataTable(_data, new SByte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((SByte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(SByte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(SByte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_SByte(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + SByte[] inArray = new SByte[Op1ElementCount]; + SByte[] outArray = new SByte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(SByte[] firstOp, SByte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Single.cs new file mode 100644 index 00000000000000..9ddfacf6f2e7b7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_Single() + { + var test = new LoadPairVector128NonTemporal_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_Single(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt16.cs new file mode 100644 index 00000000000000..9ae5fda62270df --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_UInt16() + { + var test = new LoadPairVector128NonTemporal_UInt16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_UInt16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt16[] inArray, UInt16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_UInt16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt16); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt16[] _data = new UInt16[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_UInt16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt16(); } + _dataTable = new DataTable(_data, new UInt16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(UInt16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_UInt16(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt16[] inArray = new UInt16[Op1ElementCount]; + UInt16[] outArray = new UInt16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt16[] firstOp, UInt16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt32.cs new file mode 100644 index 00000000000000..fd5787a0e4ef3d --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_UInt32() + { + var test = new LoadPairVector128NonTemporal_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt64.cs new file mode 100644 index 00000000000000..6ef1587e992651 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector128NonTemporal.UInt64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector128NonTemporal_UInt64() + { + var test = new LoadPairVector128NonTemporal_UInt64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector128NonTemporal_UInt64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt64[] inArray, UInt64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector128,Vector128) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector128NonTemporal_UInt64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 32; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector128,Vector128)>() / sizeof(UInt64); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt64[] _data = new UInt64[Op1ElementCount]; + + private static (Vector128,Vector128) _clsVar; + + private (Vector128,Vector128) _fld; + + private DataTable _dataTable; + + public LoadPairVector128NonTemporal_UInt64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt64(); } + _dataTable = new DataTable(_data, new UInt64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal), new Type[] { typeof(UInt64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector128,Vector128))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector128NonTemporal_UInt64(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector128NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt64[] inArray = new UInt64[Op1ElementCount]; + UInt64[] outArray = new UInt64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt64[] firstOp, UInt64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector128NonTemporal)}(Vector128): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Byte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Byte.cs new file mode 100644 index 00000000000000..4b1d9901d1ffe7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Byte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Byte() + { + var test = new LoadPairVector64_Byte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Byte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Byte[] inArray, Byte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Byte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Byte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Byte); + private static readonly int Op1ElementCount = RetElementCount; + + private static Byte[] _data = new Byte[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Byte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetByte(); } + _dataTable = new DataTable(_data, new Byte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Byte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Byte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Byte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Byte(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Byte[] inArray = new Byte[Op1ElementCount]; + Byte[] outArray = new Byte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Byte[] firstOp, Byte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Double.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Double.cs new file mode 100644 index 00000000000000..ea852b8af9eb13 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Double.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Double() + { + var test = new LoadPairVector64_Double(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Double + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Double[] inArray, Double[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Double testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Double*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Double); + private static readonly int Op1ElementCount = RetElementCount; + + private static Double[] _data = new Double[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Double() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetDouble(); } + _dataTable = new DataTable(_data, new Double[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Double*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Double*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Double*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Double(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Double[] inArray = new Double[Op1ElementCount]; + Double[] outArray = new Double[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Double[] firstOp, Double[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int16.cs new file mode 100644 index 00000000000000..dd68e9578706ba --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Int16() + { + var test = new LoadPairVector64_Int16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Int16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int16[] inArray, Int16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Int16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Int16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int16); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int16[] _data = new Int16[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Int16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt16(); } + _dataTable = new DataTable(_data, new Int16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Int16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Int16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Int16(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int16[] inArray = new Int16[Op1ElementCount]; + Int16[] outArray = new Int16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int16[] firstOp, Int16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int32.cs new file mode 100644 index 00000000000000..f376caad4ac896 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Int32() + { + var test = new LoadPairVector64_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Int32(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int64.cs new file mode 100644 index 00000000000000..d5f639384460c7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Int64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Int64() + { + var test = new LoadPairVector64_Int64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Int64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int64[] inArray, Int64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Int64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Int64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int64); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int64[] _data = new Int64[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Int64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt64(); } + _dataTable = new DataTable(_data, new Int64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Int64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Int64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Int64(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int64[] inArray = new Int64[Op1ElementCount]; + Int64[] outArray = new Int64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int64[] firstOp, Int64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.SByte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.SByte.cs new file mode 100644 index 00000000000000..c8598a39e0b0fc --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.SByte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_SByte() + { + var test = new LoadPairVector64_SByte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_SByte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(SByte[] inArray, SByte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_SByte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((SByte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(SByte); + private static readonly int Op1ElementCount = RetElementCount; + + private static SByte[] _data = new SByte[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_SByte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSByte(); } + _dataTable = new DataTable(_data, new SByte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((SByte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(SByte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(SByte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_SByte(); + test._fld = AdvSimd.Arm64.LoadPairVector64((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + SByte[] inArray = new SByte[Op1ElementCount]; + SByte[] outArray = new SByte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(SByte[] firstOp, SByte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Single.cs new file mode 100644 index 00000000000000..08a63a2204a8ab --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_Single() + { + var test = new LoadPairVector64_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_Single(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt16.cs new file mode 100644 index 00000000000000..4ce7d85467bcb2 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_UInt16() + { + var test = new LoadPairVector64_UInt16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_UInt16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt16[] inArray, UInt16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_UInt16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((UInt16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt16); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt16[] _data = new UInt16[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_UInt16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt16(); } + _dataTable = new DataTable(_data, new UInt16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((UInt16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(UInt16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_UInt16(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt16[] inArray = new UInt16[Op1ElementCount]; + UInt16[] outArray = new UInt16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt16[] firstOp, UInt16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt32.cs new file mode 100644 index 00000000000000..e14a2d73afca58 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_UInt32() + { + var test = new LoadPairVector64_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt64.cs new file mode 100644 index 00000000000000..c1b625b014be34 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64.UInt64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64_UInt64() + { + var test = new LoadPairVector64_UInt64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64_UInt64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt64[] inArray, UInt64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64_UInt64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64((UInt64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt64); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt64[] _data = new UInt64[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64_UInt64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt64(); } + _dataTable = new DataTable(_data, new UInt64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64((UInt64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64), new Type[] { typeof(UInt64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64_UInt64(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt64[] inArray = new UInt64[Op1ElementCount]; + UInt64[] outArray = new UInt64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt64[] firstOp, UInt64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Byte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Byte.cs new file mode 100644 index 00000000000000..b21feccc6be77e --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Byte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Byte() + { + var test = new LoadPairVector64NonTemporal_Byte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Byte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Byte[] inArray, Byte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Byte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Byte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Byte); + private static readonly int Op1ElementCount = RetElementCount; + + private static Byte[] _data = new Byte[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Byte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetByte(); } + _dataTable = new DataTable(_data, new Byte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Byte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Byte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Byte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Byte(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Byte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Byte[] inArray = new Byte[Op1ElementCount]; + Byte[] outArray = new Byte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Byte[] firstOp, Byte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Double.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Double.cs new file mode 100644 index 00000000000000..869a1bc9193d16 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Double.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Double() + { + var test = new LoadPairVector64NonTemporal_Double(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Double + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Double[] inArray, Double[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Double testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Double*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Double); + private static readonly int Op1ElementCount = RetElementCount; + + private static Double[] _data = new Double[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Double() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetDouble(); } + _dataTable = new DataTable(_data, new Double[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Double*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Double*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Double*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Double(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Double*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Double[] inArray = new Double[Op1ElementCount]; + Double[] outArray = new Double[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Double[] firstOp, Double[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int16.cs new file mode 100644 index 00000000000000..55f8607dee5a56 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Int16() + { + var test = new LoadPairVector64NonTemporal_Int16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Int16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int16[] inArray, Int16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Int16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int16); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int16[] _data = new Int16[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Int16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt16(); } + _dataTable = new DataTable(_data, new Int16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Int16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Int16(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int16[] inArray = new Int16[Op1ElementCount]; + Int16[] outArray = new Int16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int16[] firstOp, Int16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int32.cs new file mode 100644 index 00000000000000..0be358d7893771 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Int32() + { + var test = new LoadPairVector64NonTemporal_Int32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Int32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int32[] inArray, Int32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Int32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int32); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int32[] _data = new Int32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Int32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt32(); } + _dataTable = new DataTable(_data, new Int32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Int32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Int32(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int32[] inArray = new Int32[Op1ElementCount]; + Int32[] outArray = new Int32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int32[] firstOp, Int32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int64.cs new file mode 100644 index 00000000000000..d3ebcb54524fd7 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Int64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Int64() + { + var test = new LoadPairVector64NonTemporal_Int64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Int64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Int64[] inArray, Int64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Int64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Int64); + private static readonly int Op1ElementCount = RetElementCount; + + private static Int64[] _data = new Int64[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Int64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetInt64(); } + _dataTable = new DataTable(_data, new Int64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Int64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Int64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Int64(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Int64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Int64[] inArray = new Int64[Op1ElementCount]; + Int64[] outArray = new Int64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Int64[] firstOp, Int64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.SByte.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.SByte.cs new file mode 100644 index 00000000000000..6217ad0578db05 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.SByte.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_SByte() + { + var test = new LoadPairVector64NonTemporal_SByte(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_SByte + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(SByte[] inArray, SByte[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_SByte testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((SByte*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(SByte); + private static readonly int Op1ElementCount = RetElementCount; + + private static SByte[] _data = new SByte[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_SByte() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSByte(); } + _dataTable = new DataTable(_data, new SByte[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((SByte*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(SByte*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(SByte*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_SByte(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((SByte*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + SByte[] inArray = new SByte[Op1ElementCount]; + SByte[] outArray = new SByte[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(SByte[] firstOp, SByte[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Single.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Single.cs new file mode 100644 index 00000000000000..aa606388ff3369 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.Single.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_Single() + { + var test = new LoadPairVector64NonTemporal_Single(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_Single + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(Single[] inArray, Single[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_Single testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Single*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(Single); + private static readonly int Op1ElementCount = RetElementCount; + + private static Single[] _data = new Single[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_Single() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetSingle(); } + _dataTable = new DataTable(_data, new Single[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(Single*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(Single*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_Single(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((Single*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + Single[] inArray = new Single[Op1ElementCount]; + Single[] outArray = new Single[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(Single[] firstOp, Single[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt16.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt16.cs new file mode 100644 index 00000000000000..f8c2a25077ed24 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt16.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_UInt16() + { + var test = new LoadPairVector64NonTemporal_UInt16(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_UInt16 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt16[] inArray, UInt16[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_UInt16 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt16*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt16); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt16[] _data = new UInt16[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_UInt16() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt16(); } + _dataTable = new DataTable(_data, new UInt16[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(UInt16*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt16*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_UInt16(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt16*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt16[] inArray = new UInt16[Op1ElementCount]; + UInt16[] outArray = new UInt16[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt16[] firstOp, UInt16[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt32.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt32.cs new file mode 100644 index 00000000000000..b203fc8d2e1e55 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt32.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_UInt32() + { + var test = new LoadPairVector64NonTemporal_UInt32(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_UInt32 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt32[] inArray, UInt32[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_UInt32 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt32*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt32); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt32[] _data = new UInt32[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_UInt32() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt32(); } + _dataTable = new DataTable(_data, new UInt32[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(UInt32*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt32*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_UInt32(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt32*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt32[] inArray = new UInt32[Op1ElementCount]; + UInt32[] outArray = new UInt32[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt32[] firstOp, UInt32[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt64.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt64.cs new file mode 100644 index 00000000000000..5e1b68e8f212dc --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/LoadPairVector64NonTemporal.UInt64.cs @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void LoadPairVector64NonTemporal_UInt64() + { + var test = new LoadPairVector64NonTemporal_UInt64(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class LoadPairVector64NonTemporal_UInt64 + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable(UInt64[] inArray, UInt64[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public (Vector64,Vector64) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario(LoadPairVector64NonTemporal_UInt64 testClass) + { + _fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt64*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = 16; + private static readonly int RetElementCount = Unsafe.SizeOf<(Vector64,Vector64)>() / sizeof(UInt64); + private static readonly int Op1ElementCount = RetElementCount; + + private static UInt64[] _data = new UInt64[Op1ElementCount]; + + private static (Vector64,Vector64) _clsVar; + + private (Vector64,Vector64) _fld; + + private DataTable _dataTable; + + public LoadPairVector64NonTemporal_UInt64() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = TestLibrary.Generator.GetUInt64(); } + _dataTable = new DataTable(_data, new UInt64[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => AdvSimd.Arm64.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof(AdvSimd.Arm64).GetMethod(nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal), new Type[] { typeof(UInt64*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof(UInt64*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, ((Vector64,Vector64))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new LoadPairVector64NonTemporal_UInt64(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = AdvSimd.Arm64.LoadPairVector64NonTemporal((UInt64*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + UInt64[] inArray = new UInt64[Op1ElementCount]; + UInt64[] outArray = new UInt64[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult(UInt64[] firstOp, UInt64[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if (firstOp[i] != result[i]) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof(AdvSimd.Arm64)}.{nameof(AdvSimd.Arm64.LoadPairVector64NonTemporal)}(Vector64): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part2.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part2.cs index 29788e0053f174..f34c72ddcca819 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part2.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part2.cs @@ -49,6 +49,52 @@ static Program() ["LoadAndReplicateToVector128.Double"] = LoadAndReplicateToVector128_Double, ["LoadAndReplicateToVector128.Int64"] = LoadAndReplicateToVector128_Int64, ["LoadAndReplicateToVector128.UInt64"] = LoadAndReplicateToVector128_UInt64, + ["LoadPairScalarVector64.Int32"] = LoadPairScalarVector64_Int32, + ["LoadPairScalarVector64.Single"] = LoadPairScalarVector64_Single, + ["LoadPairScalarVector64.UInt32"] = LoadPairScalarVector64_UInt32, + ["LoadPairScalarVector64NonTemporal.Int32"] = LoadPairScalarVector64NonTemporal_Int32, + ["LoadPairScalarVector64NonTemporal.Single"] = LoadPairScalarVector64NonTemporal_Single, + ["LoadPairScalarVector64NonTemporal.UInt32"] = LoadPairScalarVector64NonTemporal_UInt32, + ["LoadPairVector64.Byte"] = LoadPairVector64_Byte, + ["LoadPairVector64.Double"] = LoadPairVector64_Double, + ["LoadPairVector64.Int16"] = LoadPairVector64_Int16, + ["LoadPairVector64.Int32"] = LoadPairVector64_Int32, + ["LoadPairVector64.Int64"] = LoadPairVector64_Int64, + ["LoadPairVector64.SByte"] = LoadPairVector64_SByte, + ["LoadPairVector64.Single"] = LoadPairVector64_Single, + ["LoadPairVector64.UInt16"] = LoadPairVector64_UInt16, + ["LoadPairVector64.UInt32"] = LoadPairVector64_UInt32, + ["LoadPairVector64.UInt64"] = LoadPairVector64_UInt64, + ["LoadPairVector64NonTemporal.Byte"] = LoadPairVector64NonTemporal_Byte, + ["LoadPairVector64NonTemporal.Double"] = LoadPairVector64NonTemporal_Double, + ["LoadPairVector64NonTemporal.Int16"] = LoadPairVector64NonTemporal_Int16, + ["LoadPairVector64NonTemporal.Int32"] = LoadPairVector64NonTemporal_Int32, + ["LoadPairVector64NonTemporal.Int64"] = LoadPairVector64NonTemporal_Int64, + ["LoadPairVector64NonTemporal.SByte"] = LoadPairVector64NonTemporal_SByte, + ["LoadPairVector64NonTemporal.Single"] = LoadPairVector64NonTemporal_Single, + ["LoadPairVector64NonTemporal.UInt16"] = LoadPairVector64NonTemporal_UInt16, + ["LoadPairVector64NonTemporal.UInt32"] = LoadPairVector64NonTemporal_UInt32, + ["LoadPairVector64NonTemporal.UInt64"] = LoadPairVector64NonTemporal_UInt64, + ["LoadPairVector128.Byte"] = LoadPairVector128_Byte, + ["LoadPairVector128.Double"] = LoadPairVector128_Double, + ["LoadPairVector128.Int16"] = LoadPairVector128_Int16, + ["LoadPairVector128.Int32"] = LoadPairVector128_Int32, + ["LoadPairVector128.Int64"] = LoadPairVector128_Int64, + ["LoadPairVector128.SByte"] = LoadPairVector128_SByte, + ["LoadPairVector128.Single"] = LoadPairVector128_Single, + ["LoadPairVector128.UInt16"] = LoadPairVector128_UInt16, + ["LoadPairVector128.UInt32"] = LoadPairVector128_UInt32, + ["LoadPairVector128.UInt64"] = LoadPairVector128_UInt64, + ["LoadPairVector128NonTemporal.Byte"] = LoadPairVector128NonTemporal_Byte, + ["LoadPairVector128NonTemporal.Double"] = LoadPairVector128NonTemporal_Double, + ["LoadPairVector128NonTemporal.Int16"] = LoadPairVector128NonTemporal_Int16, + ["LoadPairVector128NonTemporal.Int32"] = LoadPairVector128NonTemporal_Int32, + ["LoadPairVector128NonTemporal.Int64"] = LoadPairVector128NonTemporal_Int64, + ["LoadPairVector128NonTemporal.SByte"] = LoadPairVector128NonTemporal_SByte, + ["LoadPairVector128NonTemporal.Single"] = LoadPairVector128NonTemporal_Single, + ["LoadPairVector128NonTemporal.UInt16"] = LoadPairVector128NonTemporal_UInt16, + ["LoadPairVector128NonTemporal.UInt32"] = LoadPairVector128NonTemporal_UInt32, + ["LoadPairVector128NonTemporal.UInt64"] = LoadPairVector128NonTemporal_UInt64, ["Max.Vector128.Double"] = Max_Vector128_Double, ["MaxAcross.Vector64.Byte"] = MaxAcross_Vector64_Byte, ["MaxAcross.Vector64.Int16"] = MaxAcross_Vector64_Int16, @@ -65,52 +111,6 @@ static Program() ["MaxNumberAcross.Vector128.Single"] = MaxNumberAcross_Vector128_Single, ["MaxNumberPairwise.Vector64.Single"] = MaxNumberPairwise_Vector64_Single, ["MaxNumberPairwise.Vector128.Double"] = MaxNumberPairwise_Vector128_Double, - ["MaxNumberPairwise.Vector128.Single"] = MaxNumberPairwise_Vector128_Single, - ["MaxNumberPairwiseScalar.Vector64.Single"] = MaxNumberPairwiseScalar_Vector64_Single, - ["MaxNumberPairwiseScalar.Vector128.Double"] = MaxNumberPairwiseScalar_Vector128_Double, - ["MaxPairwise.Vector128.Byte"] = MaxPairwise_Vector128_Byte, - ["MaxPairwise.Vector128.Double"] = MaxPairwise_Vector128_Double, - ["MaxPairwise.Vector128.Int16"] = MaxPairwise_Vector128_Int16, - ["MaxPairwise.Vector128.Int32"] = MaxPairwise_Vector128_Int32, - ["MaxPairwise.Vector128.SByte"] = MaxPairwise_Vector128_SByte, - ["MaxPairwise.Vector128.Single"] = MaxPairwise_Vector128_Single, - ["MaxPairwise.Vector128.UInt16"] = MaxPairwise_Vector128_UInt16, - ["MaxPairwise.Vector128.UInt32"] = MaxPairwise_Vector128_UInt32, - ["MaxPairwiseScalar.Vector64.Single"] = MaxPairwiseScalar_Vector64_Single, - ["MaxPairwiseScalar.Vector128.Double"] = MaxPairwiseScalar_Vector128_Double, - ["MaxScalar.Vector64.Double"] = MaxScalar_Vector64_Double, - ["MaxScalar.Vector64.Single"] = MaxScalar_Vector64_Single, - ["Min.Vector128.Double"] = Min_Vector128_Double, - ["MinAcross.Vector64.Byte"] = MinAcross_Vector64_Byte, - ["MinAcross.Vector64.Int16"] = MinAcross_Vector64_Int16, - ["MinAcross.Vector64.SByte"] = MinAcross_Vector64_SByte, - ["MinAcross.Vector64.UInt16"] = MinAcross_Vector64_UInt16, - ["MinAcross.Vector128.Byte"] = MinAcross_Vector128_Byte, - ["MinAcross.Vector128.Int16"] = MinAcross_Vector128_Int16, - ["MinAcross.Vector128.Int32"] = MinAcross_Vector128_Int32, - ["MinAcross.Vector128.SByte"] = MinAcross_Vector128_SByte, - ["MinAcross.Vector128.Single"] = MinAcross_Vector128_Single, - ["MinAcross.Vector128.UInt16"] = MinAcross_Vector128_UInt16, - ["MinAcross.Vector128.UInt32"] = MinAcross_Vector128_UInt32, - ["MinNumber.Vector128.Double"] = MinNumber_Vector128_Double, - ["MinNumberAcross.Vector128.Single"] = MinNumberAcross_Vector128_Single, - ["MinNumberPairwise.Vector64.Single"] = MinNumberPairwise_Vector64_Single, - ["MinNumberPairwise.Vector128.Double"] = MinNumberPairwise_Vector128_Double, - ["MinNumberPairwise.Vector128.Single"] = MinNumberPairwise_Vector128_Single, - ["MinNumberPairwiseScalar.Vector64.Single"] = MinNumberPairwiseScalar_Vector64_Single, - ["MinNumberPairwiseScalar.Vector128.Double"] = MinNumberPairwiseScalar_Vector128_Double, - ["MinPairwise.Vector128.Byte"] = MinPairwise_Vector128_Byte, - ["MinPairwise.Vector128.Double"] = MinPairwise_Vector128_Double, - ["MinPairwise.Vector128.Int16"] = MinPairwise_Vector128_Int16, - ["MinPairwise.Vector128.Int32"] = MinPairwise_Vector128_Int32, - ["MinPairwise.Vector128.SByte"] = MinPairwise_Vector128_SByte, - ["MinPairwise.Vector128.Single"] = MinPairwise_Vector128_Single, - ["MinPairwise.Vector128.UInt16"] = MinPairwise_Vector128_UInt16, - ["MinPairwise.Vector128.UInt32"] = MinPairwise_Vector128_UInt32, - ["MinPairwiseScalar.Vector64.Single"] = MinPairwiseScalar_Vector64_Single, - ["MinPairwiseScalar.Vector128.Double"] = MinPairwiseScalar_Vector128_Double, - ["MinScalar.Vector64.Double"] = MinScalar_Vector64_Double, - ["MinScalar.Vector64.Single"] = MinScalar_Vector64_Single, }; } } diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part3.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part3.cs index c7c238a050d7bb..77c36bd700a5d9 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part3.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part3.cs @@ -11,6 +11,52 @@ public static partial class Program static Program() { TestList = new Dictionary() { + ["MaxNumberPairwise.Vector128.Single"] = MaxNumberPairwise_Vector128_Single, + ["MaxNumberPairwiseScalar.Vector64.Single"] = MaxNumberPairwiseScalar_Vector64_Single, + ["MaxNumberPairwiseScalar.Vector128.Double"] = MaxNumberPairwiseScalar_Vector128_Double, + ["MaxPairwise.Vector128.Byte"] = MaxPairwise_Vector128_Byte, + ["MaxPairwise.Vector128.Double"] = MaxPairwise_Vector128_Double, + ["MaxPairwise.Vector128.Int16"] = MaxPairwise_Vector128_Int16, + ["MaxPairwise.Vector128.Int32"] = MaxPairwise_Vector128_Int32, + ["MaxPairwise.Vector128.SByte"] = MaxPairwise_Vector128_SByte, + ["MaxPairwise.Vector128.Single"] = MaxPairwise_Vector128_Single, + ["MaxPairwise.Vector128.UInt16"] = MaxPairwise_Vector128_UInt16, + ["MaxPairwise.Vector128.UInt32"] = MaxPairwise_Vector128_UInt32, + ["MaxPairwiseScalar.Vector64.Single"] = MaxPairwiseScalar_Vector64_Single, + ["MaxPairwiseScalar.Vector128.Double"] = MaxPairwiseScalar_Vector128_Double, + ["MaxScalar.Vector64.Double"] = MaxScalar_Vector64_Double, + ["MaxScalar.Vector64.Single"] = MaxScalar_Vector64_Single, + ["Min.Vector128.Double"] = Min_Vector128_Double, + ["MinAcross.Vector64.Byte"] = MinAcross_Vector64_Byte, + ["MinAcross.Vector64.Int16"] = MinAcross_Vector64_Int16, + ["MinAcross.Vector64.SByte"] = MinAcross_Vector64_SByte, + ["MinAcross.Vector64.UInt16"] = MinAcross_Vector64_UInt16, + ["MinAcross.Vector128.Byte"] = MinAcross_Vector128_Byte, + ["MinAcross.Vector128.Int16"] = MinAcross_Vector128_Int16, + ["MinAcross.Vector128.Int32"] = MinAcross_Vector128_Int32, + ["MinAcross.Vector128.SByte"] = MinAcross_Vector128_SByte, + ["MinAcross.Vector128.Single"] = MinAcross_Vector128_Single, + ["MinAcross.Vector128.UInt16"] = MinAcross_Vector128_UInt16, + ["MinAcross.Vector128.UInt32"] = MinAcross_Vector128_UInt32, + ["MinNumber.Vector128.Double"] = MinNumber_Vector128_Double, + ["MinNumberAcross.Vector128.Single"] = MinNumberAcross_Vector128_Single, + ["MinNumberPairwise.Vector64.Single"] = MinNumberPairwise_Vector64_Single, + ["MinNumberPairwise.Vector128.Double"] = MinNumberPairwise_Vector128_Double, + ["MinNumberPairwise.Vector128.Single"] = MinNumberPairwise_Vector128_Single, + ["MinNumberPairwiseScalar.Vector64.Single"] = MinNumberPairwiseScalar_Vector64_Single, + ["MinNumberPairwiseScalar.Vector128.Double"] = MinNumberPairwiseScalar_Vector128_Double, + ["MinPairwise.Vector128.Byte"] = MinPairwise_Vector128_Byte, + ["MinPairwise.Vector128.Double"] = MinPairwise_Vector128_Double, + ["MinPairwise.Vector128.Int16"] = MinPairwise_Vector128_Int16, + ["MinPairwise.Vector128.Int32"] = MinPairwise_Vector128_Int32, + ["MinPairwise.Vector128.SByte"] = MinPairwise_Vector128_SByte, + ["MinPairwise.Vector128.Single"] = MinPairwise_Vector128_Single, + ["MinPairwise.Vector128.UInt16"] = MinPairwise_Vector128_UInt16, + ["MinPairwise.Vector128.UInt32"] = MinPairwise_Vector128_UInt32, + ["MinPairwiseScalar.Vector64.Single"] = MinPairwiseScalar_Vector64_Single, + ["MinPairwiseScalar.Vector128.Double"] = MinPairwiseScalar_Vector128_Double, + ["MinScalar.Vector64.Double"] = MinScalar_Vector64_Double, + ["MinScalar.Vector64.Single"] = MinScalar_Vector64_Single, ["Multiply.Vector128.Double"] = Multiply_Vector128_Double, ["MultiplyByScalar.Vector128.Double"] = MultiplyByScalar_Vector128_Double, ["MultiplyBySelectedScalar.Vector128.Double.Vector128.Double.1"] = MultiplyBySelectedScalar_Vector128_Double_Vector128_Double_1, @@ -65,52 +111,6 @@ static Program() ["NegateScalar.Vector64.Int64"] = NegateScalar_Vector64_Int64, ["ReciprocalEstimate.Vector128.Double"] = ReciprocalEstimate_Vector128_Double, ["ReciprocalEstimateScalar.Vector64.Double"] = ReciprocalEstimateScalar_Vector64_Double, - ["ReciprocalEstimateScalar.Vector64.Single"] = ReciprocalEstimateScalar_Vector64_Single, - ["ReciprocalExponentScalar.Vector64.Double"] = ReciprocalExponentScalar_Vector64_Double, - ["ReciprocalExponentScalar.Vector64.Single"] = ReciprocalExponentScalar_Vector64_Single, - ["ReciprocalSquareRootEstimate.Vector128.Double"] = ReciprocalSquareRootEstimate_Vector128_Double, - ["ReciprocalSquareRootEstimateScalar.Vector64.Double"] = ReciprocalSquareRootEstimateScalar_Vector64_Double, - ["ReciprocalSquareRootEstimateScalar.Vector64.Single"] = ReciprocalSquareRootEstimateScalar_Vector64_Single, - ["ReciprocalSquareRootStep.Vector128.Double"] = ReciprocalSquareRootStep_Vector128_Double, - ["ReciprocalSquareRootStepScalar.Vector64.Double"] = ReciprocalSquareRootStepScalar_Vector64_Double, - ["ReciprocalSquareRootStepScalar.Vector64.Single"] = ReciprocalSquareRootStepScalar_Vector64_Single, - ["ReciprocalStep.Vector128.Double"] = ReciprocalStep_Vector128_Double, - ["ReciprocalStepScalar.Vector64.Double"] = ReciprocalStepScalar_Vector64_Double, - ["ReciprocalStepScalar.Vector64.Single"] = ReciprocalStepScalar_Vector64_Single, - ["ReverseElementBits.Vector128.Byte"] = ReverseElementBits_Vector128_Byte, - ["ReverseElementBits.Vector128.SByte"] = ReverseElementBits_Vector128_SByte, - ["ReverseElementBits.Vector64.Byte"] = ReverseElementBits_Vector64_Byte, - ["ReverseElementBits.Vector64.SByte"] = ReverseElementBits_Vector64_SByte, - ["RoundAwayFromZero.Vector128.Double"] = RoundAwayFromZero_Vector128_Double, - ["RoundToNearest.Vector128.Double"] = RoundToNearest_Vector128_Double, - ["RoundToNegativeInfinity.Vector128.Double"] = RoundToNegativeInfinity_Vector128_Double, - ["RoundToPositiveInfinity.Vector128.Double"] = RoundToPositiveInfinity_Vector128_Double, - ["RoundToZero.Vector128.Double"] = RoundToZero_Vector128_Double, - ["ShiftArithmeticRoundedSaturateScalar.Vector64.Int16"] = ShiftArithmeticRoundedSaturateScalar_Vector64_Int16, - ["ShiftArithmeticRoundedSaturateScalar.Vector64.Int32"] = ShiftArithmeticRoundedSaturateScalar_Vector64_Int32, - ["ShiftArithmeticRoundedSaturateScalar.Vector64.SByte"] = ShiftArithmeticRoundedSaturateScalar_Vector64_SByte, - ["ShiftArithmeticSaturateScalar.Vector64.Int16"] = ShiftArithmeticSaturateScalar_Vector64_Int16, - ["ShiftArithmeticSaturateScalar.Vector64.Int32"] = ShiftArithmeticSaturateScalar_Vector64_Int32, - ["ShiftArithmeticSaturateScalar.Vector64.SByte"] = ShiftArithmeticSaturateScalar_Vector64_SByte, - ["ShiftLeftLogicalSaturateScalar.Vector64.Byte.7"] = ShiftLeftLogicalSaturateScalar_Vector64_Byte_7, - ["ShiftLeftLogicalSaturateScalar.Vector64.Int16.15"] = ShiftLeftLogicalSaturateScalar_Vector64_Int16_15, - ["ShiftLeftLogicalSaturateScalar.Vector64.Int32.31"] = ShiftLeftLogicalSaturateScalar_Vector64_Int32_31, - ["ShiftLeftLogicalSaturateScalar.Vector64.SByte.1"] = ShiftLeftLogicalSaturateScalar_Vector64_SByte_1, - ["ShiftLeftLogicalSaturateScalar.Vector64.UInt16.1"] = ShiftLeftLogicalSaturateScalar_Vector64_UInt16_1, - ["ShiftLeftLogicalSaturateScalar.Vector64.UInt32.1"] = ShiftLeftLogicalSaturateScalar_Vector64_UInt32_1, - ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.Int16.5"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_Int16_5, - ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.Int32.7"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_Int32_7, - ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.SByte.3"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_SByte_3, - ["ShiftLogicalRoundedSaturateScalar.Vector64.Byte"] = ShiftLogicalRoundedSaturateScalar_Vector64_Byte, - ["ShiftLogicalRoundedSaturateScalar.Vector64.Int16"] = ShiftLogicalRoundedSaturateScalar_Vector64_Int16, - ["ShiftLogicalRoundedSaturateScalar.Vector64.Int32"] = ShiftLogicalRoundedSaturateScalar_Vector64_Int32, - ["ShiftLogicalRoundedSaturateScalar.Vector64.SByte"] = ShiftLogicalRoundedSaturateScalar_Vector64_SByte, - ["ShiftLogicalRoundedSaturateScalar.Vector64.UInt16"] = ShiftLogicalRoundedSaturateScalar_Vector64_UInt16, - ["ShiftLogicalRoundedSaturateScalar.Vector64.UInt32"] = ShiftLogicalRoundedSaturateScalar_Vector64_UInt32, - ["ShiftLogicalSaturateScalar.Vector64.Byte"] = ShiftLogicalSaturateScalar_Vector64_Byte, - ["ShiftLogicalSaturateScalar.Vector64.Int16"] = ShiftLogicalSaturateScalar_Vector64_Int16, - ["ShiftLogicalSaturateScalar.Vector64.Int32"] = ShiftLogicalSaturateScalar_Vector64_Int32, - ["ShiftLogicalSaturateScalar.Vector64.SByte"] = ShiftLogicalSaturateScalar_Vector64_SByte, }; } } diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part4.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part4.cs index af2a7dcb3c8a06..7f93b00e0ba06f 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part4.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part4.cs @@ -11,6 +11,52 @@ public static partial class Program static Program() { TestList = new Dictionary() { + ["ReciprocalEstimateScalar.Vector64.Single"] = ReciprocalEstimateScalar_Vector64_Single, + ["ReciprocalExponentScalar.Vector64.Double"] = ReciprocalExponentScalar_Vector64_Double, + ["ReciprocalExponentScalar.Vector64.Single"] = ReciprocalExponentScalar_Vector64_Single, + ["ReciprocalSquareRootEstimate.Vector128.Double"] = ReciprocalSquareRootEstimate_Vector128_Double, + ["ReciprocalSquareRootEstimateScalar.Vector64.Double"] = ReciprocalSquareRootEstimateScalar_Vector64_Double, + ["ReciprocalSquareRootEstimateScalar.Vector64.Single"] = ReciprocalSquareRootEstimateScalar_Vector64_Single, + ["ReciprocalSquareRootStep.Vector128.Double"] = ReciprocalSquareRootStep_Vector128_Double, + ["ReciprocalSquareRootStepScalar.Vector64.Double"] = ReciprocalSquareRootStepScalar_Vector64_Double, + ["ReciprocalSquareRootStepScalar.Vector64.Single"] = ReciprocalSquareRootStepScalar_Vector64_Single, + ["ReciprocalStep.Vector128.Double"] = ReciprocalStep_Vector128_Double, + ["ReciprocalStepScalar.Vector64.Double"] = ReciprocalStepScalar_Vector64_Double, + ["ReciprocalStepScalar.Vector64.Single"] = ReciprocalStepScalar_Vector64_Single, + ["ReverseElementBits.Vector128.Byte"] = ReverseElementBits_Vector128_Byte, + ["ReverseElementBits.Vector128.SByte"] = ReverseElementBits_Vector128_SByte, + ["ReverseElementBits.Vector64.Byte"] = ReverseElementBits_Vector64_Byte, + ["ReverseElementBits.Vector64.SByte"] = ReverseElementBits_Vector64_SByte, + ["RoundAwayFromZero.Vector128.Double"] = RoundAwayFromZero_Vector128_Double, + ["RoundToNearest.Vector128.Double"] = RoundToNearest_Vector128_Double, + ["RoundToNegativeInfinity.Vector128.Double"] = RoundToNegativeInfinity_Vector128_Double, + ["RoundToPositiveInfinity.Vector128.Double"] = RoundToPositiveInfinity_Vector128_Double, + ["RoundToZero.Vector128.Double"] = RoundToZero_Vector128_Double, + ["ShiftArithmeticRoundedSaturateScalar.Vector64.Int16"] = ShiftArithmeticRoundedSaturateScalar_Vector64_Int16, + ["ShiftArithmeticRoundedSaturateScalar.Vector64.Int32"] = ShiftArithmeticRoundedSaturateScalar_Vector64_Int32, + ["ShiftArithmeticRoundedSaturateScalar.Vector64.SByte"] = ShiftArithmeticRoundedSaturateScalar_Vector64_SByte, + ["ShiftArithmeticSaturateScalar.Vector64.Int16"] = ShiftArithmeticSaturateScalar_Vector64_Int16, + ["ShiftArithmeticSaturateScalar.Vector64.Int32"] = ShiftArithmeticSaturateScalar_Vector64_Int32, + ["ShiftArithmeticSaturateScalar.Vector64.SByte"] = ShiftArithmeticSaturateScalar_Vector64_SByte, + ["ShiftLeftLogicalSaturateScalar.Vector64.Byte.7"] = ShiftLeftLogicalSaturateScalar_Vector64_Byte_7, + ["ShiftLeftLogicalSaturateScalar.Vector64.Int16.15"] = ShiftLeftLogicalSaturateScalar_Vector64_Int16_15, + ["ShiftLeftLogicalSaturateScalar.Vector64.Int32.31"] = ShiftLeftLogicalSaturateScalar_Vector64_Int32_31, + ["ShiftLeftLogicalSaturateScalar.Vector64.SByte.1"] = ShiftLeftLogicalSaturateScalar_Vector64_SByte_1, + ["ShiftLeftLogicalSaturateScalar.Vector64.UInt16.1"] = ShiftLeftLogicalSaturateScalar_Vector64_UInt16_1, + ["ShiftLeftLogicalSaturateScalar.Vector64.UInt32.1"] = ShiftLeftLogicalSaturateScalar_Vector64_UInt32_1, + ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.Int16.5"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_Int16_5, + ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.Int32.7"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_Int32_7, + ["ShiftLeftLogicalSaturateUnsignedScalar.Vector64.SByte.3"] = ShiftLeftLogicalSaturateUnsignedScalar_Vector64_SByte_3, + ["ShiftLogicalRoundedSaturateScalar.Vector64.Byte"] = ShiftLogicalRoundedSaturateScalar_Vector64_Byte, + ["ShiftLogicalRoundedSaturateScalar.Vector64.Int16"] = ShiftLogicalRoundedSaturateScalar_Vector64_Int16, + ["ShiftLogicalRoundedSaturateScalar.Vector64.Int32"] = ShiftLogicalRoundedSaturateScalar_Vector64_Int32, + ["ShiftLogicalRoundedSaturateScalar.Vector64.SByte"] = ShiftLogicalRoundedSaturateScalar_Vector64_SByte, + ["ShiftLogicalRoundedSaturateScalar.Vector64.UInt16"] = ShiftLogicalRoundedSaturateScalar_Vector64_UInt16, + ["ShiftLogicalRoundedSaturateScalar.Vector64.UInt32"] = ShiftLogicalRoundedSaturateScalar_Vector64_UInt32, + ["ShiftLogicalSaturateScalar.Vector64.Byte"] = ShiftLogicalSaturateScalar_Vector64_Byte, + ["ShiftLogicalSaturateScalar.Vector64.Int16"] = ShiftLogicalSaturateScalar_Vector64_Int16, + ["ShiftLogicalSaturateScalar.Vector64.Int32"] = ShiftLogicalSaturateScalar_Vector64_Int32, + ["ShiftLogicalSaturateScalar.Vector64.SByte"] = ShiftLogicalSaturateScalar_Vector64_SByte, ["ShiftLogicalSaturateScalar.Vector64.UInt16"] = ShiftLogicalSaturateScalar_Vector64_UInt16, ["ShiftLogicalSaturateScalar.Vector64.UInt32"] = ShiftLogicalSaturateScalar_Vector64_UInt32, ["ShiftRightArithmeticNarrowingSaturateScalar.Vector64.Int16.16"] = ShiftRightArithmeticNarrowingSaturateScalar_Vector64_Int16_16, @@ -65,52 +111,6 @@ static Program() ["StorePairScalar.Vector64.UInt32"] = StorePairScalar_Vector64_UInt32, ["StorePairScalarNonTemporal.Vector64.Int32"] = StorePairScalarNonTemporal_Vector64_Int32, ["StorePairScalarNonTemporal.Vector64.Single"] = StorePairScalarNonTemporal_Vector64_Single, - ["StorePairScalarNonTemporal.Vector64.UInt32"] = StorePairScalarNonTemporal_Vector64_UInt32, - ["StorePairNonTemporal.Vector64.Byte"] = StorePairNonTemporal_Vector64_Byte, - ["StorePairNonTemporal.Vector64.Double"] = StorePairNonTemporal_Vector64_Double, - ["StorePairNonTemporal.Vector64.Int16"] = StorePairNonTemporal_Vector64_Int16, - ["StorePairNonTemporal.Vector64.Int32"] = StorePairNonTemporal_Vector64_Int32, - ["StorePairNonTemporal.Vector64.Int64"] = StorePairNonTemporal_Vector64_Int64, - ["StorePairNonTemporal.Vector64.SByte"] = StorePairNonTemporal_Vector64_SByte, - ["StorePairNonTemporal.Vector64.Single"] = StorePairNonTemporal_Vector64_Single, - ["StorePairNonTemporal.Vector64.UInt16"] = StorePairNonTemporal_Vector64_UInt16, - ["StorePairNonTemporal.Vector64.UInt32"] = StorePairNonTemporal_Vector64_UInt32, - ["StorePairNonTemporal.Vector64.UInt64"] = StorePairNonTemporal_Vector64_UInt64, - ["StorePairNonTemporal.Vector128.Byte"] = StorePairNonTemporal_Vector128_Byte, - ["StorePairNonTemporal.Vector128.Double"] = StorePairNonTemporal_Vector128_Double, - ["StorePairNonTemporal.Vector128.Int16"] = StorePairNonTemporal_Vector128_Int16, - ["StorePairNonTemporal.Vector128.Int32"] = StorePairNonTemporal_Vector128_Int32, - ["StorePairNonTemporal.Vector128.Int64"] = StorePairNonTemporal_Vector128_Int64, - ["StorePairNonTemporal.Vector128.SByte"] = StorePairNonTemporal_Vector128_SByte, - ["StorePairNonTemporal.Vector128.Single"] = StorePairNonTemporal_Vector128_Single, - ["StorePairNonTemporal.Vector128.UInt16"] = StorePairNonTemporal_Vector128_UInt16, - ["StorePairNonTemporal.Vector128.UInt32"] = StorePairNonTemporal_Vector128_UInt32, - ["StorePairNonTemporal.Vector128.UInt64"] = StorePairNonTemporal_Vector128_UInt64, - ["Subtract.Vector128.Double"] = Subtract_Vector128_Double, - ["SubtractSaturateScalar.Vector64.Byte"] = SubtractSaturateScalar_Vector64_Byte, - ["SubtractSaturateScalar.Vector64.Int16"] = SubtractSaturateScalar_Vector64_Int16, - ["SubtractSaturateScalar.Vector64.Int32"] = SubtractSaturateScalar_Vector64_Int32, - ["SubtractSaturateScalar.Vector64.SByte"] = SubtractSaturateScalar_Vector64_SByte, - ["SubtractSaturateScalar.Vector64.UInt16"] = SubtractSaturateScalar_Vector64_UInt16, - ["SubtractSaturateScalar.Vector64.UInt32"] = SubtractSaturateScalar_Vector64_UInt32, - ["TransposeEven.Vector64.Byte"] = TransposeEven_Vector64_Byte, - ["TransposeEven.Vector64.Int16"] = TransposeEven_Vector64_Int16, - ["TransposeEven.Vector64.Int32"] = TransposeEven_Vector64_Int32, - ["TransposeEven.Vector64.SByte"] = TransposeEven_Vector64_SByte, - ["TransposeEven.Vector64.Single"] = TransposeEven_Vector64_Single, - ["TransposeEven.Vector64.UInt16"] = TransposeEven_Vector64_UInt16, - ["TransposeEven.Vector64.UInt32"] = TransposeEven_Vector64_UInt32, - ["TransposeEven.Vector128.Byte"] = TransposeEven_Vector128_Byte, - ["TransposeEven.Vector128.Double"] = TransposeEven_Vector128_Double, - ["TransposeEven.Vector128.Int16"] = TransposeEven_Vector128_Int16, - ["TransposeEven.Vector128.Int32"] = TransposeEven_Vector128_Int32, - ["TransposeEven.Vector128.Int64"] = TransposeEven_Vector128_Int64, - ["TransposeEven.Vector128.SByte"] = TransposeEven_Vector128_SByte, - ["TransposeEven.Vector128.Single"] = TransposeEven_Vector128_Single, - ["TransposeEven.Vector128.UInt16"] = TransposeEven_Vector128_UInt16, - ["TransposeEven.Vector128.UInt32"] = TransposeEven_Vector128_UInt32, - ["TransposeEven.Vector128.UInt64"] = TransposeEven_Vector128_UInt64, - ["TransposeOdd.Vector64.Byte"] = TransposeOdd_Vector64_Byte, }; } } diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part5.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part5.cs index ce885756d0e364..13cb36890d5616 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part5.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part5.cs @@ -11,6 +11,52 @@ public static partial class Program static Program() { TestList = new Dictionary() { + ["StorePairScalarNonTemporal.Vector64.UInt32"] = StorePairScalarNonTemporal_Vector64_UInt32, + ["StorePairNonTemporal.Vector64.Byte"] = StorePairNonTemporal_Vector64_Byte, + ["StorePairNonTemporal.Vector64.Double"] = StorePairNonTemporal_Vector64_Double, + ["StorePairNonTemporal.Vector64.Int16"] = StorePairNonTemporal_Vector64_Int16, + ["StorePairNonTemporal.Vector64.Int32"] = StorePairNonTemporal_Vector64_Int32, + ["StorePairNonTemporal.Vector64.Int64"] = StorePairNonTemporal_Vector64_Int64, + ["StorePairNonTemporal.Vector64.SByte"] = StorePairNonTemporal_Vector64_SByte, + ["StorePairNonTemporal.Vector64.Single"] = StorePairNonTemporal_Vector64_Single, + ["StorePairNonTemporal.Vector64.UInt16"] = StorePairNonTemporal_Vector64_UInt16, + ["StorePairNonTemporal.Vector64.UInt32"] = StorePairNonTemporal_Vector64_UInt32, + ["StorePairNonTemporal.Vector64.UInt64"] = StorePairNonTemporal_Vector64_UInt64, + ["StorePairNonTemporal.Vector128.Byte"] = StorePairNonTemporal_Vector128_Byte, + ["StorePairNonTemporal.Vector128.Double"] = StorePairNonTemporal_Vector128_Double, + ["StorePairNonTemporal.Vector128.Int16"] = StorePairNonTemporal_Vector128_Int16, + ["StorePairNonTemporal.Vector128.Int32"] = StorePairNonTemporal_Vector128_Int32, + ["StorePairNonTemporal.Vector128.Int64"] = StorePairNonTemporal_Vector128_Int64, + ["StorePairNonTemporal.Vector128.SByte"] = StorePairNonTemporal_Vector128_SByte, + ["StorePairNonTemporal.Vector128.Single"] = StorePairNonTemporal_Vector128_Single, + ["StorePairNonTemporal.Vector128.UInt16"] = StorePairNonTemporal_Vector128_UInt16, + ["StorePairNonTemporal.Vector128.UInt32"] = StorePairNonTemporal_Vector128_UInt32, + ["StorePairNonTemporal.Vector128.UInt64"] = StorePairNonTemporal_Vector128_UInt64, + ["Subtract.Vector128.Double"] = Subtract_Vector128_Double, + ["SubtractSaturateScalar.Vector64.Byte"] = SubtractSaturateScalar_Vector64_Byte, + ["SubtractSaturateScalar.Vector64.Int16"] = SubtractSaturateScalar_Vector64_Int16, + ["SubtractSaturateScalar.Vector64.Int32"] = SubtractSaturateScalar_Vector64_Int32, + ["SubtractSaturateScalar.Vector64.SByte"] = SubtractSaturateScalar_Vector64_SByte, + ["SubtractSaturateScalar.Vector64.UInt16"] = SubtractSaturateScalar_Vector64_UInt16, + ["SubtractSaturateScalar.Vector64.UInt32"] = SubtractSaturateScalar_Vector64_UInt32, + ["TransposeEven.Vector64.Byte"] = TransposeEven_Vector64_Byte, + ["TransposeEven.Vector64.Int16"] = TransposeEven_Vector64_Int16, + ["TransposeEven.Vector64.Int32"] = TransposeEven_Vector64_Int32, + ["TransposeEven.Vector64.SByte"] = TransposeEven_Vector64_SByte, + ["TransposeEven.Vector64.Single"] = TransposeEven_Vector64_Single, + ["TransposeEven.Vector64.UInt16"] = TransposeEven_Vector64_UInt16, + ["TransposeEven.Vector64.UInt32"] = TransposeEven_Vector64_UInt32, + ["TransposeEven.Vector128.Byte"] = TransposeEven_Vector128_Byte, + ["TransposeEven.Vector128.Double"] = TransposeEven_Vector128_Double, + ["TransposeEven.Vector128.Int16"] = TransposeEven_Vector128_Int16, + ["TransposeEven.Vector128.Int32"] = TransposeEven_Vector128_Int32, + ["TransposeEven.Vector128.Int64"] = TransposeEven_Vector128_Int64, + ["TransposeEven.Vector128.SByte"] = TransposeEven_Vector128_SByte, + ["TransposeEven.Vector128.Single"] = TransposeEven_Vector128_Single, + ["TransposeEven.Vector128.UInt16"] = TransposeEven_Vector128_UInt16, + ["TransposeEven.Vector128.UInt32"] = TransposeEven_Vector128_UInt32, + ["TransposeEven.Vector128.UInt64"] = TransposeEven_Vector128_UInt64, + ["TransposeOdd.Vector64.Byte"] = TransposeOdd_Vector64_Byte, ["TransposeOdd.Vector64.Int16"] = TransposeOdd_Vector64_Int16, ["TransposeOdd.Vector64.Int32"] = TransposeOdd_Vector64_Int32, ["TransposeOdd.Vector64.SByte"] = TransposeOdd_Vector64_SByte, @@ -65,40 +111,6 @@ static Program() ["UnzipOdd.Vector128.UInt16"] = UnzipOdd_Vector128_UInt16, ["UnzipOdd.Vector128.UInt32"] = UnzipOdd_Vector128_UInt32, ["UnzipOdd.Vector128.UInt64"] = UnzipOdd_Vector128_UInt64, - ["ZipHigh.Vector64.Byte"] = ZipHigh_Vector64_Byte, - ["ZipHigh.Vector64.Int16"] = ZipHigh_Vector64_Int16, - ["ZipHigh.Vector64.Int32"] = ZipHigh_Vector64_Int32, - ["ZipHigh.Vector64.SByte"] = ZipHigh_Vector64_SByte, - ["ZipHigh.Vector64.Single"] = ZipHigh_Vector64_Single, - ["ZipHigh.Vector64.UInt16"] = ZipHigh_Vector64_UInt16, - ["ZipHigh.Vector64.UInt32"] = ZipHigh_Vector64_UInt32, - ["ZipHigh.Vector128.Byte"] = ZipHigh_Vector128_Byte, - ["ZipHigh.Vector128.Double"] = ZipHigh_Vector128_Double, - ["ZipHigh.Vector128.Int16"] = ZipHigh_Vector128_Int16, - ["ZipHigh.Vector128.Int32"] = ZipHigh_Vector128_Int32, - ["ZipHigh.Vector128.Int64"] = ZipHigh_Vector128_Int64, - ["ZipHigh.Vector128.SByte"] = ZipHigh_Vector128_SByte, - ["ZipHigh.Vector128.Single"] = ZipHigh_Vector128_Single, - ["ZipHigh.Vector128.UInt16"] = ZipHigh_Vector128_UInt16, - ["ZipHigh.Vector128.UInt32"] = ZipHigh_Vector128_UInt32, - ["ZipHigh.Vector128.UInt64"] = ZipHigh_Vector128_UInt64, - ["ZipLow.Vector64.Byte"] = ZipLow_Vector64_Byte, - ["ZipLow.Vector64.Int16"] = ZipLow_Vector64_Int16, - ["ZipLow.Vector64.Int32"] = ZipLow_Vector64_Int32, - ["ZipLow.Vector64.SByte"] = ZipLow_Vector64_SByte, - ["ZipLow.Vector64.Single"] = ZipLow_Vector64_Single, - ["ZipLow.Vector64.UInt16"] = ZipLow_Vector64_UInt16, - ["ZipLow.Vector64.UInt32"] = ZipLow_Vector64_UInt32, - ["ZipLow.Vector128.Byte"] = ZipLow_Vector128_Byte, - ["ZipLow.Vector128.Double"] = ZipLow_Vector128_Double, - ["ZipLow.Vector128.Int16"] = ZipLow_Vector128_Int16, - ["ZipLow.Vector128.Int32"] = ZipLow_Vector128_Int32, - ["ZipLow.Vector128.Int64"] = ZipLow_Vector128_Int64, - ["ZipLow.Vector128.SByte"] = ZipLow_Vector128_SByte, - ["ZipLow.Vector128.Single"] = ZipLow_Vector128_Single, - ["ZipLow.Vector128.UInt16"] = ZipLow_Vector128_UInt16, - ["ZipLow.Vector128.UInt32"] = ZipLow_Vector128_UInt32, - ["ZipLow.Vector128.UInt64"] = ZipLow_Vector128_UInt64, }; } } diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part6.cs b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part6.cs new file mode 100644 index 00000000000000..7cf97e14beadc3 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/AdvSimd.Arm64/Program.AdvSimd.Arm64_Part6.cs @@ -0,0 +1,51 @@ +// 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; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + static Program() + { + TestList = new Dictionary() { + ["ZipHigh.Vector64.Byte"] = ZipHigh_Vector64_Byte, + ["ZipHigh.Vector64.Int16"] = ZipHigh_Vector64_Int16, + ["ZipHigh.Vector64.Int32"] = ZipHigh_Vector64_Int32, + ["ZipHigh.Vector64.SByte"] = ZipHigh_Vector64_SByte, + ["ZipHigh.Vector64.Single"] = ZipHigh_Vector64_Single, + ["ZipHigh.Vector64.UInt16"] = ZipHigh_Vector64_UInt16, + ["ZipHigh.Vector64.UInt32"] = ZipHigh_Vector64_UInt32, + ["ZipHigh.Vector128.Byte"] = ZipHigh_Vector128_Byte, + ["ZipHigh.Vector128.Double"] = ZipHigh_Vector128_Double, + ["ZipHigh.Vector128.Int16"] = ZipHigh_Vector128_Int16, + ["ZipHigh.Vector128.Int32"] = ZipHigh_Vector128_Int32, + ["ZipHigh.Vector128.Int64"] = ZipHigh_Vector128_Int64, + ["ZipHigh.Vector128.SByte"] = ZipHigh_Vector128_SByte, + ["ZipHigh.Vector128.Single"] = ZipHigh_Vector128_Single, + ["ZipHigh.Vector128.UInt16"] = ZipHigh_Vector128_UInt16, + ["ZipHigh.Vector128.UInt32"] = ZipHigh_Vector128_UInt32, + ["ZipHigh.Vector128.UInt64"] = ZipHigh_Vector128_UInt64, + ["ZipLow.Vector64.Byte"] = ZipLow_Vector64_Byte, + ["ZipLow.Vector64.Int16"] = ZipLow_Vector64_Int16, + ["ZipLow.Vector64.Int32"] = ZipLow_Vector64_Int32, + ["ZipLow.Vector64.SByte"] = ZipLow_Vector64_SByte, + ["ZipLow.Vector64.Single"] = ZipLow_Vector64_Single, + ["ZipLow.Vector64.UInt16"] = ZipLow_Vector64_UInt16, + ["ZipLow.Vector64.UInt32"] = ZipLow_Vector64_UInt32, + ["ZipLow.Vector128.Byte"] = ZipLow_Vector128_Byte, + ["ZipLow.Vector128.Double"] = ZipLow_Vector128_Double, + ["ZipLow.Vector128.Int16"] = ZipLow_Vector128_Int16, + ["ZipLow.Vector128.Int32"] = ZipLow_Vector128_Int32, + ["ZipLow.Vector128.Int64"] = ZipLow_Vector128_Int64, + ["ZipLow.Vector128.SByte"] = ZipLow_Vector128_SByte, + ["ZipLow.Vector128.Single"] = ZipLow_Vector128_Single, + ["ZipLow.Vector128.UInt16"] = ZipLow_Vector128_UInt16, + ["ZipLow.Vector128.UInt32"] = ZipLow_Vector128_UInt32, + ["ZipLow.Vector128.UInt64"] = ZipLow_Vector128_UInt64, + }; + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/GenerateTests.csx b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/GenerateTests.csx index ec6da1aa16e206..6cdf3969ae0ffd 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/GenerateTests.csx +++ b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/GenerateTests.csx @@ -1977,6 +1977,52 @@ private static readonly (string templateFileName, Dictionary tem ("LoadUnOpTest.template", new Dictionary { ["TestName"] = "LoadAndReplicateToVector128_Double", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadAndReplicateToVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[0]) != BitConverter.DoubleToInt64Bits(result[i])"}), ("LoadUnOpTest.template", new Dictionary { ["TestName"] = "LoadAndReplicateToVector128_Int64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadAndReplicateToVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "firstOp[0] != result[i]"}), ("LoadUnOpTest.template", new Dictionary { ["TestName"] = "LoadAndReplicateToVector128_UInt64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadAndReplicateToVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "firstOp[0] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "Helpers.LoadPairScalar(firstOp, i) != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.SingleToInt32Bits(Helpers.LoadPairScalar(firstOp, i)) != BitConverter.SingleToInt32Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "Helpers.LoadPairScalar(firstOp, i) != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64NonTemporal_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "Helpers.LoadPairScalar(firstOp, i) != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64NonTemporal_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.SingleToInt32Bits(Helpers.LoadPairScalar(firstOp, i)) != BitConverter.SingleToInt32Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairScalarVector64NonTemporal_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairScalarVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "Helpers.LoadPairScalar(firstOp, i) != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Byte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Double", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Int16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Int64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_SByte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_UInt16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64_UInt64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Byte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Double", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Int16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Int64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_SByte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "SByte", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_UInt16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector64NonTemporal_UInt64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector64NonTemporal", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Byte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Double", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Int16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Int64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_SByte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.SingleToInt32Bits(firstOp[i]) != BitConverter.SingleToInt32Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_UInt16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128_UInt64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Byte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Double", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Int16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Int32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Int64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Int64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Int64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_SByte", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "SByte", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "SByte", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetSByte()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_Single", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Single", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Single", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetSingle()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(firstOp[i]) != BitConverter.DoubleToInt64Bits(result[i])"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_UInt16", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt16", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt16", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt16()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_UInt32", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt32", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt32", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt32()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), + ("LoadPairVectorTest.template", new Dictionary { ["TestName"] = "LoadPairVector128NonTemporal_UInt64", ["Isa"] = "AdvSimd.Arm64", ["Method"] = "LoadPairVector128NonTemporal", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "UInt64", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "UInt64", ["LargestVectorSize"] = "32", ["NextValueOp1"] = "TestLibrary.Generator.GetUInt64()", ["ValidateIterResult"] = "firstOp[i] != result[i]"}), ("VecBinOpTest.template", new Dictionary { ["TestName"] = "Max_Vector128_Double", ["Isa"] = "AdvSimd.Arm64", ["LoadIsa"] = "AdvSimd", ["Method"] = "Max", ["RetVectorType"] = "Vector128", ["RetBaseType"] = "Double", ["Op1VectorType"] = "Vector128", ["Op1BaseType"] = "Double", ["Op2VectorType"] = "Vector128", ["Op2BaseType"] = "Double", ["LargestVectorSize"] = "16", ["NextValueOp1"] = "TestLibrary.Generator.GetDouble()", ["NextValueOp2"] = "TestLibrary.Generator.GetDouble()", ["ValidateIterResult"] = "BitConverter.DoubleToInt64Bits(Helpers.Max(left[i], right[i])) != BitConverter.DoubleToInt64Bits(result[i])"}), ("VecReduceUnOpTest.template", new Dictionary { ["TestName"] = "MaxAcross_Vector64_Byte", ["Isa"] = "AdvSimd.Arm64", ["LoadIsa"] = "AdvSimd", ["Method"] = "MaxAcross", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Byte", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Byte", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetByte()", ["ValidateReduceOpResult"] = "Helpers.MaxAcross(firstOp) != result[0]", ["ValidateRemainingResults"] = "result[i] != 0"}), ("VecReduceUnOpTest.template", new Dictionary { ["TestName"] = "MaxAcross_Vector64_Int16", ["Isa"] = "AdvSimd.Arm64", ["LoadIsa"] = "AdvSimd", ["Method"] = "MaxAcross", ["RetVectorType"] = "Vector64", ["RetBaseType"] = "Int16", ["Op1VectorType"] = "Vector64", ["Op1BaseType"] = "Int16", ["LargestVectorSize"] = "8", ["NextValueOp1"] = "TestLibrary.Generator.GetInt16()", ["ValidateReduceOpResult"] = "Helpers.MaxAcross(firstOp) != result[0]", ["ValidateRemainingResults"] = "result[i] != 0"}), diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs index 74e3217313ae50..125c187bdd2d4e 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs @@ -5495,6 +5495,12 @@ public static double ConcatScalar(double[] op1, double[] op2, int i) public static double Insert(double[] op1, int op2, double op3, int i) => (op2 != i) ? op1[i] : op3; + public static int LoadPairScalar(int[] op1, int i) => (i == 0) ? op1[0] : (i == op1.Length / 2) ? op1[1] : (int)0; + + public static uint LoadPairScalar(uint[] op1, int i) => (i == 0) ? op1[0] : (i == op1.Length / 2) ? op1[1] : (uint)0; + + public static float LoadPairScalar(float[] op1, int i) => (i == 0) ? op1[0] : (i == op1.Length / 2) ? op1[1] : (float)0; + public static sbyte TableVectorExtension(int i, sbyte[] defaultValues, sbyte[] indices, params sbyte[][] table) { sbyte[] fullTable = table.SelectMany(x => x).ToArray(); diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.tt b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.tt index b133f53e1480e4..9205115e5b5cec 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.tt +++ b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.tt @@ -1459,6 +1459,14 @@ namespace JIT.HardwareIntrinsics.Arm public static <#= typeName #> Insert(<#= typeName #>[] op1, int op2, <#= typeName #> op3, int i) => (op2 != i) ? op1[i] : op3; +<# + } + + foreach (string typeName in new string[] { "int", "uint", "float" }) + { +#> + public static <#= typeName #> LoadPairScalar(<#= typeName #>[] op1, int i) => (i == 0) ? op1[0] : (i == op1.Length / 2) ? op1[1] : (<#= typeName #>)0; + <# } diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/LoadPairVectorTest.template b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/LoadPairVectorTest.template new file mode 100644 index 00000000000000..245a16d34cc8a5 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/LoadPairVectorTest.template @@ -0,0 +1,263 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +/****************************************************************************** + * This file is auto-generated from a template file by the GenerateTests.csx * + * script in tests\src\JIT\HardwareIntrinsics\Arm\Shared. In order to make * + * changes, please update the corresponding template and run according to the * + * directions listed in the file. * + ******************************************************************************/ + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.Arm; + +namespace JIT.HardwareIntrinsics.Arm +{ + public static partial class Program + { + private static void {TestName}() + { + var test = new {TestName}(); + + if (test.IsSupported) + { + // Validates basic functionality works + test.RunBasicScenario(); + + // Validates calling via reflection works + test.RunReflectionScenario(); + + // Validates loading to a static member works + test.RunClsVarScenario(); + + // Validates loading to the field of a local class works + test.RunClassLclFldScenario(); + + // Validates loading to the field of a local struct works + test.RunStructLclFldScenario(); + + // Validates loading to an instance member of a struct works + test.RunStructFldScenario(); + } + else + { + // Validates we throw on unsupported hardware + test.RunUnsupportedScenario(); + } + + if (!test.Succeeded) + { + throw new Exception("One or more scenarios did not complete as expected."); + } + } + } + + public sealed unsafe class {TestName} + { + private struct DataTable + { + private byte[] inArray; + private byte[] outArray; + + private GCHandle inHandle; + private GCHandle outHandle; + + private ulong alignment; + + public DataTable({Op1BaseType}[] inArray, {RetBaseType}[] outArray, int alignment) + { + int sizeOfinArray = inArray.Length * Unsafe.SizeOf<{Op1BaseType}>(); + int sizeOfoutArray = outArray.Length * Unsafe.SizeOf<{RetBaseType}>(); + + if ((alignment != 16 && alignment != 32) || (alignment * 2) < sizeOfinArray || (alignment * 2) < sizeOfoutArray) + { + throw new ArgumentException("Invalid value of alignment"); + } + + this.inArray = new byte[alignment * 2]; + this.outArray = new byte[alignment * 2]; + + this.inHandle = GCHandle.Alloc(this.inArray, GCHandleType.Pinned); + this.outHandle = GCHandle.Alloc(this.outArray, GCHandleType.Pinned); + + this.alignment = (ulong)alignment; + + Unsafe.CopyBlockUnaligned(ref Unsafe.AsRef(inArrayPtr), ref Unsafe.As<{Op1BaseType}, byte>(ref inArray[0]), (uint)sizeOfinArray); + } + + public void* inArrayPtr => Align((byte*)(inHandle.AddrOfPinnedObject().ToPointer()), alignment); + public void* outArrayPtr => Align((byte*)(outHandle.AddrOfPinnedObject().ToPointer()), alignment); + + public void Dispose() + { + inHandle.Free(); + outHandle.Free(); + } + + private static unsafe void* Align(byte* buffer, ulong expectedAlignment) + { + return (void*)(((ulong)buffer + expectedAlignment - 1) & ~(expectedAlignment - 1)); + } + } + + private struct TestStruct + { + public ({RetVectorType}<{RetBaseType}>,{RetVectorType}<{RetBaseType}>) _fld; + + public static TestStruct Create() + { + return new TestStruct(); + } + + public void RunStructFldScenario({TestName} testClass) + { + _fld = {Isa}.{Method}(({Op1BaseType}*)(testClass._dataTable.inArrayPtr)); + + Unsafe.Write(testClass._dataTable.outArrayPtr, _fld); + testClass.ValidateResult(testClass._dataTable.inArrayPtr, testClass._dataTable.outArrayPtr); + } + } + + + private static readonly int LargestVectorSize = {LargestVectorSize}; + private static readonly int RetElementCount = Unsafe.SizeOf<({RetVectorType}<{RetBaseType}>,{RetVectorType}<{RetBaseType}>)>() / sizeof({RetBaseType}); + private static readonly int Op1ElementCount = RetElementCount; + + private static {Op1BaseType}[] _data = new {Op1BaseType}[Op1ElementCount]; + + private static ({RetVectorType}<{RetBaseType}>,{RetVectorType}<{RetBaseType}>) _clsVar; + + private ({RetVectorType}<{RetBaseType}>,{RetVectorType}<{RetBaseType}>) _fld; + + private DataTable _dataTable; + + public {TestName}() + { + Succeeded = true; + + for (var i = 0; i < Op1ElementCount; i++) { _data[i] = {NextValueOp1}; } + _dataTable = new DataTable(_data, new {RetBaseType}[RetElementCount], LargestVectorSize); + } + + public bool IsSupported => {Isa}.IsSupported; + + public bool Succeeded { get; set; } + + public void RunBasicScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunBasicScenario)); + + var result = {Isa}.{Method}(({Op1BaseType}*)(_dataTable.inArrayPtr)); + Unsafe.Write(_dataTable.outArrayPtr, result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunReflectionScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunReflectionScenario)); + + var result = typeof({Isa}).GetMethod(nameof({Isa}.{Method}), new Type[] { typeof({Op1BaseType}*) }) + .Invoke(null, new object[] { + Pointer.Box(_dataTable.inArrayPtr, typeof({Op1BaseType}*)) + }); + + Unsafe.Write(_dataTable.outArrayPtr, (({RetVectorType}<{RetBaseType}>,{RetVectorType}<{RetBaseType}>))result); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClsVarScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClsVarScenario)); + + _clsVar = {Isa}.{Method}(({Op1BaseType}*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, _clsVar); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunClassLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunClassLclFldScenario)); + + var test = new {TestName}(); + test._fld = {Isa}.{Method}(({Op1BaseType}*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructLclFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructLclFldScenario)); + + var test = TestStruct.Create(); + test._fld = {Isa}.{Method}(({Op1BaseType}*)(_dataTable.inArrayPtr)); + + Unsafe.Write(_dataTable.outArrayPtr, test._fld); + ValidateResult(_dataTable.inArrayPtr, _dataTable.outArrayPtr); + } + + public void RunStructFldScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunStructFldScenario)); + + var test = TestStruct.Create(); + test.RunStructFldScenario(this); + } + + public void RunUnsupportedScenario() + { + TestLibrary.TestFramework.BeginScenario(nameof(RunUnsupportedScenario)); + + Succeeded = false; + + try + { + RunBasicScenario(); + } + catch (PlatformNotSupportedException) + { + Succeeded = true; + } + } + + private void ValidateResult(void* firstOp, void* result, [CallerMemberName] string method = "") + { + {Op1BaseType}[] inArray = new {Op1BaseType}[Op1ElementCount]; + {RetBaseType}[] outArray = new {RetBaseType}[RetElementCount]; + + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{Op1BaseType}, byte>(ref inArray[0]), ref Unsafe.AsRef(firstOp), (uint)(Unsafe.SizeOf<{Op1BaseType}>() * Op1ElementCount)); + Unsafe.CopyBlockUnaligned(ref Unsafe.As<{RetBaseType}, byte>(ref outArray[0]), ref Unsafe.AsRef(result), (uint)(Unsafe.SizeOf<{RetBaseType}>() * RetElementCount)); + + ValidateResult(inArray, outArray, method); + } + + private void ValidateResult({Op1BaseType}[] firstOp, {RetBaseType}[] result, [CallerMemberName] string method = "") + { + bool succeeded = true; + + for (int i = 0; i < Op1ElementCount; i++) + { + if ({ValidateIterResult}) + { + succeeded = false; + break; + } + } + + if (!succeeded) + { + TestLibrary.TestFramework.LogInformation($"{nameof({Isa})}.{nameof({Isa}.{Method})}<{RetBaseType}>({Op1VectorType}<{Op1BaseType}>): {method} failed:"); + TestLibrary.TestFramework.LogInformation($" firstOp: ({string.Join(", ", firstOp)})"); + TestLibrary.TestFramework.LogInformation($" result: ({string.Join(", ", result)})"); + TestLibrary.TestFramework.LogInformation(string.Empty); + + Succeeded = false; + } + } + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.cs b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.cs index e94fb995641b4f..17829cb471f901 100644 --- a/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.cs +++ b/src/tests/JIT/HardwareIntrinsics/Arm/Shared/Program.cs @@ -12,6 +12,7 @@ public static partial class Program { private const int PASS = 100; private const int FAIL = 0; + private const int MaximumTestCountGCStress = 30; private static readonly IDictionary TestList; @@ -63,7 +64,17 @@ private static ICollection GetTestsToRun(string[] args) testsToRun.Add(testName); } - return (testsToRun.Count == 0) ? TestList.Keys : testsToRun; + if (testsToRun.Count != 0) + { + return testsToRun; + } + + if (TestLibrary.Utilities.IsGCStress) + { + return TestList.Keys.Take(MaximumTestCountGCStress).ToArray(); + } + + return TestList.Keys; } private static void PrintSupportedIsa() diff --git a/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.cs b/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.cs new file mode 100644 index 00000000000000..5be6ed88e474aa --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.cs @@ -0,0 +1,37 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Runtime.Intrinsics.X86; +using System.Runtime.CompilerServices; + +// Tests that side effects induced by the HWI nodes are correctly accounted for. + +unsafe class HwiSideEffects +{ + public static int Main() + { + if (ProblemWithInterferenceChecks(2) != 2) + { + return 101; + } + + return 100; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private static uint ProblemWithInterferenceChecks(uint a) + { + uint x; + if (Bmi2.IsSupported) + { + // Make sure we don't try to contain "a" under the "add" here. + x = a + Bmi2.MultiplyNoFlags(a, a, &a); + } + else + { + x = a; + } + + return x; + } +} diff --git a/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.csproj b/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.csproj new file mode 100644 index 00000000000000..9e2219131d3f47 --- /dev/null +++ b/src/tests/JIT/HardwareIntrinsics/General/HwiOp/HwiSideEffects.csproj @@ -0,0 +1,11 @@ + + + Exe + None + True + true + + + + + diff --git a/src/tests/JIT/HardwareIntrinsics/General/Shared/Program.cs b/src/tests/JIT/HardwareIntrinsics/General/Shared/Program.cs index ca75233a40a20c..623b96ebebc6e2 100644 --- a/src/tests/JIT/HardwareIntrinsics/General/Shared/Program.cs +++ b/src/tests/JIT/HardwareIntrinsics/General/Shared/Program.cs @@ -12,6 +12,7 @@ public static partial class Program { private const int PASS = 100; private const int FAIL = 0; + private const int MaximumTestCountGCStress = 30; private static readonly IDictionary TestList; @@ -61,7 +62,17 @@ private static ICollection GetTestsToRun(string[] args) testsToRun.Add(testName); } - return (testsToRun.Count == 0) ? TestList.Keys : testsToRun; + if (testsToRun.Count != 0) + { + return testsToRun; + } + + if (TestLibrary.Utilities.IsGCStress) + { + return TestList.Keys.Take(MaximumTestCountGCStress).ToArray(); + } + + return TestList.Keys; } private static void PrintUsage() diff --git a/src/tests/JIT/HardwareIntrinsics/X86/Shared/Program.cs b/src/tests/JIT/HardwareIntrinsics/X86/Shared/Program.cs index 1d772682f86440..8f7a79fdd95b1b 100644 --- a/src/tests/JIT/HardwareIntrinsics/X86/Shared/Program.cs +++ b/src/tests/JIT/HardwareIntrinsics/X86/Shared/Program.cs @@ -12,6 +12,7 @@ public static partial class Program { private const int PASS = 100; private const int FAIL = 0; + private const int MaximumTestCountGCStress = 30; private static readonly IDictionary TestList; @@ -63,7 +64,17 @@ private static ICollection GetTestsToRun(string[] args) testsToRun.Add(testName); } - return (testsToRun.Count == 0) ? TestList.Keys : testsToRun; + if (testsToRun.Count != 0) + { + return testsToRun; + } + + if (TestLibrary.Utilities.IsGCStress) + { + return TestList.Keys.Take(MaximumTestCountGCStress).ToArray(); + } + + return TestList.Keys; } private static void PrintSupportedIsa() diff --git a/src/tests/JIT/Methodical/Boxing/morph/sin3double.il b/src/tests/JIT/Methodical/Boxing/morph/sin3double.il index f6da010122d6e7..1a1ccd97d659c1 100644 --- a/src/tests/JIT/Methodical/Boxing/morph/sin3double.il +++ b/src/tests/JIT/Methodical/Boxing/morph/sin3double.il @@ -14,6 +14,7 @@ } .assembly extern xunit.core {} +.namespace Test_sin3double { .class private sequential ansi sealed beforefieldinit VV extends [mscorlib]System.ValueType { .pack 0 @@ -212,7 +213,7 @@ object V_8, object V_9, object V_10, - valuetype VV V_11) + valuetype Test_sin3double.VV V_11) IL_0000: ldc.i4.0 IL_0001: stloc.s V_4 IL_0003: ldnull @@ -357,7 +358,7 @@ IL_0160: ldstr ")=" IL_016a: call void [console]System.Console::Write(string) IL_016f: ldloc.3 - IL_0170: call float64 Z::mySin(float64) + IL_0170: call float64 Test_sin3double.Z::mySin(float64) IL_0175: stloc.1 IL_0176: ldloc.1 IL_0177: call void [console]System.Console::WriteLine(float64) @@ -436,4 +437,4 @@ } } - +} diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs.il b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs.il index c1ec61fd48db25..7daf4196db5a6d 100644 --- a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs.il +++ b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs.il @@ -7,7 +7,7 @@ .ver 4:0:0:0 } .assembly extern legacy library mscorlib { auto } -.assembly 'sin_cs' {} +.assembly 'sin_il_cs' {} .assembly extern xunit.core {} .assembly extern sinlib_cs { diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_d.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_d.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_d.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_d.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_do.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_do.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_do.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_do.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_r.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_r.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_r.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_r.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_ro.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_ro.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_ro.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_cs_sinlib_ro.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_d.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_d.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_d.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_d.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_do.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_do.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_do.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_do.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_r.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_r.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_r.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_r.csproj diff --git a/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_ro.csproj b/src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_ro.csproj similarity index 100% rename from src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_ro.csproj rename to src/tests/JIT/Methodical/Boxing/xlang/sin_cs_il_sinlib_ro.csproj diff --git a/src/tests/JIT/Methodical/Coverage/b518440.il b/src/tests/JIT/Methodical/Coverage/b518440.il index afde124f1335c8..d7e11211972648 100644 --- a/src/tests/JIT/Methodical/Coverage/b518440.il +++ b/src/tests/JIT/Methodical/Coverage/b518440.il @@ -11,14 +11,15 @@ .assembly extern mscorlib{} .assembly b518440{} +.namespace Test_b518440 { .class public A { - .method public hidebysig static int32 main(string[] args) + .method public hidebysig static int32 main() { .entrypoint .maxstack 2 - call void A::Test() + call void Test_b518440.A::Test() ldstr "Test SUCCESS" call void [System.Console]System.Console::WriteLine(string) @@ -77,7 +78,7 @@ } // end handler IL_002c: ret - } // end of method A::main + } // end of method Test_b518440.A::main .method public hidebysig specialname rtspecialname instance void .ctor() cil managed @@ -86,6 +87,6 @@ IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret - } // end of method A::.ctor + } // end of method Test_b518440.A::.ctor +} } - diff --git a/src/tests/JIT/Methodical/Coverage/copy_prop_byref_to_native_int.il b/src/tests/JIT/Methodical/Coverage/copy_prop_byref_to_native_int.il index 4363e068a89aab..86f30f1a985fe4 100644 --- a/src/tests/JIT/Methodical/Coverage/copy_prop_byref_to_native_int.il +++ b/src/tests/JIT/Methodical/Coverage/copy_prop_byref_to_native_int.il @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern System.Console { auto } -.assembly extern System.Runtime { auto } +.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) } .assembly 'copy_prop_byref_to_native_int' { } .assembly extern xunit.core {} diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u-ia64.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u.il similarity index 97% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u-ia64.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u.il index ebf86fcd1cf633..9b7887321a49f2 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u-ia64.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u.il @@ -9,12 +9,12 @@ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) .ver 4:0:0:0 } -.assembly 'convovf_i8_u-ia64' +.assembly 'convovf_i8_u' { } .assembly extern xunit.core {} -.class private auto ansi Test_convovf_i8_u_ia64 extends [mscorlib]System.Object +.class public auto ansi Test_convovf_i8_u extends [mscorlib]System.Object { -.method private hidebysig static int32 Main() il managed +.method public hidebysig static int32 Main() il managed { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( 01 00 00 00 diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_d.ilproj index 48e895df8d0e83..319b465e00be67 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_r.ilproj index 9f8ac862ad053f..b89cfa1a2c9842 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/convovf_i8_u_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-i386.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT.il similarity index 94% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-i386.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT.il index a6c467484fe088..7380a010f385c4 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-i386.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT.il @@ -9,10 +9,10 @@ .assembly extern mscorlib { } -.assembly 'i_array_merge-i386' +.assembly 'i_array_merge_Target_32BIT' { } .assembly extern xunit.core {} -.class private auto ansi Test_i_array_merge_i386 extends [mscorlib]System.Object +.class public auto ansi Test_i_array_merge_Target_32BIT extends [mscorlib]System.Object { .method private hidebysig static int32 Main() il managed { diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_d.ilproj index e66ba4633f8dc4..531ce07aeaceb8 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_r.ilproj index 80cd705f47541b..84186e675a88db 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_32BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-ia64.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT.il similarity index 94% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-ia64.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT.il index ec5ac621e9b6cd..44d22686049b7b 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge-ia64.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT.il @@ -9,10 +9,10 @@ .assembly extern mscorlib { } -.assembly 'i_array_merge-ia64' +.assembly 'i_array_merge_Target_64BIT' { } .assembly extern xunit.core {} -.class private auto ansi Test_i_array_merge_ia64 extends [mscorlib]System.Object +.class public auto ansi Test_i_array_merge_Target_64BIT extends [mscorlib]System.Object { .method private hidebysig static int32 Main() il managed { diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_d.ilproj index 00926af5db5d73..e8c868f8bb498e 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_r.ilproj index a345aeb59f2ad6..607ff707ff69b5 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/i_array_merge_Target_64BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-i386.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT.il similarity index 97% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-i386.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT.il index 438f8dac06e557..31b8686f742e41 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-i386.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT.il @@ -13,7 +13,7 @@ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) .ver 4:0:0:0 } -.assembly 'sizeof-i386'// as "avg" +.assembly 'sizeof_Target_32BIT'// as "avg" { } .assembly extern xunit.core {} diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_d.ilproj index 0a410481d4236e..db58d50822020f 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_r.ilproj index 11af8b71770eff..524ab137bcdbb0 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_32BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-ia64.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT.il similarity index 91% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-ia64.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT.il index 497c0b2227d52c..0c28a317167b8c 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof-ia64.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT.il @@ -13,12 +13,12 @@ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) .ver 4:0:0:0 } -.assembly 'sizeof-ia64'// as "avg" +.assembly 'sizeof_Target_64BIT'// as "avg" { } .assembly extern xunit.core {} // MVID: {BCA6096F-DF11-4FA3-BF16-EEDA01729535} -.namespace AvgTest +.namespace AvgTest_sizeof_Target_64BIT { .class private auto ansi Test extends [mscorlib]System.Object @@ -73,6 +73,6 @@ } // end of class 'Test' -} // end of namespace 'AvgTest' +} // end of namespace 'AvgTest_sizeof_Target_64BIT' //*********** DISASSEMBLY COMPLETE *********************** diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_d.ilproj index 6fedc2896d9b66..b8a6e482a6b9f1 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_r.ilproj index 5a4d0a1e647fbe..1d460094c8f94b 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/sizeof_Target_64BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-i386.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT.il similarity index 94% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-i386.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT.il index ae24ee3f583487..48ee987bc5b2f9 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-i386.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT.il @@ -9,10 +9,10 @@ .assembly extern mscorlib { } -.assembly 'u_array_merge-i386' +.assembly 'u_array_merge_Target_32BIT' { } .assembly extern xunit.core {} -.class private auto ansi Test_u_array_merge_i386 extends [mscorlib]System.Object +.class public auto ansi Test_u_array_merge_Target_32BIT extends [mscorlib]System.Object { .method private hidebysig static int32 Main() il managed { diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_d.ilproj index 47a5f61dfccf0c..c2fb76183ba185 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_r.ilproj index ce9567d006d377..8586617b20b0f6 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_32BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-ia64.il b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT.il similarity index 94% rename from src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-ia64.il rename to src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT.il index 23ac1ecf5ab813..dcce34e690d2cf 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge-ia64.il +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT.il @@ -9,10 +9,10 @@ .assembly extern mscorlib { } -.assembly 'u_array_merge-ia64' +.assembly 'u_array_merge_Target_64BIT' { } .assembly extern xunit.core {} -.class private auto ansi Test_u_array_merge_ia64 extends [mscorlib]System.Object +.class public auto ansi Test_u_array_merge_Target_64BIT extends [mscorlib]System.Object { .method private hidebysig static int32 Main() il managed { diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_d.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_d.ilproj index eaaaf7cb613b95..e4ee642624a517 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_d.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_r.ilproj b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_r.ilproj index e7ac7b93d84f26..a659ec66de1cdd 100644 --- a/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_r.ilproj +++ b/src/tests/JIT/Methodical/ELEMENT_TYPE_IU/u_array_merge_Target_64BIT_il_r.ilproj @@ -7,6 +7,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/Invoke/hfa_params/hfa_params.cs b/src/tests/JIT/Methodical/Invoke/hfa_params/hfa_params.cs index a84f46d4d42417..0ed06cbb77c515 100644 --- a/src/tests/JIT/Methodical/Invoke/hfa_params/hfa_params.cs +++ b/src/tests/JIT/Methodical/Invoke/hfa_params/hfa_params.cs @@ -3,6 +3,8 @@ using System; +namespace Test_hfa_params +{ public struct doublesStruct { public double f1; @@ -65,3 +67,4 @@ public static int Main() return (foo(ds, ds2, ds3) ? 100 : -1); } } +} diff --git a/src/tests/JIT/Methodical/acceptance/Boxing/boxing001.il b/src/tests/JIT/Methodical/acceptance/Boxing/boxing001.il index 43244b9f09a209..6c4ef46fd8e31f 100644 --- a/src/tests/JIT/Methodical/acceptance/Boxing/boxing001.il +++ b/src/tests/JIT/Methodical/acceptance/Boxing/boxing001.il @@ -14,6 +14,7 @@ } .assembly extern xunit.core {} +.namespace Test_boxing001 { .class private sequential ansi sealed beforefieldinit V extends [mscorlib] System.ValueType { .field public int32 m_i @@ -37,11 +38,11 @@ call void [console]System.Console::Write(string) ldstr "'" call void [console]System.Console::WriteLine(string) - ldsfld int32 Z::nFailures + ldsfld int32 Test_boxing001.Z::nFailures ldc.i4.1 add - stsfld int32 Z::nFailures - ldsfld int32 Z::nFailures + stsfld int32 Test_boxing001.Z::nFailures + ldsfld int32 Test_boxing001.Z::nFailures stloc.0 ldloc.0 ret @@ -55,8 +56,8 @@ .entrypoint .locals (int32 V_0, object V1, - valuetype V V_2, - valuetype V& V_3, + valuetype Test_boxing001.V V_2, + valuetype Test_boxing001.V& V_3, object V_4, object V_5, object V_6, @@ -68,9 +69,9 @@ object V_12, string V_13, string V_14, - valuetype V& V_15, - valuetype V V_16, - valuetype V V_17) + valuetype Test_boxing001.V& V_15, + valuetype Test_boxing001.V V_16, + valuetype Test_boxing001.V V_17) ldc.i4.0 stloc.s V_7 ldnull @@ -90,16 +91,16 @@ ldnull stloc.s V_11 ldloca.s V_2 - initobj V + initobj Test_boxing001.V ldloca.s V_2 ldc.i4.5 - stfld int32 V::m_i + stfld int32 Test_boxing001.V::m_i ldloc.2 - box V + box Test_boxing001.V stloc.1 ldloc.1 - unbox V - ldfld int32 V::m_i + unbox Test_boxing001.V + ldfld int32 Test_boxing001.V::m_i stloc.0 ldloc.0 ldc.i4.5 @@ -107,64 +108,64 @@ ldc.i4.s 50 ldstr "i == 5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T1: ldloc.1 - unbox V + unbox Test_boxing001.V stloc.3 ldloc.3 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.5 beq.s T2 ldc.i4.s 53 ldstr "pv->m_i == 5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T2: ldloc.3 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.5 beq.s T3 ldc.i4.s 55 ldstr "(*pv).m_i == 5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T3: ldloc.3 - ldobj V + ldobj Test_boxing001.V stloc.s V_17 ldloca.s V_17 ldc.i4.s 10 - stfld int32 V::m_i + stfld int32 Test_boxing001.V::m_i ldloca.s V_17 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.s 10 beq.s T4 ldc.i4.s 60 ldstr "v3.m_i == 10" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T4: ldloc.3 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.5 beq.s T5 ldc.i4.s 61 ldstr "(*pv).m_i == 5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T5: @@ -172,40 +173,40 @@ T5: ldloca.s V_17 stloc.3 ldloc.3 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.s 10 beq.s T6 ldc.i4.s 64 ldstr "(*pv).m_i == 10" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T6: ldloc.1 - unbox V - ldobj V + unbox Test_boxing001.V + ldobj Test_boxing001.V stloc.s V_16 ldloca.s V_16 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.5 beq.s T7 ldc.i4.s 68 ldstr "v2.m_i == 5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T7: ldloc.1 - unbox V + unbox Test_boxing001.V ldc.i4.s 10 - stfld int32 V::m_i + stfld int32 Test_boxing001.V::m_i ldloc.1 - unbox V - ldfld int32 V::m_i + unbox Test_boxing001.V + ldfld int32 Test_boxing001.V::m_i stloc.0 ldloc.0 ldc.i4.s 10 @@ -213,39 +214,39 @@ T7: ldc.i4.s 72 ldstr "i == 10" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T8: ldloc.1 - unbox V + unbox Test_boxing001.V ldc.i4.s 123 - stfld int32 V::m_i + stfld int32 Test_boxing001.V::m_i ldloc.1 - unbox V - ldobj V + unbox Test_boxing001.V + ldobj Test_boxing001.V stloc.2 ldloca.s V_2 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i ldc.i4.s 123 beq.s T9 ldc.i4.s 76 ldstr "v.m_i == 123" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T9: ldloc.2 - box V + box Test_boxing001.V stloc.s V_4 ldloc.s V_4 stloc.1 ldloc.1 - unbox V - ldfld int32 V::m_i + unbox Test_boxing001.V + ldfld int32 Test_boxing001.V::m_i stloc.0 ldloc.0 ldc.i4.s 123 @@ -253,12 +254,12 @@ T9: ldc.i4.s 82 ldstr "i == 123" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T10: - ldstr "V" + ldstr "Test_boxing001.V" stloc.s V_14 ldloc.1 callvirt instance string [mscorlib]System.ValueType::ToString() @@ -270,22 +271,22 @@ T10: ldc.i4.s 86 ldstr "str1->Equals( str2 )" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T11: ldloc.2 - box V + box Test_boxing001.V stloc.s V_4 ldloc.s V_4 stloc.s V_10 ldloc.s V_10 - isinst V + isinst Test_boxing001.V brfalse.s X0 ldloc.s V_10 - unbox V + unbox Test_boxing001.V br.s X1 X0: @@ -297,16 +298,16 @@ X1: stloc.s V_15 ldloc.s V_15 - ldobj V + ldobj Test_boxing001.V stloc.2 ldloc.s V_4 stloc.s V_9 ldloc.s V_9 - isinst V + isinst Test_boxing001.V brfalse.s X2 ldloc.s V_9 - unbox V + unbox Test_boxing001.V br.s X3 X2: @@ -316,39 +317,39 @@ X2: X3: - ldobj V + ldobj Test_boxing001.V stloc.2 ldloc.1 - unbox V - ldobj V - box V - unbox V - ldobj V - box V - unbox V - ldobj V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V + unbox Test_boxing001.V + ldobj Test_boxing001.V stloc.2 ldloca.s V_2 - ldfld int32 V::m_i + ldfld int32 Test_boxing001.V::m_i stloc.0 ldloc.1 - unbox V - ldobj V - box V - unbox V - ldobj V - box V - unbox V - ldobj V - box V - unbox V - ldobj V - box V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V + unbox Test_boxing001.V + ldobj Test_boxing001.V + box Test_boxing001.V stloc.1 ldloc.0 ldloc.1 - unbox V - ldfld int32 V::m_i + unbox Test_boxing001.V + ldfld int32 Test_boxing001.V::m_i sub stloc.0 ldloc.0 @@ -356,7 +357,7 @@ X3: ldc.i4.s 101 ldstr "i == 0" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T12: @@ -407,14 +408,14 @@ T12: ldc.i4.s 114 ldstr "i == 5+5+5+5" - call int32 Z::Assert(int32, string) + call int32 Test_boxing001.Z::Assert(int32, string) pop T13: ldloc.s V_5 stloc.s V_6 - ldsfld int32 Z::nFailures + ldsfld int32 Test_boxing001.Z::nFailures brtrue.s Fail ldstr "PASSED" @@ -427,7 +428,7 @@ Fail: ldstr "FAILED" call void [console]System.Console::WriteLine(string) - ldsfld int32 Z::nFailures + ldsfld int32 Test_boxing001.Z::nFailures stloc.s V_7 Done: @@ -437,4 +438,4 @@ Done: } } - +} diff --git a/src/tests/JIT/Methodical/cctor/misc/deadlock.il b/src/tests/JIT/Methodical/cctor/misc/deadlock.il index 0c52d0b8590a11..742e744ff17999 100644 --- a/src/tests/JIT/Methodical/cctor/misc/deadlock.il +++ b/src/tests/JIT/Methodical/cctor/misc/deadlock.il @@ -38,6 +38,8 @@ ret } } +.class public Test_deadlock extends[mscorlib]System.Object +{ .method public static int32 Main() { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( @@ -50,3 +52,4 @@ ldc.i4 100 ret } } +} diff --git a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_d.csproj b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_d.csproj index 68080f691e66e8..748f2f3300d95b 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_do.csproj b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_do.csproj index 325e3df3952f46..38269015ab097f 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_do.csproj @@ -1,6 +1,7 @@ Exe + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_r.csproj b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_r.csproj index 0272781d4a7b6e..3600174f2f6b5a 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj index 2d8711a0d8f471..e7eb9aa71bd1f5 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads1_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_d.csproj b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_d.csproj index 8c6c2b2e6add2c..dac27e95ca4475 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_do.csproj b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_do.csproj index c8235407417f52..3fd4bb98d92e71 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_do.csproj @@ -3,6 +3,7 @@ Exe true 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_r.csproj b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_r.csproj index 7fedd976509e93..61e7806cc2724b 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj index 6dcb8d992909d7..acba5ee092f177 100644 --- a/src/tests/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/misc/threads2_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true diff --git a/src/tests/JIT/Methodical/cctor/simple/prefldinit1.il b/src/tests/JIT/Methodical/cctor/simple/prefldinit1.il index e2ac6fc7e51402..ee6d0cfe362e92 100644 --- a/src/tests/JIT/Methodical/cctor/simple/prefldinit1.il +++ b/src/tests/JIT/Methodical/cctor/simple/prefldinit1.il @@ -21,43 +21,6 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} -// MVID: {D664E737-135B-4517-AFBA-875EBEA1C810} -.imagebase 0x00400000 -.subsystem 0x00000003 -.file alignment 512 -.corflags 0x00000001 -// Image base: 0x076c0000 -// -// ============== CLASS STRUCTURE DECLARATION ================== -// -.class private auto ansi beforefieldinit measure - extends [mscorlib]System.Object -{ -} // end of class measure - -.class private auto ansi test - extends [mscorlib]System.Object -{ -} // end of class test - -.class private auto ansi beforefieldinit Driver - extends [mscorlib]System.Object -{ -} // end of class Driver - - -// ============================================================= - - -// =============== GLOBAL FIELDS AND METHODS =================== - - -// ============================================================= - - -// =============== CLASS MEMBERS DECLARATION =================== -// note that class flags, 'extends' and 'implements' clauses -// are provided here for information only .class private auto ansi beforefieldinit measure extends [mscorlib]System.Object @@ -85,7 +48,7 @@ } // end of class measure -.class private auto ansi beforefieldinit test +.class private auto ansi test extends [mscorlib]System.Object { .method public hidebysig static void f(unsigned int8& b) cil managed diff --git a/src/tests/JIT/Methodical/cctor/simple/prefldinit2.il b/src/tests/JIT/Methodical/cctor/simple/prefldinit2.il index 8b01f3e7f45afe..a34ec7c0037155 100644 --- a/src/tests/JIT/Methodical/cctor/simple/prefldinit2.il +++ b/src/tests/JIT/Methodical/cctor/simple/prefldinit2.il @@ -21,43 +21,6 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} -// MVID: {C486E388-5E60-42FA-B093-89857CB047D8} -.imagebase 0x00400000 -.subsystem 0x00000003 -.file alignment 512 -.corflags 0x00000001 -// Image base: 0x076c0000 -// -// ============== CLASS STRUCTURE DECLARATION ================== -// -.class private auto ansi beforefieldinit measure - extends [mscorlib]System.Object -{ -} // end of class measure - -.class private auto ansi test - extends [mscorlib]System.Object -{ -} // end of class test - -.class private auto ansi beforefieldinit Driver - extends [mscorlib]System.Object -{ -} // end of class Driver - - -// ============================================================= - - -// =============== GLOBAL FIELDS AND METHODS =================== - - -// ============================================================= - - -// =============== CLASS MEMBERS DECLARATION =================== -// note that class flags, 'extends' and 'implements' clauses -// are provided here for information only .class private auto ansi beforefieldinit measure extends [mscorlib]System.Object @@ -85,7 +48,7 @@ } // end of class measure -.class private auto ansi beforefieldinit test +.class private auto ansi test extends [mscorlib]System.Object { .method private hidebysig specialname rtspecialname static diff --git a/src/tests/JIT/Methodical/cctor/simple/prefldinit4.il b/src/tests/JIT/Methodical/cctor/simple/prefldinit4.il index 73775bfd92d082..00337900746cf3 100644 --- a/src/tests/JIT/Methodical/cctor/simple/prefldinit4.il +++ b/src/tests/JIT/Methodical/cctor/simple/prefldinit4.il @@ -21,43 +21,6 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} -// MVID: {623817A9-BEA6-4892-A378-D2135E123200} -.imagebase 0x00400000 -.subsystem 0x00000003 -.file alignment 512 -.corflags 0x00000001 -// Image base: 0x076c0000 -// -// ============== CLASS STRUCTURE DECLARATION ================== -// -.class private auto ansi beforefieldinit measure - extends [mscorlib]System.Object -{ -} // end of class measure - -.class private auto ansi test - extends [mscorlib]System.Object -{ -} // end of class test - -.class private auto ansi beforefieldinit Driver - extends [mscorlib]System.Object -{ -} // end of class Driver - - -// ============================================================= - - -// =============== GLOBAL FIELDS AND METHODS =================== - - -// ============================================================= - - -// =============== CLASS MEMBERS DECLARATION =================== -// note that class flags, 'extends' and 'implements' clauses -// are provided here for information only .class private auto ansi beforefieldinit measure extends [mscorlib]System.Object @@ -85,7 +48,7 @@ } // end of class measure -.class private auto ansi beforefieldinit test +.class private auto ansi test extends [mscorlib]System.Object { .field public static unsigned int8 b diff --git a/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_d.ilproj b/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_d.ilproj index 878562702d73f3..c8867de8469f2b 100644 --- a/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_d.ilproj +++ b/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_d.ilproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_r.ilproj b/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_r.ilproj index cd1bac01624027..95c0ac3a8ee3f5 100644 --- a/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_r.ilproj +++ b/src/tests/JIT/Methodical/cctor/simple/prefldinit4_il_r.ilproj @@ -2,6 +2,7 @@ Exe 1 + true PdbOnly diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_d.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_d.csproj index 755c374c9872ab..de7743ffe3ac91 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_do.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_do.csproj index e53cffcfda2528..c81edf743cba7a 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_do.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_r.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_r.csproj index dc9d871e27b573..ed114f2c94c345 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_ro.csproj index 7b33b418cefffa..03c6d9b6c67eb2 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_d.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_d.csproj index 206f15e7bd9476..df7ad52cb7c2dd 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_do.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_do.csproj index 592590107b0dc6..a8feff52022b08 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_do.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_r.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_r.csproj index 1bef3ea46dbe09..d9b29b93b7b1da 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_ro.csproj index 8cabe21ec9c16b..72d801e3668fc0 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise1b_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_d.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_d.csproj index ea8a3970ea9ecc..efea3f672c87f5 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_do.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_do.csproj index 630d8b404147d5..8f44eddc4aed19 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_do.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_r.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_r.csproj index aee731640df8e5..b1b8a7eec10886 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_ro.csproj index 11dcf51eae5874..7b65e0ce7ec1a3 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise2_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_d.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_d.csproj index ea1d7550331d0a..d09158ce9fee66 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_d.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_d.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_do.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_do.csproj index f9178bd51c2014..7fb627946740ee 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_do.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_do.csproj @@ -2,6 +2,7 @@ Exe 1 + true Full diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_r.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_r.csproj index 901a7cb4bc50a1..1d2268fdd8f355 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_r.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_r.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_ro.csproj b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_ro.csproj index af557a84944671..f1082bb7b370c2 100644 --- a/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_ro.csproj +++ b/src/tests/JIT/Methodical/cctor/xassem/xprecise4_cs_ro.csproj @@ -2,6 +2,7 @@ Exe 1 + true None diff --git a/src/tests/JIT/Methodical/delegate/oddpower.il b/src/tests/JIT/Methodical/delegate/_simpleoddpower.il similarity index 99% rename from src/tests/JIT/Methodical/delegate/oddpower.il rename to src/tests/JIT/Methodical/delegate/_simpleoddpower.il index 9741aa5d69a94c..dbfa752bab7209 100644 --- a/src/tests/JIT/Methodical/delegate/oddpower.il +++ b/src/tests/JIT/Methodical/delegate/_simpleoddpower.il @@ -8,7 +8,7 @@ .ver 4:0:0:0 } .assembly extern mscorlib {} -.assembly oddpower {} +.assembly _simpleoddpower {} .assembly extern xunit.core {} .class interface private abstract auto ansi Power { diff --git a/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_d.ilproj b/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_d.ilproj index 6b72209d6569d3..0a57e832d57663 100644 --- a/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_d.ilproj +++ b/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_d.ilproj @@ -7,6 +7,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_r.ilproj b/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_r.ilproj index 7c289b22c13ec5..e772be192c56d0 100644 --- a/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_r.ilproj +++ b/src/tests/JIT/Methodical/delegate/_simpleoddpower_il_r.ilproj @@ -8,6 +8,6 @@ False - + diff --git a/src/tests/JIT/Methodical/eh/deadcode/deadEHregionacrossBB.il b/src/tests/JIT/Methodical/eh/deadcode/deadEHregionacrossBB.il index 03b35c753ea65a..8b7d11304d556a 100644 --- a/src/tests/JIT/Methodical/eh/deadcode/deadEHregionacrossBB.il +++ b/src/tests/JIT/Methodical/eh/deadcode/deadEHregionacrossBB.il @@ -26,27 +26,15 @@ .class private auto ansi beforefieldinit test extends [mscorlib]System.Object { - .field private static class [eh_common]TestUtil.TestLog testLog - .method private hidebysig specialname rtspecialname static void .cctor() cil managed - { - .maxstack 2 - newobj instance void [eh_common]TestUtil.TestLog::.ctor() - stsfld class [eh_common]TestUtil.TestLog test::testLog - ret - } // end of method test::.cctor -} // end of class test - - - - - - - - + .field private static class [eh_common]TestUtil.TestLog testLog + .method private hidebysig specialname rtspecialname static void .cctor() cil managed + { + .maxstack 2 + newobj instance void [eh_common]TestUtil.TestLog::.ctor() + stsfld class [eh_common]TestUtil.TestLog test::testLog + ret + } // end of method test::.cctor -.class private auto ansi beforefieldinit test - extends [mscorlib]System.Object -{ .method public hidebysig static int32 Main() cil managed { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( @@ -57,9 +45,9 @@ .locals init (int32 V_0) ldsfld class [eh_common]TestUtil.TestLog test::testLog callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() - + L: - br IL_0019 + br IL_0019 .try { IL_0000: ldstr "In try" @@ -72,10 +60,10 @@ leave.s L } finally { endfinally - } + } IL_000a: leave.s IL_0019 } // end .try - catch [mscorlib]System.Object + catch [mscorlib]System.Object { IL_000c: pop IL_000d: ldstr "In catch" @@ -83,17 +71,17 @@ IL_0017: leave.s IL_0019 } // end handler - IL_0019: - ldsfld class [eh_common]TestUtil.TestLog test::testLog - callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() - - ldsfld class [eh_common]TestUtil.TestLog test::testLog - callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() - + IL_0019: + ldsfld class [eh_common]TestUtil.TestLog test::testLog + callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() + + ldsfld class [eh_common]TestUtil.TestLog test::testLog + callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() + IL_0022: ret } // end of method test::Main - .method public hidebysig specialname rtspecialname + .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 1 @@ -101,8 +89,4 @@ IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } // end of method test::.ctor - } // end of class test - - - diff --git a/src/tests/JIT/Methodical/eh/deadcode/deadcodeincatch.il b/src/tests/JIT/Methodical/eh/deadcode/deadcodeincatch.il index 38bb6144f35b9d..74c6dfd6977fed 100644 --- a/src/tests/JIT/Methodical/eh/deadcode/deadcodeincatch.il +++ b/src/tests/JIT/Methodical/eh/deadcode/deadcodeincatch.il @@ -19,15 +19,7 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} -// MVID: {3B8B6D1B-A317-4591-BD66-1D1000E3767F} -.imagebase 0x00400000 -.subsystem 0x00000003 -.file alignment 512 -.corflags 0x00000001 -// Image base: 0x03010000 -// -// ============== CLASS STRUCTURE DECLARATION ================== -// + .namespace hello { .class private auto ansi beforefieldinit Class1 @@ -60,30 +52,7 @@ stsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog ret } // end of method Class1::.cctor - - } // end of class Class1 - -} // end of namespace hello - - -// ============================================================= - - -// =============== GLOBAL FIELDS AND METHODS =================== - - -// ============================================================= - -// =============== CLASS MEMBERS DECLARATION =================== -// note that class flags, 'extends' and 'implements' clauses -// are provided here for information only - -.namespace hello -{ - .class private auto ansi beforefieldinit Class1 - extends [mscorlib]System.Object - { .method public hidebysig static void inTry() cil managed { @@ -212,11 +181,4 @@ } // end of method Class1::.ctor } // end of class Class1 - - -// ============================================================= - } // end of namespace hello - -//*********** DISASSEMBLY COMPLETE *********************** -// WARNING: Created Win32 resource file deadcodeincatch.res diff --git a/src/tests/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet.il b/src/tests/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet.il index f2c24d3916e13c..e9280a1b9542f2 100644 --- a/src/tests/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet.il +++ b/src/tests/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet.il @@ -18,54 +18,35 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} -.imagebase 0x00400000 -.subsystem 0x00000003 -.file alignment 512 -.corflags 0x00000001 -.namespace hello -{ - .class private auto ansi beforefieldinit Class1 - extends [mscorlib]System.Object - { - .field private static class [eh_common]TestUtil.TestLog testLog - .method private hidebysig specialname rtspecialname static void .cctor() cil managed - { - .maxstack 2 - .locals init (class [mscorlib]System.IO.StringWriter expectedOut) - newobj instance void [mscorlib]System.IO.StringWriter::.ctor() - stloc.s expectedOut - ldloc.s expectedOut - ldstr "1234" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - ldstr "test2" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - ldstr "1234" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - newobj instance void [eh_common]TestUtil.TestLog::.ctor(object) - stsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog - ret - } - } - -} - - - - - - - - .namespace hello { .class private auto ansi beforefieldinit Class1 extends [mscorlib]System.Object { - .method public hidebysig static int32 + .field private static class [eh_common]TestUtil.TestLog testLog + .method private hidebysig specialname rtspecialname static void .cctor() cil managed + { + .maxstack 2 + .locals init (class [mscorlib]System.IO.StringWriter expectedOut) + newobj instance void [mscorlib]System.IO.StringWriter::.ctor() + stloc.s expectedOut + ldloc.s expectedOut + ldstr "1234" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + ldstr "test2" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + ldstr "1234" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + newobj instance void [eh_common]TestUtil.TestLog::.ctor(object) + stsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog + ret + } + + .method public hidebysig static int32 Main() cil managed { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( @@ -76,9 +57,9 @@ .locals init (int32 V_0, string V_1, int32 V_2) - - ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog - callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() + + ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog + callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() IL_0000: ldc.i4 1234 IL_0002: stloc.0 IL_0003: ldloc.0 @@ -96,8 +77,8 @@ IL_001d: newobj instance void [mscorlib]System.Exception::.ctor() IL_0022: throw - } - catch [mscorlib]System.Object + } + catch [mscorlib]System.Object { IL_0023: pop leave.s IL_0066 @@ -124,8 +105,8 @@ IL_0036: leave.s IL_004a - } - catch [mscorlib]System.Object + } + catch [mscorlib]System.Object { IL_0038: pop IL_0039: ldloc.0 @@ -137,7 +118,7 @@ IL_0043: call void [System.Console]System.Console::WriteLine(string) IL_0048: leave.s IL_004a - } + } IL_004a: ldstr "unreached" IL_004f: call void [System.Console]System.Console::WriteLine(string) IL_0054: ldstr "end outer catch " @@ -147,33 +128,29 @@ IL_005f: call void [System.Console]System.Console::WriteLine(string) IL_0064: leave.s IL_0066 - } + } IL_0066: ldloc.0 IL_0067: stloc.2 IL_0068: br.s IL_006a IL_006a: ldloc.2 - call void [System.Console]System.Console::WriteLine(int32) - ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog - callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() - - ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog - callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() - + call void [System.Console]System.Console::WriteLine(int32) + ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog + callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() + + ldsfld class [eh_common]TestUtil.TestLog hello.Class1::testLog + callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() + IL_006b: ret - } + } - .method public hidebysig specialname rtspecialname + .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 1 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ret - } - - } - - - -} + IL_0006: ret + } + } +} \ No newline at end of file diff --git a/src/tests/JIT/Methodical/eh/finallyexec/catchrettoinnertry.il b/src/tests/JIT/Methodical/eh/finallyexec/catchrettoinnertry.il index 876d61b6d7cac5..c9b25864039f67 100644 --- a/src/tests/JIT/Methodical/eh/finallyexec/catchrettoinnertry.il +++ b/src/tests/JIT/Methodical/eh/finallyexec/catchrettoinnertry.il @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. - + .assembly extern System.Console { @@ -18,54 +18,34 @@ .ver 0:0:0:0 } .assembly extern xunit.core {} - .imagebase 0x00400000 - .subsystem 0x00000003 - .file alignment 512 - .corflags 0x00000001 - .namespace strswitch - { - .class private auto ansi beforefieldinit Class1 - extends [mscorlib]System.Object - { - } - - } - - - - - - - - - - .namespace strswitch - { + +.namespace strswitch +{ .class private auto ansi beforefieldinit Class1 extends [mscorlib]System.Object { - .field private static class [eh_common]TestUtil.TestLog testLog - .method private hidebysig specialname rtspecialname static void .cctor() cil managed - { - .maxstack 2 - .locals init (class [mscorlib]System.IO.StringWriter expectedOut) - newobj instance void [mscorlib]System.IO.StringWriter::.ctor() - stloc.s expectedOut - ldloc.s expectedOut - ldstr "Caught an exception" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - ldstr "bye" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - ldstr "In outer finally" - callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) - ldloc.s expectedOut - newobj instance void [eh_common]TestUtil.TestLog::.ctor(object) - stsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog - ret - } - .method private hidebysig static int32 + .field private static class [eh_common]TestUtil.TestLog testLog + .method private hidebysig specialname rtspecialname static void .cctor() cil managed + { + .maxstack 2 + .locals init (class [mscorlib]System.IO.StringWriter expectedOut) + newobj instance void [mscorlib]System.IO.StringWriter::.ctor() + stloc.s expectedOut + ldloc.s expectedOut + ldstr "Caught an exception" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + ldstr "bye" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + ldstr "In outer finally" + callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) + ldloc.s expectedOut + newobj instance void [eh_common]TestUtil.TestLog::.ctor(object) + stsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog + ret + } + .method private hidebysig static int32 Main() cil managed { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( @@ -73,10 +53,10 @@ ) .entrypoint .maxstack 2 - - ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog - callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() - + + ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog + callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() + .locals init (int32 V_0, class [mscorlib]System.Exception V_1, int32 V_2) @@ -89,20 +69,20 @@ branch_0002: ldloc.0 ldc.i4.3 bne.un.s branch_000c - + newobj instance void [mscorlib]System.IndexOutOfRangeException::.ctor() throw - + branch_000c: ldloc.0 ldc.i4.4 bne.un.s branch_001a - + ldstr "bye" call void [System.Console]System.Console::WriteLine(string) branch_001a: leave.s branch_002d - - } - catch [mscorlib]System.Exception + + } + catch [mscorlib]System.Exception { stloc.1 ldstr "Caught an exception" @@ -112,39 +92,34 @@ add stloc.0 leave.s branch_0002 - - } + + } branch_002d: leave.s branch_003a - - } + + } finally { ldstr "In outer finally" call void [System.Console]System.Console::WriteLine(string) endfinally - } - branch_003a: - ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog - callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() - - ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog - callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() - + } + branch_003a: + ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog + callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() + + ldsfld class [eh_common]TestUtil.TestLog strswitch.Class1::testLog + callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() + ret - } - - .method public hidebysig specialname rtspecialname + } + + .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 1 ldarg.0 call instance void [mscorlib]System.Object::.ctor() ret - } - - } - - - - } - + } + } +} diff --git a/src/tests/JIT/Methodical/eh/finallyexec/nestedfinallycall.il b/src/tests/JIT/Methodical/eh/finallyexec/nestedfinallycall.il index 898b08a21efead..d129ac8ef036ba 100644 --- a/src/tests/JIT/Methodical/eh/finallyexec/nestedfinallycall.il +++ b/src/tests/JIT/Methodical/eh/finallyexec/nestedfinallycall.il @@ -12,6 +12,7 @@ .assembly extern eh_common{} .assembly 'nestedfinallycall' {} .assembly extern xunit.core {} +.namespace Test_nestedfinallycall { .class public EHTest { .field private static class [eh_common]TestUtil.TestLog testLog @@ -41,7 +42,7 @@ callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) ldloc.s expectedOut newobj instance void [eh_common]TestUtil.TestLog::.ctor(object) - stsfld class [eh_common]TestUtil.TestLog EHTest::testLog + stsfld class [eh_common]TestUtil.TestLog Test_nestedfinallycall.EHTest::testLog ret } @@ -131,12 +132,12 @@ ) .entrypoint - ldsfld class [eh_common]TestUtil.TestLog EHTest::testLog + ldsfld class [eh_common]TestUtil.TestLog Test_nestedfinallycall.EHTest::testLog callvirt instance void [eh_common]TestUtil.TestLog::StartRecording() .try { - call void EHTest::f2() + call void Test_nestedfinallycall.EHTest::f2() leave RET } catch [mscorlib]System.Exception @@ -146,11 +147,12 @@ RET: ldstr "PASSED" call void [System.Console]System.Console::WriteLine(string) - ldsfld class [eh_common]TestUtil.TestLog EHTest::testLog + ldsfld class [eh_common]TestUtil.TestLog Test_nestedfinallycall.EHTest::testLog callvirt instance void [eh_common]TestUtil.TestLog::StopRecording() - ldsfld class [eh_common]TestUtil.TestLog EHTest::testLog + ldsfld class [eh_common]TestUtil.TestLog Test_nestedfinallycall.EHTest::testLog callvirt instance int32 [eh_common]TestUtil.TestLog::VerifyOutput() ret } } +} diff --git a/src/tests/JIT/Methodical/flowgraph/bug619534/twoEndFinallys_il.ilproj b/src/tests/JIT/Methodical/flowgraph/bug619534/twoEndFinallys_il_r.ilproj similarity index 100% rename from src/tests/JIT/Methodical/flowgraph/bug619534/twoEndFinallys_il.ilproj rename to src/tests/JIT/Methodical/flowgraph/bug619534/twoEndFinallys_il_r.ilproj diff --git a/src/tests/JIT/Methodical/flowgraph/bug621705/ptuple_lost.cs b/src/tests/JIT/Methodical/flowgraph/bug621705/ptuple_lost.cs index 17eae526f50566..dabb3c53d8a8e5 100644 --- a/src/tests/JIT/Methodical/flowgraph/bug621705/ptuple_lost.cs +++ b/src/tests/JIT/Methodical/flowgraph/bug621705/ptuple_lost.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +namespace Test_ptuple_lost +{ internal class A { public static int Main() @@ -26,3 +28,4 @@ public static int Main() } } } +} diff --git a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/ehDescriptorPtrUpdate.il b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/ehDescriptorPtrUpdate.il index 4f6e5bd950f6e5..ba30f56cbf39bd 100644 --- a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/ehDescriptorPtrUpdate.il +++ b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/ehDescriptorPtrUpdate.il @@ -11,6 +11,7 @@ .assembly extern System { auto } .assembly 'ehDescriptorPtrUpdate' {} .assembly extern xunit.core {} +.namespace Test_ehDescriptorPtrUpdate { .class public EHTest { @@ -27,12 +28,12 @@ } .method public static int32 GetInt32_tailcall() { - tail. call int32 EHTest::GetInt32() + tail. call int32 Test_ehDescriptorPtrUpdate.EHTest::GetInt32() ret } .method public static int64 GetInt64_tailcall() { - tail. call int64 EHTest::GetInt64() + tail. call int64 Test_ehDescriptorPtrUpdate.EHTest::GetInt64() ret } @@ -60,7 +61,7 @@ nop TARGET_2_3: TARGET_2_4: ldc.i8 1 - ldftn int32 EHTest::GetInt32_tailcall() + ldftn int32 Test_ehDescriptorPtrUpdate.EHTest::GetInt32_tailcall() calli int32 () newarr [mscorlib]System.Int64 ldc.i4 24 @@ -78,13 +79,13 @@ leave OUT0 end_try1: OUT0: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() br start_try2 start_fault2: br fault2_br start_catch1: catch1_out: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() pop newobj instance void [mscorlib]System.ArithmeticException::.ctor() throw @@ -107,7 +108,7 @@ end_finally1: catch2_out: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() newobj instance void [mscorlib]System.StackOverflowException::.ctor() throw end_catch2: @@ -124,7 +125,7 @@ end_filter1: fault2_br: start_try3: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() try3_out: leave fault2_out end_try3: @@ -135,7 +136,7 @@ ldc.i4.0 endfilter start_filter2: pop -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() filter2_out: leave fault2_out end_filter2: @@ -145,17 +146,17 @@ ldc.i4.0 endfilter start_filter3: pop -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() filter3_out: leave fault2_out end_filter3: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() fault2_out: endfault end_fault2: start_try2: -call void EHTest::f2() +call void Test_ehDescriptorPtrUpdate.EHTest::f2() try2_out: newobj instance void [mscorlib]System.ArgumentOutOfRangeException::.ctor() throw @@ -195,7 +196,7 @@ ret int32 V_4) .try { -call int32 EHTest::f1() +call int32 Test_ehDescriptorPtrUpdate.EHTest::f1() leave RET } catch [mscorlib]System.Exception @@ -209,3 +210,4 @@ ret } } +} diff --git a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop.il b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop.il index 689837b7dc5087..522f932c81373a 100644 --- a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop.il +++ b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop.il @@ -10,6 +10,7 @@ .assembly extern System { auto } .assembly 'fgloop' {} .assembly extern xunit.core {} +.namespace Test_fgloop { .class public EHTest { .field private static int64 fld0 @@ -32,12 +33,12 @@ } .method public static int32 GetInt32_tailcall() { - tail. call int32 EHTest::GetInt32() + tail. call int32 Test_fgloop.EHTest::GetInt32() ret } .method public static int64 GetInt64_tailcall() { - tail. call int64 EHTest::GetInt64() + tail. call int64 Test_fgloop.EHTest::GetInt64() ret } .method public static int64 f0(int64 arg0,int32 arg1,int64 arg2) cil managed @@ -56,7 +57,7 @@ start_try1: br try1_br try1_br: start_try2: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() try2_out: newobj instance void [mscorlib]System.CannotUnloadAppDomainException::.ctor() throw @@ -76,7 +77,7 @@ nop ldc.i4 94 starg.s arg1 ldc.i4 118 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 33 ldc.i4 64 or @@ -91,7 +92,7 @@ nop ldc.i4 64 stloc.0 ldc.i4.5 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 75 ldc.i4 52 starg.s arg1 @@ -99,13 +100,13 @@ nop starg.s arg1 ldc.i4 16 ldc.i4 64 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 67 ldc.i4 38 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 100 ldc.i4 32 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 63 ldc.i4 121 ldc.i4 80 @@ -113,21 +114,21 @@ nop ldc.i4 51 ldc.i4 37 ldc.i4 43 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 88 ldc.i4 67 ldc.i4 110 stloc.0 ldc.i4 93 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 35 ldc.i4 69 starg.s arg1 ldc.i4 30 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 117 ldc.i4 68 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 88 ldc.i4 32 ldc.i4 55 @@ -141,7 +142,7 @@ nop stloc.0 ldc.i4 22 ldc.i4 68 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 108 ldc.i4 81 ldc.i4 54 @@ -162,7 +163,7 @@ nop ldc.i4 71 starg.s arg1 ldc.i4 63 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 40 ldc.i4.5 starg.s arg1 @@ -179,11 +180,11 @@ nop starg.s arg1 ldc.i4 98 ldc.i4.2 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 94 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 82 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 38 ldc.i4 72 starg.s arg1 @@ -208,7 +209,7 @@ nop ldc.i4 114 stloc.0 ldc.i4 75 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 108 ldc.i4 61 ldc.i4 94 @@ -226,7 +227,7 @@ nop starg.s arg1 ldc.i4 89 ldc.i4 90 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 47 ldc.i4 120 ldc.i4 47 @@ -239,13 +240,13 @@ nop ldc.i4 81 bge TARGET_0_3 TARGET_0_2: - call int32 EHTest::GetInt32() + call int32 Test_fgloop.EHTest::GetInt32() ldc.i4 85 cgt - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 32 ldc.i4 59 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 37 starg.s arg1 ldc.i4 71 @@ -265,7 +266,7 @@ nop starg.s arg0 ldc.i8 109 ldc.i8 64 - stsfld int64 EHTest::fld1 + stsfld int64 Test_fgloop.EHTest::fld1 ldc.i8 62 mul ldc.i8 52 @@ -278,7 +279,7 @@ fault1_out: endfault end_fault1: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() try1_out: leave OUT0 end_try1: @@ -309,7 +310,7 @@ nop rem ldc.i8 105 ceq - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4.0 starg.s arg1 ldc.i4 57 @@ -330,14 +331,14 @@ nop ldc.i4 32 starg.s arg1 ldc.i4 50 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 126 ldc.i4 113 newobj instance void int32[13...,68...,1...,3...,98...,23...]::.ctor(int32,int32,int32,int32,int32,int32) ldc.i4 18 ldc.i4 71 ldc.i4 106 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 92 ldc.i4 74 ldc.i4 92 @@ -347,8 +348,8 @@ nop blt.un TARGET_1_1 TARGET_1_3: ldc.i8 114 - stsfld int64 EHTest::fld4 - ldsfld int64 EHTest::fld4 + stsfld int64 Test_fgloop.EHTest::fld4 + ldsfld int64 Test_fgloop.EHTest::fld4 starg.s arg0 sizeof [mscorlib]System.UIntPtr starg.s arg1 @@ -420,7 +421,7 @@ nop ldc.i4 17 starg.s arg1 ldc.i4 65 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 88 ldc.i4 35 ldc.i4 94 @@ -430,7 +431,7 @@ nop ldc.i4 112 call instance int64 int64[89...,0...,2...,34...,75...,124...,10...,86...,126...,126...,78...,113...,42...,2...,105...,44...]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4.8 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 103 newarr [mscorlib]System.Int64 ldc.i4 122 @@ -455,7 +456,7 @@ nop starg.s arg0 ldc.i8 117 or - stsfld int64 EHTest::fld3 + stsfld int64 Test_fgloop.EHTest::fld3 ldc.i8 49 ldc.i8 17 ble.un TARGET_2_4 @@ -473,7 +474,7 @@ ldc.i8 0 ldc.i4 112 blt.un TARGET_2_3 TARGET_2_3: - ldsfld int32 EHTest::fld2 + ldsfld int32 Test_fgloop.EHTest::fld2 newarr [mscorlib]System.Int32 ldc.i4 91 ldelem.i4 @@ -482,7 +483,7 @@ ldc.i8 0 ldc.i4 34 stloc.0 ldc.i4 114 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 109 stloc.0 ldc.i4 99 @@ -490,7 +491,7 @@ ldc.i8 0 mul ble.un TARGET_2_0 TARGET_2_4: - ldsfld int64 EHTest::fld4 + ldsfld int64 Test_fgloop.EHTest::fld4 ldc.i8 41 stloc 2 ldloca 2 @@ -499,7 +500,7 @@ ldc.i8 0 ldind.i8 stloc.2 ldarg.0 - stsfld int64 EHTest::fld3 + stsfld int64 Test_fgloop.EHTest::fld3 ldc.i8 100 neg ble.un TARGET_2_3 @@ -545,7 +546,7 @@ nop ldc.i8 56 ble.un TARGET_3_2 TARGET_3_2: - call int32 EHTest::GetInt32() + call int32 Test_fgloop.EHTest::GetInt32() ldc.i4 117 add ldc.i4 102 @@ -560,9 +561,9 @@ nop ldind.i8 bge.un TARGET_3_3 TARGET_3_4: - call int64 EHTest::GetInt64() + call int64 Test_fgloop.EHTest::GetInt64() stloc.1 - ldsfld int32 EHTest::fld5 + ldsfld int32 Test_fgloop.EHTest::fld5 newarr [mscorlib]System.Int64 ldc.i4 59 ldc.i4 12 @@ -575,7 +576,7 @@ nop ldc.i8 102 starg.s arg0 ldc.i8 99 - stsfld int64 EHTest::fld1 + stsfld int64 Test_fgloop.EHTest::fld1 ldc.i8 43 stloc.2 ldc.i8 83 @@ -603,7 +604,7 @@ ldc.i4.1 endfilter start_filter1: pop -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() filter1_out: leave OUT1 end_filter1: @@ -659,9 +660,9 @@ nop rem ldc.i4 107 or - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 19 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 65 ldc.i4 31 starg.s arg3 @@ -671,14 +672,14 @@ nop ldc.i4 90 ldc.i4 62 ldc.i4 88 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 10 ldc.i4 55 stloc.0 ldc.i4 99 stloc.0 ldc.i4 124 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 100 ldc.i4 112 ldc.i4 39 @@ -686,7 +687,7 @@ nop starg.s arg0 ldc.i4 121 ldc.i4 51 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 53 ldc.i4 33 ldc.i4 47 @@ -718,18 +719,18 @@ nop ldc.i4 22 ldc.i4 82 ldc.i4 73 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 83 ldc.i4 114 stloc.0 ldc.i4 68 ldc.i4 31 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 59 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 118 ldc.i4 25 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 70 ldc.i4 32 stloc.0 @@ -737,12 +738,12 @@ nop ldc.i4 33 starg.s arg3 ldc.i4 47 - stsfld int32 EHTest::fld5 + stsfld int32 Test_fgloop.EHTest::fld5 ldc.i4 9 ldc.i4 89 ldc.i4 18 ldc.i4 37 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 44 starg.s arg0 ldc.i4 43 @@ -763,9 +764,9 @@ nop refanyval [mscorlib]System.Int64 ldind.i8 ldc.i8 80 - stsfld int64 EHTest::fld3 + stsfld int64 Test_fgloop.EHTest::fld3 ldc.i8 27 - stsfld int64 EHTest::fld4 + stsfld int64 Test_fgloop.EHTest::fld4 ldc.i8 102 not bgt.un TARGET_4_3 @@ -791,9 +792,9 @@ nop beq TARGET_4_0 TARGET_4_4: ldloc.1 - stsfld int64 EHTest::fld0 + stsfld int64 Test_fgloop.EHTest::fld0 ldc.i8 9 - stsfld int64 EHTest::fld3 + stsfld int64 Test_fgloop.EHTest::fld3 ldc.i8 98 ldc.i8 85 bge TARGET_4_1 @@ -802,7 +803,7 @@ newobj instance void [mscorlib]System.ArgumentNullException::.ctor() throw end_try2: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() try1_out: newobj instance void [mscorlib]System.OutOfMemoryException::.ctor() throw @@ -838,7 +839,7 @@ nop ldc.i4 14 mul ldc.i4 72 - stsfld int32 EHTest::fld2 + stsfld int32 Test_fgloop.EHTest::fld2 ldc.i4 27 cgt ldc.i4.6 @@ -846,7 +847,7 @@ nop ldc.i4 19 bgt.un TARGET_5_4 TARGET_5_1: - ldsfld int64 EHTest::fld1 + ldsfld int64 Test_fgloop.EHTest::fld1 ldc.i8 103 bgt TARGET_5_2 TARGET_5_2: @@ -883,7 +884,7 @@ nop stloc.0 ldc.i4 61 ldelem.i8 - stsfld int64 EHTest::fld1 + stsfld int64 Test_fgloop.EHTest::fld1 ldc.i8 45 ldc.i8 75 starg.s arg1 @@ -909,31 +910,31 @@ start_filter3: pop br filter3_br start_finally3: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() finally3_out: endfinally end_finally3: filter3_br: start_try4: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() try4_out: newobj instance void [mscorlib]System.MissingFieldException::.ctor() throw end_try4: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() filter3_out: leave finally2_out end_filter3: finally2_br: start_try3: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() try3_out: leave finally2_out end_try3: -call void EHTest::f2() +call void Test_fgloop.EHTest::f2() finally2_out: endfinally end_finally2: @@ -978,7 +979,7 @@ ret ldc.i8 90 ldc.i4 113 ldc.i8 22 -call int32 EHTest::f1(int32 ,int64 ,int64 ,int32 ,int64 ) +call int32 Test_fgloop.EHTest::f1(int32 ,int64 ,int64 ,int32 ,int64 ) leave RET } catch [mscorlib]System.Exception @@ -992,3 +993,4 @@ ret } } +} diff --git a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop2.il b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop2.il index 291da667e16585..e9c1ac4f7360a8 100644 --- a/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop2.il +++ b/src/tests/JIT/Methodical/flowgraph/dev10_bug679008/fgloop2.il @@ -11,6 +11,7 @@ .assembly extern System { auto } .assembly 'fgloop2' {} .assembly extern xunit.core {} +.namespace Test_fgloop2 { .class public EHTest { .field private static int64 fld0 @@ -34,20 +35,20 @@ } .method public static int32 GetInt32_jmp() { - jmp int32 EHTest::GetInt32() + jmp int32 Test_fgloop2.EHTest::GetInt32() } .method public static int32 GetInt32_tailcall() { - tail. call int32 EHTest::GetInt32() + tail. call int32 Test_fgloop2.EHTest::GetInt32() ret } .method public static int64 GetInt64_jmp() { - jmp int64 EHTest::GetInt64() + jmp int64 Test_fgloop2.EHTest::GetInt64() } .method public static int64 GetInt64_tailcall() { - tail. call int64 EHTest::GetInt64() + tail. call int64 Test_fgloop2.EHTest::GetInt64() ret } .method public static int32 f0() cil managed @@ -71,11 +72,11 @@ nop bgt TARGET_0_4 TARGET_0_1: ldc.i8 111 - stsfld int64 EHTest::fld5 + stsfld int64 Test_fgloop2.EHTest::fld5 ldc.i8 63 ldc.i8 118 add - stsfld int64 EHTest::fld3 + stsfld int64 Test_fgloop2.EHTest::fld3 ldc.i8 121 ldc.i8 109 blt TARGET_0_0 @@ -87,7 +88,7 @@ nop ldc.i4 75 stloc 4 ldc.i4 83 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 18 ble TARGET_0_3 TARGET_0_3: @@ -113,7 +114,7 @@ nop mkrefany [mscorlib]System.Int64 refanyval [mscorlib]System.Int64 ldind.i8 - ldsfld int64 EHTest::fld3 + ldsfld int64 Test_fgloop2.EHTest::fld3 stloc.1 ldc.i8 56 neg @@ -147,7 +148,7 @@ OUT: ldc.i4 102 stloc.2 ldc.i4 60 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 96 ret OUT0: @@ -208,7 +209,7 @@ nop ldc.i4 99 stloc.0 ldc.i4 43 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 22 ldc.i4 125 stloc.0 @@ -219,13 +220,13 @@ nop ldc.i4 54 ldc.i4 23 ldc.i4 20 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 73 ldc.i4 106 ldc.i4 111 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 58 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 113 stloc.0 ldc.i4 72 @@ -237,23 +238,23 @@ nop ldc.i4 92 ldc.i4 32 ldc.i4 124 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 47 ldc.i4.6 ldc.i4 64 ldc.i4 18 ldc.i4 16 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.8 ldc.i4 21 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 47 ldc.i4 13 ldc.i4.3 ldc.i4 27 call instance int32 int32[,,,,,,,,,,,,]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4 98 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 21 bge TARGET_1_4 TARGET_1_1: @@ -264,7 +265,7 @@ nop bgt TARGET_1_1 TARGET_1_2: ldarg.1 - ldftn int64 EHTest::GetInt64_tailcall() + ldftn int64 Test_fgloop2.EHTest::GetInt64_tailcall() calli int64 () conv.i4 ldc.i4 21 @@ -272,11 +273,11 @@ nop ldc.i4 82 ldc.i4 80 ldc.i4 94 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 29 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 98 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 90 ldc.i4 61 ldc.i4.3 @@ -300,20 +301,20 @@ nop stloc.0 ldc.i4 32 ldc.i4 62 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 45 ldc.i4.0 ldc.i4 112 ldc.i4.5 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 114 stloc.0 ldc.i4 28 newobj instance void int32[55...85,102...113,84...104,55...104,43...83,64...93,118...122,67...71,76...105,83...123,115...124,16...56,117...127,26...104,51...97,60...104,88...110,18...80,27...47,119...123,103...122,111...112]::.ctor(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4 99 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.2 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 32 ldc.i4 51 ldc.i4 122 @@ -323,26 +324,26 @@ nop ldc.i4 105 ldc.i4 120 ldc.i4 101 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 101 ldc.i4 73 ldc.i4 91 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 121 ldc.i4 71 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 37 stloc.0 ldc.i4 34 ldc.i4.3 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.3 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.3 ldc.i4 85 ldc.i4 28 ldc.i4 102 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 12 stloc.0 ldc.i4.7 @@ -359,43 +360,43 @@ nop ldc.i4 126 stloc.0 ldc.i4 102 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 119 stloc.0 ldc.i4 67 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 58 ldc.i4 126 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 61 stloc.0 ldc.i4.5 call instance int32 int32[55...85,102...113,84...104,55...104,43...83,64...93,118...122,67...71,76...105,83...123,115...124,16...56,117...127,26...104,51...97,60...104,88...110,18...80,27...47,119...123,103...122,111...112]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) newarr [mscorlib]System.Int32 ldc.i4.6 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 96 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 14 ldelem.i4 ldc.i4 44 ldc.i4 64 ldc.i4 107 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 48 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 109 ldc.i4 53 ldc.i4 74 ldc.i4 61 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 56 stloc.0 ldc.i4 111 ldc.i4 45 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 60 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 85 ldc.i4 45 ldc.i4 58 @@ -406,9 +407,9 @@ nop ldc.i4 80 ldc.i4 107 ldc.i4 125 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 112 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 115 stloc.0 ldc.i4 74 @@ -416,7 +417,7 @@ nop ldc.i4 107 ldc.i4 112 ldc.i4 95 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.0 stloc.0 ldc.i4 100 @@ -428,9 +429,9 @@ nop ldc.i4 36 ldc.i4 56 ldc.i4 97 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 78 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 122 ldc.i4 121 newobj instance void int32[...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...]::.ctor(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) @@ -439,31 +440,31 @@ nop ldc.i4 86 ldc.i4 76 ldc.i4.1 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 118 ldc.i4 74 ldc.i4 38 ldc.i4 113 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 80 ldc.i4 69 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 13 ldc.i4 67 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 123 ldc.i4 105 ldc.i4 55 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 78 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 19 ldc.i4.4 ldc.i4 87 ldc.i4 99 ldc.i4 76 ldc.i4 42 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 60 ldc.i4 102 ldc.i4 43 @@ -472,10 +473,10 @@ nop ldc.i4 30 ldc.i4.1 ldc.i4 9 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 111 ldc.i4 113 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 62 ldc.i4 104 ldc.i4 115 @@ -486,10 +487,10 @@ nop call instance int32 int32[...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...,...]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4 63 ldc.i4 106 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 122 ldc.i4 14 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 125 ldc.i4 100 ldc.i4 77 @@ -498,12 +499,12 @@ nop ldc.i4 22 stloc.0 ldc.i4 123 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 33 ldc.i4 112 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 30 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 70 ldc.i4 59 ldc.i4 114 @@ -512,7 +513,7 @@ nop stloc.0 ldc.i4 99 ldc.i4 65 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 11 ldc.i4 16 ldc.i4 10 @@ -525,7 +526,7 @@ nop ldc.i4 110 stloc.0 ldc.i4 64 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 80 ldc.i4 88 ldc.i4.5 @@ -535,9 +536,9 @@ nop ldc.i4 93 ldc.i4 9 ldc.i4 43 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 79 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 124 stloc.0 ldc.i4 107 @@ -550,12 +551,12 @@ nop ldc.i4 111 ldc.i4 119 ldc.i4 78 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 10 call instance int64 int64[,,,,,,,,,,,,,,,,]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) bgt.un TARGET_1_2 TARGET_1_3: - call int64 EHTest::GetInt64_jmp() + call int64 Test_fgloop2.EHTest::GetInt64_jmp() ldarg.0 mul ldc.i8 119 @@ -586,17 +587,17 @@ end_try2: nop TARGET_2_0: - call int64 EHTest::GetInt64() + call int64 Test_fgloop2.EHTest::GetInt64() stloc.1 ldc.i8 25 ldc.i8 16 - stsfld int64 EHTest::fld2 + stsfld int64 Test_fgloop2.EHTest::fld2 ldc.i8 15 beq TARGET_2_3 TARGET_2_1: - call int64 EHTest::GetInt64() + call int64 Test_fgloop2.EHTest::GetInt64() conv.i8 - ldsfld int64 EHTest::fld2 + ldsfld int64 Test_fgloop2.EHTest::fld2 ble.un TARGET_2_1 TARGET_2_2: ldc.i4 47 @@ -615,11 +616,11 @@ nop ldc.i4 55 ldc.i4.5 or - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 58 ldc.i4 52 or - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 44 newarr [mscorlib]System.Int64 ldc.i4 36 @@ -627,9 +628,9 @@ nop ldc.i8 15 ldc.i8 26 sub - stsfld int64 EHTest::fld2 + stsfld int64 Test_fgloop2.EHTest::fld2 ldc.i8 81 - stsfld int64 EHTest::fld6 + stsfld int64 Test_fgloop2.EHTest::fld6 ldc.i8 80 ldc.i8 88 sub @@ -658,11 +659,11 @@ OUT: ldc.i4 29 newarr [mscorlib]System.Int32 ldc.i4 103 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 15 ldelem.i4 not - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 48 ldc.i4 74 stloc.0 @@ -672,9 +673,9 @@ OUT: ldc.i4 87 stloc.0 ldc.i4 42 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 30 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 28 stloc.0 ldc.i4.7 @@ -693,17 +694,17 @@ nop ldc.i8 85 blt TARGET_3_0 TARGET_3_1: - ldsflda int64 EHTest::fld3 + ldsflda int64 Test_fgloop2.EHTest::fld3 mkrefany [mscorlib]System.Int64 refanyval [mscorlib]System.Int64 ldind.i8 ldc.i8 85 stloc.2 ldc.i8 25 - stsfld int64 EHTest::fld1 + stsfld int64 Test_fgloop2.EHTest::fld1 ldc.i8 103 clt - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 77 conv.i4 ldc.i4 88 @@ -718,11 +719,11 @@ nop ldc.i4 103 ldc.i4 12 ldc.i4 40 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 91 ldc.i4 123 ldc.i4 100 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 91 stloc.0 ldc.i4 47 @@ -732,41 +733,41 @@ nop ldc.i4 16 ldc.i4 89 ldc.i4 13 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 52 ldc.i4 121 ldc.i4 19 ldc.i4 47 ldc.i4.8 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4.7 ldc.i4 36 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 61 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 27 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 125 ldc.i4 36 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 96 ldc.i4 39 ldc.i4 77 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 29 ldc.i4 20 ldc.i4 15 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 88 ldc.i4 126 ldc.i4.0 newobj instance void int32[67...72,77...122,8...55,10...14,49...124,5...38,81...103,40...104,68...93,75...101,8...91,70...78,75...85,106...109,1...71,71...126,105...109,88...123,122...123,5...127,89...103,18...73,90...113,116...119,15...78,100...100,46...75,76...120,76...87]::.ctor(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4 120 ldc.i4 12 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 109 ldc.i4.1 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 29 ldc.i4 121 ldc.i4 19 @@ -777,10 +778,10 @@ nop ldc.i4 66 ldc.i4 115 ldc.i4 79 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 31 ldc.i4 102 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 55 ldc.i4 40 ldc.i4 25 @@ -797,7 +798,7 @@ nop ldc.i4 48 ldc.i4.7 ldc.i4 22 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 98 ldc.i4 122 ldc.i4 100 @@ -806,11 +807,11 @@ nop ldc.i4 58 call instance int32 int32[67...72,77...122,8...55,10...14,49...124,5...38,81...103,40...104,68...93,75...101,8...91,70...78,75...85,106...109,1...71,71...126,105...109,88...123,122...123,5...127,89...103,18...73,90...113,116...119,15...78,100...100,46...75,76...120,76...87]::Get(int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32,int32) ldc.i4 15 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 39 bge.un TARGET_3_4 TARGET_3_2: - ldftn int64 EHTest::GetInt64_tailcall() + ldftn int64 Test_fgloop2.EHTest::GetInt64_tailcall() calli int64 () ldc.i4 47 ldc.i4 7 @@ -819,9 +820,9 @@ nop ldc.i4 57 stloc.0 ldc.i4 127 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 108 - stsfld int32 EHTest::fld4 + stsfld int32 Test_fgloop2.EHTest::fld4 ldc.i4 123 ldelem.i8 starg.s arg1 @@ -893,7 +894,7 @@ ret { ldc.i8 1 ldc.i8 24 -call int32 EHTest::f1(int64 ,int64 ) +call int32 Test_fgloop2.EHTest::f1(int64 ,int64 ) leave RET } catch [mscorlib]System.Exception @@ -907,3 +908,4 @@ ret } } +} diff --git a/src/tests/JIT/Methodical/int64/misc/longmul.il b/src/tests/JIT/Methodical/int64/misc/longmul.il index 3b1ea525434a03..f73ebe95bf95bc 100644 --- a/src/tests/JIT/Methodical/int64/misc/longmul.il +++ b/src/tests/JIT/Methodical/int64/misc/longmul.il @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern System.Console { auto } -.assembly extern System.Runtime { auto } +.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) } .assembly 'longmul' { } .assembly extern xunit.core {} diff --git a/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_large.il b/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_large.il index 5d8abca482c014..12da6c6429d313 100644 --- a/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_large.il +++ b/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_large.il @@ -11,6 +11,7 @@ .assembly 'zeroinit01_large'{} .assembly extern xunit.core {} +.namespace Test_zeroinit01_large { .class private auto ansi beforefieldinit T extends [mscorlib]System.Object { @@ -30,7 +31,7 @@ IL_0000: ldc.i4.1 IL_0001: stloc.0 - IL_0002: call void T::dirtyStack() + IL_0002: call void Test_zeroinit01_large.T::dirtyStack() // localloc IL_0007: ldc.i4.4 IL_0008: ldc.i4 0x1000 @@ -39,7 +40,7 @@ IL_0010: stloc.1 // Set size of localloc IL_0011: ldc.i4 0x1000 - IL_0016: stsfld int32 T::size_to_test + IL_0016: stsfld int32 Test_zeroinit01_large.T::size_to_test IL_001b: ldc.i4.0 IL_001c: stloc.2 @@ -61,7 +62,7 @@ IL_002b: add IL_002c: stloc.2 L_LOOP2: ldloc.2 - IL_002e: ldsfld int32 T::size_to_test + IL_002e: ldsfld int32 Test_zeroinit01_large.T::size_to_test IL_0033: blt.s L_LOOP1 IL_0035: ldloc.0 @@ -76,7 +77,7 @@ IL_0049: call void [System.Console]System.Console::WriteLine(string) ldc.i4.1 IL_004e: ret - } // end of method T::Main + } // end of method Test_zeroinit01_large.T::Main .method public hidebysig static void dirtyStack() cil managed { @@ -85,7 +86,7 @@ .locals (int32* buffer, int32 n) IL_0000: ldc.i4.4 - IL_0001: ldsfld int32 T::size_to_test + IL_0001: ldsfld int32 Test_zeroinit01_large.T::size_to_test IL_0006: mul IL_0007: localloc IL_0009: stloc.0 @@ -105,11 +106,11 @@ IL_0017: add IL_0018: stloc.1 IL_0019: ldloc.1 - IL_001a: ldsfld int32 T::size_to_test + IL_001a: ldsfld int32 Test_zeroinit01_large.T::size_to_test IL_001f: blt.s IL_000e IL_0021: ret - } // end of method T::dirtyStack + } // end of method Test_zeroinit01_large.T::dirtyStack .method public hidebysig specialname rtspecialname instance void .ctor() cil managed @@ -119,6 +120,7 @@ IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret - } // end of method T::.ctor + } // end of method Test_zeroinit01_large.T::.ctor -} // end of class T +} // end of class Test_zeroinit01_large.T +} diff --git a/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_small.il b/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_small.il index 00251b775d13b9..d2d1b3d8100af8 100644 --- a/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_small.il +++ b/src/tests/JIT/Methodical/localloc/zeroinit/zeroinit01_small.il @@ -11,6 +11,7 @@ .assembly 'zeroinit01_small'{} .assembly extern xunit.core {} +.namespace Test_zeroinit01_small { .class private auto ansi beforefieldinit T extends [mscorlib]System.Object { @@ -30,7 +31,7 @@ IL_0000: ldc.i4.1 IL_0001: stloc.0 - IL_0002: call void T::dirtyStack() + IL_0002: call void Test_zeroinit01_small.T::dirtyStack() // localloc IL_0007: ldc.i4.4 IL_0008: ldc.i4.1 @@ -39,7 +40,7 @@ IL_0010: stloc.1 // Set size of localloc IL_0011: ldc.i4.1 - IL_0016: stsfld int32 T::size_to_test + IL_0016: stsfld int32 Test_zeroinit01_small.T::size_to_test IL_001b: ldc.i4.0 IL_001c: stloc.2 @@ -61,7 +62,7 @@ IL_002b: add IL_002c: stloc.2 L_LOOP2: ldloc.2 - IL_002e: ldsfld int32 T::size_to_test + IL_002e: ldsfld int32 Test_zeroinit01_small.T::size_to_test IL_0033: blt.s L_LOOP1 IL_0035: ldloc.0 @@ -76,7 +77,7 @@ IL_0049: call void [System.Console]System.Console::WriteLine(string) ldc.i4.1 IL_004e: ret - } // end of method T::Main + } // end of method Test_zeroinit01_small.T::Main .method public hidebysig static void dirtyStack() cil managed { @@ -85,7 +86,7 @@ .locals (int32* buffer, int32 n) IL_0000: ldc.i4.4 - IL_0001: ldsfld int32 T::size_to_test + IL_0001: ldsfld int32 Test_zeroinit01_small.T::size_to_test IL_0006: mul IL_0007: localloc IL_0009: stloc.0 @@ -105,11 +106,11 @@ IL_0017: add IL_0018: stloc.1 IL_0019: ldloc.1 - IL_001a: ldsfld int32 T::size_to_test + IL_001a: ldsfld int32 Test_zeroinit01_small.T::size_to_test IL_001f: blt.s IL_000e IL_0021: ret - } // end of method T::dirtyStack + } // end of method Test_zeroinit01_small.T::dirtyStack .method public hidebysig specialname rtspecialname instance void .ctor() cil managed @@ -119,6 +120,7 @@ IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret - } // end of method T::.ctor + } // end of method Test_zeroinit01_small.T::.ctor -} // end of class T +} // end of class Test_zeroinit01_small.T +} diff --git a/src/tests/JIT/Methodical/stringintern/test1.cs b/src/tests/JIT/Methodical/stringintern/test1.cs index cff1c451332ee5..ac995ec48d5711 100644 --- a/src/tests/JIT/Methodical/stringintern/test1.cs +++ b/src/tests/JIT/Methodical/stringintern/test1.cs @@ -6,7 +6,7 @@ using System; using System.Runtime.CompilerServices; -class +public class #if XASSEM Test1_xassem #else diff --git a/src/tests/JIT/Methodical/stringintern/test2.cs b/src/tests/JIT/Methodical/stringintern/test2.cs index 2c088ec8f1651d..ee9fa57dd8719a 100644 --- a/src/tests/JIT/Methodical/stringintern/test2.cs +++ b/src/tests/JIT/Methodical/stringintern/test2.cs @@ -6,7 +6,7 @@ using System; using System.Runtime.CompilerServices; -class +public class #if XASSEM Test2_xassem #else diff --git a/src/tests/JIT/Methodical/stringintern/test4.cs b/src/tests/JIT/Methodical/stringintern/test4.cs index 927d16da442a77..d83f9aec8f9e26 100644 --- a/src/tests/JIT/Methodical/stringintern/test4.cs +++ b/src/tests/JIT/Methodical/stringintern/test4.cs @@ -6,7 +6,7 @@ using System; using System.Runtime.CompilerServices; -class +public class #if XASSEM Test4_xassem #else diff --git a/src/tests/JIT/Methodical/structs/ExplicitLayout.cs b/src/tests/JIT/Methodical/structs/ExplicitLayout.cs index f159193449d9c1..a41e4a165535a1 100644 --- a/src/tests/JIT/Methodical/structs/ExplicitLayout.cs +++ b/src/tests/JIT/Methodical/structs/ExplicitLayout.cs @@ -5,8 +5,9 @@ using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Xunit; -class ExplicitLayout +public class ExplicitLayout { #pragma warning disable 618 [StructLayout(LayoutKind.Explicit, Size = SIZE)] @@ -25,9 +26,10 @@ internal unsafe struct TestStruct } #pragma warning restore 618 - internal class Program + public class Program { - private static int Main() + [Fact] + public static int TestEntrypoint() { int returnVal = 100; diff --git a/src/tests/JIT/Methodical/tailcall_v4/delegateTail.il b/src/tests/JIT/Methodical/tailcall_v4/delegateTail.il index 36e24c1ef88153..7984b5dff783cb 100644 --- a/src/tests/JIT/Methodical/tailcall_v4/delegateTail.il +++ b/src/tests/JIT/Methodical/tailcall_v4/delegateTail.il @@ -3,16 +3,8 @@ -.assembly extern mscorlib -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) - .ver 4:0:0:0 -} -.assembly extern System.Runtime -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) - .ver 4:0:0:0 -} +.assembly extern mscorlib { auto } +.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) } .assembly 'delegateTail' { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) diff --git a/src/tests/JIT/Methodical/unsafecsharp/main.cs b/src/tests/JIT/Methodical/unsafecsharp/main.cs index 6706964df63af4..b0afef49cb87b8 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/main.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/main.cs @@ -3,6 +3,8 @@ using System; +namespace UnsafeCSharp +{ public struct A { public long m_aval; @@ -41,3 +43,4 @@ public static unsafe void init_all(long mode) public unsafe static long get_i2(long i) { return i; } public unsafe static long get_i3(ref long ri) { return ri; } } +} diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-0.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-0.cs index c27972016346e5..fda99224f4a137 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-0.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-0.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-1.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-1.cs index c25c8d9eab8af1..f6d1aad196d55d 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-1.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-1.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-2.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-2.cs index e60897b03c8a1c..649b1a50f9dc39 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-2.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-2.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-3.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-3.cs index 2ac1999c4a7510..09d3c592d21606 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-3.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-3.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-4.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-4.cs index 783962d71ac5e3..b2618489a4a4e3 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-4.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-4.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-5.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-5.cs index 61161d437ed95b..8a34da8dd55487 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-5.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-5.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/unsafecsharp/unsafe-6.cs b/src/tests/JIT/Methodical/unsafecsharp/unsafe-6.cs index 04539ff465d6f8..53aed39d972f62 100644 --- a/src/tests/JIT/Methodical/unsafecsharp/unsafe-6.cs +++ b/src/tests/JIT/Methodical/unsafecsharp/unsafe-6.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using UnsafeCSharp; internal class TestApp { diff --git a/src/tests/JIT/Methodical/xxblk/dynblk_order.il b/src/tests/JIT/Methodical/xxblk/dynblk_order.il index ebb24d49d1bddf..30f1f024eca2f6 100644 --- a/src/tests/JIT/Methodical/xxblk/dynblk_order.il +++ b/src/tests/JIT/Methodical/xxblk/dynblk_order.il @@ -3,7 +3,7 @@ // Tests that cpblk/initblk importation sastifies ordering constraints. -.assembly extern System.Runtime { } +.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) } .assembly extern System.Console { } .assembly extern xunit.core {} diff --git a/src/tests/JIT/Methodical/xxblk/dynblk_order_d.ilproj b/src/tests/JIT/Methodical/xxblk/dynblk_order_il_d.ilproj similarity index 100% rename from src/tests/JIT/Methodical/xxblk/dynblk_order_d.ilproj rename to src/tests/JIT/Methodical/xxblk/dynblk_order_il_d.ilproj diff --git a/src/tests/JIT/Methodical/xxblk/dynblk_order_ro.ilproj b/src/tests/JIT/Methodical/xxblk/dynblk_order_il_r.ilproj similarity index 100% rename from src/tests/JIT/Methodical/xxblk/dynblk_order_ro.ilproj rename to src/tests/JIT/Methodical/xxblk/dynblk_order_il_r.ilproj diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_d.ilproj deleted file mode 100644 index 65a24402d953da..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_d.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - - true - Full - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_r.ilproj deleted file mode 100644 index da97def20711af..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_arm_il_r.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - - true - PdbOnly - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86.il similarity index 56% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof32.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86.il index 1bf74007235178..375142cd2f8da5 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86.il @@ -3,10 +3,10 @@ // sizeof32.il .assembly extern mscorlib { } -.assembly sizeof32 { } +.assembly sizeof32_Target_32Bit_x86 { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof32_Target_32Bit_x86_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -24,9 +24,9 @@ .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field public valuetype JitTest.SimpleStruct ss1 - .field public valuetype JitTest.SimpleStruct[0...] ss_array - .field public valuetype JitTest.SimpleStruct ss2 + .field public valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct ss1 + .field public valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -43,23 +43,23 @@ .maxstack 4 .locals (int32 V_0, int32 V_1, - valuetype JitTest.RefComplexStruct V_2, - valuetype JitTest.SimpleStruct V_3) - IL_0000: sizeof JitTest.RefComplexStruct + valuetype JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct V_2, + valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct V_3) + IL_0000: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0006: conv.i1 IL_0007: conv.i4 IL_0008: stloc.0 IL_0009: ldloc.0 - IL_000a: sizeof JitTest.RefComplexStruct + IL_000a: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0010: ldloca.s V_2 - IL_0012: initobj JitTest.RefComplexStruct + IL_0012: initobj JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0018: ldloc.2 IL_0019: stloc.2 IL_001a: ldloca.s V_2 - IL_001c: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_001c: ldfld valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct::ss1 IL_0021: stloc.3 IL_0022: ldloca.s V_3 - IL_0024: ldfld int8 JitTest.SimpleStruct::m_sbyte + IL_0024: ldfld int8 JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct::m_sbyte IL_0029: conv.i4 IL_002a: add IL_002b: add @@ -67,47 +67,47 @@ IL_002d: ldloc.0 IL_002e: ldc.i4 0x80 IL_0033: ldloca.s V_2 - IL_0035: initobj JitTest.RefComplexStruct + IL_0035: initobj JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_003b: ldloc.2 IL_003c: stloc.2 IL_003d: ldloca.s V_2 - IL_003f: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_003f: ldfld valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct::ss2 IL_0044: stloc.3 IL_0045: ldloca.s V_3 - IL_0047: ldfld unsigned int16 JitTest.SimpleStruct::m_ushort + IL_0047: ldfld unsigned int16 JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct::m_ushort IL_004c: conv.i4 IL_004d: sub - IL_004e: sizeof JitTest.RefComplexStruct + IL_004e: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0054: sub IL_0055: sub IL_0056: stloc.0 IL_0057: ldloc.0 - IL_0058: sizeof JitTest.RefComplexStruct + IL_0058: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_005e: ldloca.s V_2 - IL_0060: initobj JitTest.RefComplexStruct + IL_0060: initobj JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0066: ldloc.2 IL_0067: stloc.2 IL_0068: ldloca.s V_2 - IL_006a: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_006a: ldfld valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct::ss1 IL_006f: stloc.3 IL_0070: ldloca.s V_3 - IL_0072: ldfld unsigned int32 JitTest.SimpleStruct::m_uint + IL_0072: ldfld unsigned int32 JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct::m_uint IL_0077: ldc.i4.1 IL_0078: add IL_0079: mul IL_007a: mul IL_007b: stloc.0 IL_007c: ldloc.0 - IL_007d: sizeof JitTest.RefComplexStruct + IL_007d: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_0083: ldloca.s V_2 - IL_0085: initobj JitTest.RefComplexStruct + IL_0085: initobj JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_008b: ldloc.2 IL_008c: stloc.2 IL_008d: ldloca.s V_2 - IL_008f: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_008f: ldfld valuetype JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct::ss2 IL_0094: stloc.3 IL_0095: ldloca.s V_3 - IL_0097: ldfld unsigned int64 JitTest.SimpleStruct::m_ulong + IL_0097: ldfld unsigned int64 JitTest_sizeof32_Target_32Bit_x86_il.SimpleStruct::m_ulong IL_009c: ldc.i4.1 IL_009d: conv.i8 IL_009e: add @@ -115,13 +115,13 @@ IL_00a0: div IL_00a1: div IL_00a2: stloc.0 - IL_00a3: sizeof JitTest.RefComplexStruct + IL_00a3: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_00a9: ldc.i4.s 64 IL_00ab: xor IL_00ac: ldloc.0 IL_00ad: or IL_00ae: stloc.0 - IL_00af: sizeof JitTest.RefComplexStruct + IL_00af: sizeof JitTest_sizeof32_Target_32Bit_x86_il.RefComplexStruct IL_00b5: ldc.i4.s -65 IL_00b7: xor IL_00b8: ldloc.0 diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_d.ilproj index 572ecc10bf8e92..e28723ec7209b9 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_d.ilproj @@ -8,6 +8,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_r.ilproj index a994cef1742038..c768ac7341feb0 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_32Bit_x86_il_r.ilproj @@ -8,6 +8,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof32.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm.il similarity index 54% rename from src/tests/JIT/Methodical/xxobj/sizeof/64sizeof32.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm.il index 7a711adcde27c5..f2b8df36a482ac 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof32.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm.il @@ -2,10 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern mscorlib { } -.assembly '64sizeof32' { } +.assembly 'sizeof32_Target_64Bit_and_arm' { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof32_Target_64Bit_and_arm_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -23,9 +23,9 @@ .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field public valuetype JitTest.SimpleStruct ss1 - .field public valuetype JitTest.SimpleStruct[0...] ss_array - .field public valuetype JitTest.SimpleStruct ss2 + .field public valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct ss1 + .field public valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -42,23 +42,23 @@ .maxstack 4 .locals (int32 V_0, int32 V_1, - valuetype JitTest.RefComplexStruct V_2, - valuetype JitTest.SimpleStruct V_3) - IL_0000: sizeof JitTest.RefComplexStruct + valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct V_2, + valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct V_3) + IL_0000: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0006: conv.i1 IL_0007: conv.i4 IL_0008: stloc.0 IL_0009: ldloc.0 - IL_000a: sizeof JitTest.RefComplexStruct + IL_000a: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0010: ldloca.s V_2 - IL_0012: initobj JitTest.RefComplexStruct + IL_0012: initobj JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0018: ldloc.2 IL_0019: stloc.2 IL_001a: ldloca.s V_2 - IL_001c: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_001c: ldfld valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct::ss1 IL_0021: stloc.3 IL_0022: ldloca.s V_3 - IL_0024: ldfld int8 JitTest.SimpleStruct::m_sbyte + IL_0024: ldfld int8 JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct::m_sbyte IL_0029: conv.i4 IL_002a: add IL_002b: add @@ -66,47 +66,47 @@ IL_002d: ldloc.0 IL_002e: ldc.i4 144 IL_0033: ldloca.s V_2 - IL_0035: initobj JitTest.RefComplexStruct + IL_0035: initobj JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_003b: ldloc.2 IL_003c: stloc.2 IL_003d: ldloca.s V_2 - IL_003f: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_003f: ldfld valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct::ss2 IL_0044: stloc.3 IL_0045: ldloca.s V_3 - IL_0047: ldfld unsigned int16 JitTest.SimpleStruct::m_ushort + IL_0047: ldfld unsigned int16 JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct::m_ushort IL_004c: conv.i4 IL_004d: sub - IL_004e: sizeof JitTest.RefComplexStruct + IL_004e: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0054: sub IL_0055: sub IL_0056: stloc.0 IL_0057: ldloc.0 - IL_0058: sizeof JitTest.RefComplexStruct + IL_0058: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_005e: ldloca.s V_2 - IL_0060: initobj JitTest.RefComplexStruct + IL_0060: initobj JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0066: ldloc.2 IL_0067: stloc.2 IL_0068: ldloca.s V_2 - IL_006a: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_006a: ldfld valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct::ss1 IL_006f: stloc.3 IL_0070: ldloca.s V_3 - IL_0072: ldfld unsigned int32 JitTest.SimpleStruct::m_uint + IL_0072: ldfld unsigned int32 JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct::m_uint IL_0077: ldc.i4.1 IL_0078: add IL_0079: mul IL_007a: mul IL_007b: stloc.0 IL_007c: ldloc.0 - IL_007d: sizeof JitTest.RefComplexStruct + IL_007d: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_0083: ldloca.s V_2 - IL_0085: initobj JitTest.RefComplexStruct + IL_0085: initobj JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_008b: ldloc.2 IL_008c: stloc.2 IL_008d: ldloca.s V_2 - IL_008f: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_008f: ldfld valuetype JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct::ss2 IL_0094: stloc.3 IL_0095: ldloca.s V_3 - IL_0097: ldfld unsigned int64 JitTest.SimpleStruct::m_ulong + IL_0097: ldfld unsigned int64 JitTest_sizeof32_Target_64Bit_and_arm_il.SimpleStruct::m_ulong IL_009c: ldc.i4.1 IL_009d: conv.i8 IL_009e: add @@ -114,13 +114,13 @@ IL_00a0: div IL_00a1: div IL_00a2: stloc.0 - IL_00a3: sizeof JitTest.RefComplexStruct + IL_00a3: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_00a9: ldc.i4.s 72 IL_00ab: xor IL_00ac: ldloc.0 IL_00ad: or IL_00ae: stloc.0 - IL_00af: sizeof JitTest.RefComplexStruct + IL_00af: sizeof JitTest_sizeof32_Target_64Bit_and_arm_il.RefComplexStruct IL_00b5: ldc.i4.s -73 IL_00b7: xor IL_00b8: ldloc.0 diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_d.ilproj similarity index 68% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_d.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_d.ilproj index 7c7fdcffc56176..a9135247c47d5c 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_d.ilproj @@ -4,10 +4,10 @@ true 1 - true + true Full - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_r.ilproj similarity index 68% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_r.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_r.ilproj index 1301afe85c19f0..6fbcd8d829ddc6 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_and_arm_il_r.ilproj @@ -4,10 +4,10 @@ true 1 - true + true PdbOnly - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_d.ilproj deleted file mode 100644 index ddb0208a5e46b6..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_d.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - Full - - true - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_r.ilproj deleted file mode 100644 index 39e76aef597b38..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_arm_il_r.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - - true - PdbOnly - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86.il similarity index 56% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof64.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86.il index e215feca291733..1ce45bdff6ca2b 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86.il @@ -3,10 +3,10 @@ // sizeof64.il .assembly extern mscorlib { } -.assembly sizeof64 { } +.assembly sizeof64_Target_32Bit_x86 { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof64_Target_32Bit_x86_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -20,14 +20,14 @@ .field public unsigned int16 m_ushort .field public int64 m_long .field public unsigned int64 m_ulong - .field public valuetype JitTest.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct[0...] ss_array } .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field public valuetype JitTest.SimpleStruct ss1 - .field public valuetype JitTest.SimpleStruct[0...] ss_array - .field public valuetype JitTest.SimpleStruct ss2 + .field public valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct ss1 + .field public valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -44,23 +44,23 @@ .maxstack 4 .locals (int64 V_0, int32 V_1, - valuetype JitTest.RefComplexStruct V_2, - valuetype JitTest.SimpleStruct V_3) - IL_0000: sizeof JitTest.RefComplexStruct + valuetype JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct V_2, + valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct V_3) + IL_0000: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0006: conv.i1 IL_0007: conv.i8 IL_0008: stloc.0 IL_0009: ldloc.0 - IL_000a: sizeof JitTest.RefComplexStruct + IL_000a: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0010: ldloca.s V_2 - IL_0012: initobj JitTest.RefComplexStruct + IL_0012: initobj JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0018: ldloc.2 IL_0019: stloc.2 IL_001a: ldloca.s V_2 - IL_001c: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_001c: ldfld valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct::ss1 IL_0021: stloc.3 IL_0022: ldloca.s V_3 - IL_0024: ldfld int8 JitTest.SimpleStruct::m_sbyte + IL_0024: ldfld int8 JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct::m_sbyte IL_0029: conv.i4 IL_002a: add IL_002b: conv.i8 @@ -70,33 +70,33 @@ IL_002f: ldc.i4 0x80 IL_0034: conv.i8 IL_0035: ldloca.s V_2 - IL_0037: initobj JitTest.RefComplexStruct + IL_0037: initobj JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_003d: ldloc.2 IL_003e: stloc.2 IL_003f: ldloca.s V_2 - IL_0041: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_0041: ldfld valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct::ss2 IL_0046: stloc.3 IL_0047: ldloca.s V_3 - IL_0049: ldfld unsigned int16 JitTest.SimpleStruct::m_ushort + IL_0049: ldfld unsigned int16 JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct::m_ushort IL_004e: conv.u8 IL_004f: sub - IL_0050: sizeof JitTest.RefComplexStruct + IL_0050: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0056: conv.i8 IL_0057: sub IL_0058: sub IL_0059: stloc.0 IL_005a: ldloc.0 - IL_005b: sizeof JitTest.RefComplexStruct + IL_005b: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0061: conv.i8 IL_0062: ldloca.s V_2 - IL_0064: initobj JitTest.RefComplexStruct + IL_0064: initobj JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_006a: ldloc.2 IL_006b: stloc.2 IL_006c: ldloca.s V_2 - IL_006e: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_006e: ldfld valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct::ss1 IL_0073: stloc.3 IL_0074: ldloca.s V_3 - IL_0076: ldfld unsigned int32 JitTest.SimpleStruct::m_uint + IL_0076: ldfld unsigned int32 JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct::m_uint IL_007b: ldc.i4.1 IL_007c: add IL_007d: conv.u8 @@ -104,16 +104,16 @@ IL_007f: mul IL_0080: stloc.0 IL_0081: ldloc.0 - IL_0082: sizeof JitTest.RefComplexStruct + IL_0082: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0088: ldloca.s V_2 - IL_008a: initobj JitTest.RefComplexStruct + IL_008a: initobj JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_0090: ldloc.2 IL_0091: stloc.2 IL_0092: ldloca.s V_2 - IL_0094: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_0094: ldfld valuetype JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct::ss2 IL_0099: stloc.3 IL_009a: ldloca.s V_3 - IL_009c: ldfld unsigned int64 JitTest.SimpleStruct::m_ulong + IL_009c: ldfld unsigned int64 JitTest_sizeof64_Target_32Bit_x86_il.SimpleStruct::m_ulong IL_00a1: ldc.i4.1 IL_00a2: conv.i8 IL_00a3: add @@ -122,14 +122,14 @@ IL_00a6: conv.i8 IL_00a7: div IL_00a8: stloc.0 - IL_00a9: sizeof JitTest.RefComplexStruct + IL_00a9: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_00af: ldc.i4.s 64 IL_00b1: xor IL_00b2: conv.i8 IL_00b3: ldloc.0 IL_00b4: or IL_00b5: stloc.0 - IL_00b6: sizeof JitTest.RefComplexStruct + IL_00b6: sizeof JitTest_sizeof64_Target_32Bit_x86_il.RefComplexStruct IL_00bc: ldc.i4.s -65 IL_00be: xor IL_00bf: conv.i8 diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_d.ilproj index 7f7c6d1fedcf7d..bcaabf8519f964 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_d.ilproj @@ -8,6 +8,6 @@ true - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_r.ilproj index a9ed1470bd2557..010eac66a3bb15 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_32Bit_x86_il_r.ilproj @@ -8,6 +8,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof64.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm.il similarity index 55% rename from src/tests/JIT/Methodical/xxobj/sizeof/64sizeof64.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm.il index c1fb131103e87c..66b49e742205b5 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof64.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm.il @@ -2,10 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. .assembly extern mscorlib { } -.assembly '64sizeof64' { } +.assembly 'sizeof64_Target_64Bit_and_arm' { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof64_Target_64Bit_and_arm_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -19,14 +19,14 @@ .field public unsigned int16 m_ushort .field public int64 m_long .field public unsigned int64 m_ulong - .field public valuetype JitTest.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct[0...] ss_array } .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field public valuetype JitTest.SimpleStruct ss1 - .field public valuetype JitTest.SimpleStruct[0...] ss_array - .field public valuetype JitTest.SimpleStruct ss2 + .field public valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct ss1 + .field public valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct[0...] ss_array + .field public valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -43,23 +43,23 @@ .maxstack 4 .locals (int64 V_0, int32 V_1, - valuetype JitTest.RefComplexStruct V_2, - valuetype JitTest.SimpleStruct V_3) - IL_0000: sizeof JitTest.RefComplexStruct + valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct V_2, + valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct V_3) + IL_0000: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0006: conv.i1 IL_0007: conv.i8 IL_0008: stloc.0 IL_0009: ldloc.0 - IL_000a: sizeof JitTest.RefComplexStruct + IL_000a: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0010: ldloca.s V_2 - IL_0012: initobj JitTest.RefComplexStruct + IL_0012: initobj JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0018: ldloc.2 IL_0019: stloc.2 IL_001a: ldloca.s V_2 - IL_001c: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_001c: ldfld valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct::ss1 IL_0021: stloc.3 IL_0022: ldloca.s V_3 - IL_0024: ldfld int8 JitTest.SimpleStruct::m_sbyte + IL_0024: ldfld int8 JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct::m_sbyte IL_0029: conv.i4 IL_002a: add IL_002b: conv.i8 @@ -69,33 +69,33 @@ IL_002f: ldc.i4 176 IL_0034: conv.i8 IL_0035: ldloca.s V_2 - IL_0037: initobj JitTest.RefComplexStruct + IL_0037: initobj JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_003d: ldloc.2 IL_003e: stloc.2 IL_003f: ldloca.s V_2 - IL_0041: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_0041: ldfld valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct::ss2 IL_0046: stloc.3 IL_0047: ldloca.s V_3 - IL_0049: ldfld unsigned int16 JitTest.SimpleStruct::m_ushort + IL_0049: ldfld unsigned int16 JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct::m_ushort IL_004e: conv.u8 IL_004f: sub - IL_0050: sizeof JitTest.RefComplexStruct + IL_0050: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0056: conv.i8 IL_0057: sub IL_0058: sub IL_0059: stloc.0 IL_005a: ldloc.0 - IL_005b: sizeof JitTest.RefComplexStruct + IL_005b: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0061: conv.i8 IL_0062: ldloca.s V_2 - IL_0064: initobj JitTest.RefComplexStruct + IL_0064: initobj JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_006a: ldloc.2 IL_006b: stloc.2 IL_006c: ldloca.s V_2 - IL_006e: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss1 + IL_006e: ldfld valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct::ss1 IL_0073: stloc.3 IL_0074: ldloca.s V_3 - IL_0076: ldfld unsigned int32 JitTest.SimpleStruct::m_uint + IL_0076: ldfld unsigned int32 JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct::m_uint IL_007b: ldc.i4.1 IL_007c: add IL_007d: conv.u8 @@ -103,16 +103,16 @@ IL_007f: mul IL_0080: stloc.0 IL_0081: ldloc.0 - IL_0082: sizeof JitTest.RefComplexStruct + IL_0082: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0088: ldloca.s V_2 - IL_008a: initobj JitTest.RefComplexStruct + IL_008a: initobj JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_0090: ldloc.2 IL_0091: stloc.2 IL_0092: ldloca.s V_2 - IL_0094: ldfld valuetype JitTest.SimpleStruct JitTest.RefComplexStruct::ss2 + IL_0094: ldfld valuetype JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct::ss2 IL_0099: stloc.3 IL_009a: ldloca.s V_3 - IL_009c: ldfld unsigned int64 JitTest.SimpleStruct::m_ulong + IL_009c: ldfld unsigned int64 JitTest_sizeof64_Target_64Bit_and_arm_il.SimpleStruct::m_ulong IL_00a1: ldc.i4.1 IL_00a2: conv.i8 IL_00a3: add @@ -121,14 +121,14 @@ IL_00a6: conv.i8 IL_00a7: div IL_00a8: stloc.0 - IL_00a9: sizeof JitTest.RefComplexStruct + IL_00a9: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_00af: ldc.i4.s 88 IL_00b1: xor IL_00b2: conv.i8 IL_00b3: ldloc.0 IL_00b4: or IL_00b5: stloc.0 - IL_00b6: sizeof JitTest.RefComplexStruct + IL_00b6: sizeof JitTest_sizeof64_Target_64Bit_and_arm_il.RefComplexStruct IL_00bc: ldc.i4.s -89 IL_00be: xor IL_00bf: conv.i8 diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_d.ilproj similarity index 68% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_d.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_d.ilproj index 6884ad18cb77a2..277bf9df822235 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_d.ilproj @@ -5,9 +5,9 @@ 1 Full - true + true - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_r.ilproj similarity index 68% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_r.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_r.ilproj index a1738b572cd52f..aaa631637e8110 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof32_Target_64Bit_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof64_Target_64Bit_and_arm_il_r.ilproj @@ -4,10 +4,10 @@ true 1 - true + true PdbOnly - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_d.ilproj deleted file mode 100644 index 1362d5ef32697c..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_d.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - - true - Full - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_r.ilproj deleted file mode 100644 index 699db1add1736b..00000000000000 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_arm_il_r.ilproj +++ /dev/null @@ -1,14 +0,0 @@ - - - Exe - true - 1 - - true - PdbOnly - - - - - - diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86.il similarity index 57% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86.il index 08c4d16769da9f..828224968dc961 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86.il @@ -8,12 +8,12 @@ } .assembly extern mscorlib { } -.assembly 'sizeof' +.assembly 'sizeof_Target_32Bit_x86' { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof_Target_32Bit_x86_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -31,44 +31,44 @@ .class private sequential ansi sealed beforefieldinit ComplexStruct extends [mscorlib]System.ValueType { - .field private valuetype JitTest.SimpleStruct ss1 - .field private valuetype JitTest.SimpleStruct ss2 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct ss1 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field private valuetype JitTest.SimpleStruct ss1 - .field private valuetype JitTest.SimpleStruct[] ssarr - .field private valuetype JitTest.SimpleStruct ss2 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct ss1 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct[] ssarr + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit ComplexStruct2 extends [mscorlib]System.ValueType { - .field private valuetype JitTest.ComplexStruct x1 - .field private valuetype JitTest.ComplexStruct x2 - .field private valuetype JitTest.ComplexStruct x3 - .field private valuetype JitTest.ComplexStruct x4 - .field private valuetype JitTest.ComplexStruct x5 - .field private valuetype JitTest.ComplexStruct x6 - .field private valuetype JitTest.ComplexStruct x7 - .field private valuetype JitTest.ComplexStruct x8 - .field private valuetype JitTest.ComplexStruct x9 - .field private valuetype JitTest.ComplexStruct x10 - .field private valuetype JitTest.ComplexStruct x11 - .field private valuetype JitTest.ComplexStruct x12 - .field private valuetype JitTest.ComplexStruct x13 - .field private valuetype JitTest.ComplexStruct x14 - .field private valuetype JitTest.ComplexStruct x15 - .field private valuetype JitTest.ComplexStruct x16 - .field private valuetype JitTest.ComplexStruct x17 - .field private valuetype JitTest.ComplexStruct x18 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x1 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x2 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x3 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x4 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x5 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x6 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x7 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x8 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x9 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x10 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x11 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x12 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x13 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x14 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x15 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x16 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x17 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct x18 } .class private sequential ansi sealed beforefieldinit RefComplexStruct2 extends [mscorlib]System.ValueType { - .field private valuetype JitTest.ComplexStruct2 ss1 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct2 ss1 .field private class [mscorlib]System.AppDomain ad - .field private valuetype JitTest.ComplexStruct2 ss2 + .field private valuetype JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct2 ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -84,7 +84,7 @@ .entrypoint .maxstack 3 .locals (int32 V_0) - IL_0000: sizeof JitTest.SimpleStruct + IL_0000: sizeof JitTest_sizeof_Target_32Bit_x86_il.SimpleStruct IL_0006: ldc.i4.s 32 IL_0008: beq.s IL_0019 IL_000a: ldstr "sizeof(SimpleStruct) failed." @@ -92,7 +92,7 @@ IL_0014: ldc.i4.s 101 IL_0016: stloc.0 IL_0017: br EXIT - IL_0019: sizeof JitTest.ComplexStruct + IL_0019: sizeof JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct IL_001f: ldc.i4.s 64 IL_0021: beq.s IL_0032 IL_0023: ldstr "sizeof(ComplexStruct) failed." @@ -100,8 +100,8 @@ IL_002d: ldc.i4.s 102 IL_002f: stloc.0 IL_0030: br EXIT - IL_0032: sizeof JitTest.ComplexStruct2 - IL_0038: sizeof JitTest.ComplexStruct + IL_0032: sizeof JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct2 + IL_0038: sizeof JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct IL_003e: ldc.i4.s 18 IL_0040: mul IL_0041: beq.s NEXT1 @@ -112,7 +112,7 @@ IL_0050: br.s EXIT NEXT1: - sizeof JitTest.RefComplexStruct + sizeof JitTest_sizeof_Target_32Bit_x86_il.RefComplexStruct ldc.i4.s 72 beq.s NEXT2 @@ -123,8 +123,8 @@ br.s EXIT NEXT2: - sizeof JitTest.RefComplexStruct2 - sizeof JitTest.ComplexStruct2 + sizeof JitTest_sizeof_Target_32Bit_x86_il.RefComplexStruct2 + sizeof JitTest_sizeof_Target_32Bit_x86_il.ComplexStruct2 ldc.i4.1 shl ldc.i4.4 // Add 4 for the AppDomain field diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_d.ilproj index 0d72b3995b715f..645a4c5264cf71 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_d.ilproj @@ -8,6 +8,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_r.ilproj index 63101d4a8517b9..2ecc39a51ab6cf 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_32Bit_x86_il_r.ilproj @@ -8,6 +8,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof.il b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm.il similarity index 55% rename from src/tests/JIT/Methodical/xxobj/sizeof/64sizeof.il rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm.il index c2f15d70fe7899..3cb5a657a6d0db 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/64sizeof.il +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm.il @@ -8,12 +8,12 @@ } .assembly extern mscorlib { } -.assembly '64sizeof' +.assembly 'sizeof_Target_64Bit_and_arm' { } .assembly extern xunit.core {} .custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 ) -.namespace JitTest +.namespace JitTest_sizeof_Target_64Bit_and_arm_il { .class private sequential ansi sealed beforefieldinit SimpleStruct extends [mscorlib]System.ValueType @@ -31,44 +31,44 @@ .class private sequential ansi sealed beforefieldinit ComplexStruct extends [mscorlib]System.ValueType { - .field private valuetype JitTest.SimpleStruct ss1 - .field private valuetype JitTest.SimpleStruct ss2 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct ss1 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit RefComplexStruct extends [mscorlib]System.ValueType { - .field private valuetype JitTest.SimpleStruct ss1 - .field private valuetype JitTest.SimpleStruct[] ssarr - .field private valuetype JitTest.SimpleStruct ss2 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct ss1 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct[] ssarr + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct ss2 } .class private sequential ansi sealed beforefieldinit ComplexStruct2 extends [mscorlib]System.ValueType { - .field private valuetype JitTest.ComplexStruct x1 - .field private valuetype JitTest.ComplexStruct x2 - .field private valuetype JitTest.ComplexStruct x3 - .field private valuetype JitTest.ComplexStruct x4 - .field private valuetype JitTest.ComplexStruct x5 - .field private valuetype JitTest.ComplexStruct x6 - .field private valuetype JitTest.ComplexStruct x7 - .field private valuetype JitTest.ComplexStruct x8 - .field private valuetype JitTest.ComplexStruct x9 - .field private valuetype JitTest.ComplexStruct x10 - .field private valuetype JitTest.ComplexStruct x11 - .field private valuetype JitTest.ComplexStruct x12 - .field private valuetype JitTest.ComplexStruct x13 - .field private valuetype JitTest.ComplexStruct x14 - .field private valuetype JitTest.ComplexStruct x15 - .field private valuetype JitTest.ComplexStruct x16 - .field private valuetype JitTest.ComplexStruct x17 - .field private valuetype JitTest.ComplexStruct x18 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x1 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x2 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x3 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x4 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x5 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x6 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x7 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x8 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x9 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x10 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x11 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x12 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x13 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x14 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x15 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x16 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x17 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct x18 } .class private sequential ansi sealed beforefieldinit RefComplexStruct2 extends [mscorlib]System.ValueType { - .field private valuetype JitTest.ComplexStruct2 ss1 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct2 ss1 .field private class [mscorlib]System.AppDomain ad - .field private valuetype JitTest.ComplexStruct2 ss2 + .field private valuetype JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct2 ss2 } .class private sequential ansi sealed beforefieldinit Test extends [mscorlib]System.ValueType @@ -84,7 +84,7 @@ .entrypoint .maxstack 3 .locals (int32 V_0) - IL_0000: sizeof JitTest.SimpleStruct + IL_0000: sizeof JitTest_sizeof_Target_64Bit_and_arm_il.SimpleStruct IL_0006: ldc.i4.s 32 IL_0008: beq.s IL_0019 IL_000a: ldstr "sizeof(SimpleStruct) failed." @@ -92,7 +92,7 @@ IL_0014: ldc.i4.s 101 IL_0016: stloc.0 IL_0017: br EXIT - IL_0019: sizeof JitTest.ComplexStruct + IL_0019: sizeof JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct IL_001f: ldc.i4.s 64 IL_0021: beq.s IL_0032 IL_0023: ldstr "sizeof(ComplexStruct) failed." @@ -100,8 +100,8 @@ IL_002d: ldc.i4.s 102 IL_002f: stloc.0 IL_0030: br.s EXIT - IL_0032: sizeof JitTest.ComplexStruct2 - IL_0038: sizeof JitTest.ComplexStruct + IL_0032: sizeof JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct2 + IL_0038: sizeof JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct IL_003e: ldc.i4.s 18 IL_0040: mul IL_0041: beq.s NEXT1 @@ -112,7 +112,7 @@ IL_0050: br.s EXIT NEXT1: - sizeof JitTest.RefComplexStruct + sizeof JitTest_sizeof_Target_64Bit_and_arm_il.RefComplexStruct ldc.i4.s 72 beq.s NEXT2 @@ -123,8 +123,8 @@ br.s EXIT NEXT2: - sizeof JitTest.RefComplexStruct2 - sizeof JitTest.ComplexStruct2 + sizeof JitTest_sizeof_Target_64Bit_and_arm_il.RefComplexStruct2 + sizeof JitTest_sizeof_Target_64Bit_and_arm_il.ComplexStruct2 ldc.i4.1 shl ldc.i4.8 diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_d.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_d.ilproj similarity index 88% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_d.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_d.ilproj index a669280e312e8d..dbc328adc067b1 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_d.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_d.ilproj @@ -8,6 +8,6 @@ Full - + diff --git a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_r.ilproj b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_r.ilproj similarity index 89% rename from src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_r.ilproj rename to src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_r.ilproj index 96e2dc0dabd255..5fe7c26bf9dd47 100644 --- a/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_il_r.ilproj +++ b/src/tests/JIT/Methodical/xxobj/sizeof/sizeof_Target_64Bit_and_arm_il_r.ilproj @@ -8,6 +8,6 @@ PdbOnly - + diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_34587/Runtime_34587.cs b/src/tests/JIT/Regression/JitBlue/Runtime_34587/Runtime_34587.cs index 656da5bdb1aaf6..bb2777dbb2cc83 100644 --- a/src/tests/JIT/Regression/JitBlue/Runtime_34587/Runtime_34587.cs +++ b/src/tests/JIT/Regression/JitBlue/Runtime_34587/Runtime_34587.cs @@ -257,6 +257,11 @@ static bool ValidateVectorT() succeeded &= Vector.IsHardwareAccelerated; succeeded &= Vector.Count == 16; } + else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) + { + succeeded &= !Vector.IsHardwareAccelerated; + succeeded &= Vector.Count == 16; + } return succeeded; } @@ -270,6 +275,11 @@ static bool ValidateVector64() succeeded &= Vector64.IsHardwareAccelerated; succeeded &= Vector64.Count == 8; } + else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) + { + succeeded &= !Vector64.IsHardwareAccelerated; + succeeded &= Vector64.Count == 8; + } return succeeded; } @@ -283,6 +293,11 @@ static bool ValidateVector128() succeeded &= Vector128.IsHardwareAccelerated; succeeded &= Vector128.Count == 16; } + else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) + { + succeeded &= !Vector128.IsHardwareAccelerated; + succeeded &= Vector128.Count == 16; + } return succeeded; } @@ -291,7 +306,7 @@ static bool ValidateVector256() { bool succeeded = true; - if (AdvSimd.IsSupported) + if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) { succeeded &= !Vector256.IsHardwareAccelerated; succeeded &= Vector256.Count == 32; @@ -630,6 +645,11 @@ static bool ValidateVectorT() succeeded &= Vector.IsHardwareAccelerated; succeeded &= Vector.Count == 16; } + else if ((RuntimeInformation.ProcessArchitecture == Architecture.X86) || (RuntimeInformation.ProcessArchitecture == Architecture.X64)) + { + succeeded &= !Vector.IsHardwareAccelerated; + succeeded &= Vector.Count == 16; + } return succeeded; } @@ -638,7 +658,7 @@ static bool ValidateVector64() { bool succeeded = true; - if (Sse.IsSupported) + if ((RuntimeInformation.ProcessArchitecture == Architecture.X86) || (RuntimeInformation.ProcessArchitecture == Architecture.X64)) { succeeded &= !Vector64.IsHardwareAccelerated; succeeded &= Vector64.Count == 8; @@ -651,7 +671,7 @@ static bool ValidateVector128() { bool succeeded = true; - if (Sse.IsSupported) + if (Sse2.IsSupported) { succeeded &= Vector128.IsHardwareAccelerated; succeeded &= Vector128.Count == 16; @@ -669,7 +689,7 @@ static bool ValidateVector256() succeeded &= Vector256.IsHardwareAccelerated; succeeded &= Vector256.Count == 32; } - else if (Sse.IsSupported) + else if ((RuntimeInformation.ProcessArchitecture == Architecture.X86) || (RuntimeInformation.ProcessArchitecture == Architecture.X64)) { succeeded &= !Vector256.IsHardwareAccelerated; succeeded &= Vector256.Count == 32; diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.cs b/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.cs new file mode 100644 index 00000000000000..6a38a4cf157de6 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.cs @@ -0,0 +1,19 @@ +// 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.Runtime.CompilerServices; + +public unsafe class Runtime_61359 +{ + public static int Main() + { + return HalfToInt16Bits((Half)(-1)) == -17408 ? 100 : -1; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + static short HalfToInt16Bits(Half h) + { + return *(short*)&h; + } +} \ No newline at end of file diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.csproj new file mode 100644 index 00000000000000..1a1d3eadae5ce4 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_61359/Runtime_61359.csproj @@ -0,0 +1,13 @@ + + + Exe + + + None + True + True + + + + + \ No newline at end of file diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.cs b/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.cs new file mode 100644 index 00000000000000..df96fded795536 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.cs @@ -0,0 +1,113 @@ +// 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.Runtime.InteropServices; +using System.Runtime.CompilerServices; + +public unsafe class Runtime_64657 +{ + [DllImport("kernel32")] + public static extern byte* VirtualAlloc(IntPtr lpAddress, nuint dwSize, uint flAllocationType, uint flProtect); + + [MethodImpl(MethodImplOptions.NoInlining)] + static void Validate(T* c, int x) where T : unmanaged + { + // this nullcheck should not read more than requested + T implicitNullcheck = c[x]; + } + + public static int Main() + { + if (!OperatingSystem.IsWindows()) + return 100; // VirtualAlloc is only for Windows + + uint length = (uint)Environment.SystemPageSize; + byte* ptr = VirtualAlloc(IntPtr.Zero, length, 0x1000 | 0x2000 /* reserve commit */, 0x04 /*readonly guard*/); + + Validate((byte*)(ptr + length - sizeof(byte)), 0); + Validate((sbyte*)(ptr + length - sizeof(sbyte)), 0); + Validate((bool*)(ptr + length - sizeof(bool)), 0); + Validate((ushort*)(ptr + length - sizeof(ushort)), 0); + Validate((short*)(ptr + length - sizeof(short)), 0); + Validate((uint*)(ptr + length - sizeof(uint)), 0); + Validate((int*)(ptr + length - sizeof(int)), 0); + Validate((ulong*)(ptr + length - sizeof(ulong)), 0); + Validate((long*)(ptr + length - sizeof(long)), 0); + Validate((nint*)(ptr + length - sizeof(nint)), 0); + Validate((nuint*)(ptr + length - sizeof(nuint)), 0); + + Validate((S1*)(ptr + length - sizeof(S1)), 0); + Validate((S2*)(ptr + length - sizeof(S2)), 0); + Validate((S3*)(ptr + length - sizeof(S3)), 0); + Validate((S4*)(ptr + length - sizeof(S4)), 0); + + TestStructures(); + + return 100; + } + + private static void TestStructures() + { + S1 s1 = new S1(); + TestS1_1(ref s1); + TestS1_2(ref s1); + + S2 s2 = new S2(); + TestS2_1(ref s2); + TestS2_2(ref s2); + + S3 s3 = new S3(); + TestS3_1(ref s3); + TestS3_2(ref s3); + + S4 s4 = new S4(); + TestS4_1(ref s4); + TestS4_2(ref s4); + + S5 s5 = new S5 { a1 = "1", a2 = "2" }; + TestS5_1(ref s5); + TestS5_2(ref s5); + } + + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS1_1(ref S1 s) { var _ = s.a1; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS1_2(ref S1 s) { var _ = s.a2; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS2_1(ref S2 s) { var _ = s.a1; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS2_2(ref S2 s) { var _ = s.a2; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS3_1(ref S3 s) { var _ = s.a1; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS3_2(ref S3 s) { var _ = s.a2; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS4_1(ref S4 s) { var _ = s.a1; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS4_2(ref S4 s) { var _ = s.a2; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS5_1(ref S5 s) { var _ = s.a1; } + [MethodImpl(MethodImplOptions.NoInlining)] static void TestS5_2(ref S5 s) { var _ = s.a2; } + + public struct S1 + { + public byte a1; + public byte a2; + } + + public struct S2 + { + public short a1; + public short a2; + } + + public struct S3 + { + public int a1; + public int a2; + } + + public struct S4 + { + public long a1; + public long a2; + } + + public struct S5 + { + public string a1; + public string a2; + } +} diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.csproj new file mode 100644 index 00000000000000..54ecf886782d7b --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64657/Runtime_64657.csproj @@ -0,0 +1,10 @@ + + + Exe + True + true + + + + + diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.cs b/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.cs new file mode 100644 index 00000000000000..e95749bb981c6d --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.cs @@ -0,0 +1,82 @@ +// 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.Numerics; +using System.Runtime.CompilerServices; + +class Runtime_64700 +{ + private static StructWithVtors _structWithVtorsStatic; + + static int Main() + { + _structWithVtorsStatic = new StructWithVtors { StructWithOneVtor = { OneVtor = new Vector2(1, 0) } }; + + if (ProblemWithCopyProp(0) != 0) + { + return 101; + } + + if (ProblemWithLocalAssertionProp(new SmallerStruct[] { default }) != 1) + { + return 102; + } + + return 100; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private static float ProblemWithCopyProp(float a) + { + ref var p1 = ref _structWithVtorsStatic.StructWithOneVtor.OneVtor; + ref var p2 = ref _structWithVtorsStatic; + + if (_structWithVtorsStatic.StructWithOneVtor.OneVtor.X == 1) + { + p2.StructWithOneVtor.OneVtor = Vector2.Zero; + if (_structWithVtorsStatic.StructWithOneVtor.OneVtor.X == 1) + { + a = 1; + } + } + + return a + p1.Y; + } + + struct StructWithVtors + { + public StructWithOneVtor StructWithOneVtor; + } + + struct StructWithOneVtor + { + public Vector2 OneVtor; + } + + [MethodImpl(MethodImplOptions.NoInlining)] + private static long ProblemWithLocalAssertionProp(SmallerStruct[] a) + { + ref var p1 = ref a[0]; + Use(ref p1); + ref var p2 = ref p1.RegStruct; + Use(ref p2); + + var t = p2.FirstLngValue; + a[0].RegStruct.FirstLngValue = 1; + + return t + p2.FirstLngValue; + } + + public static void Use(ref T arg) { } + + struct SmallerStruct + { + public RegStruct RegStruct; + } + + struct RegStruct + { + public long FirstLngValue; + } +} diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.csproj new file mode 100644 index 00000000000000..681f2d79603a36 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64700/Runtime_64700.csproj @@ -0,0 +1,17 @@ + + + Exe + True + + + + + + + diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.cs b/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.cs new file mode 100644 index 00000000000000..c725aff75a6461 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.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.Runtime.CompilerServices; + +// Generated by Fuzzlyn v1.5 on 2022-02-03 20:05:52 +// Run on X64 Linux +// Seed: 17645686525285880576 +// Reduced from 66.2 KiB to 1.0 KiB in 00:04:27 +// Hits JIT assert in Release: +// Assertion failed 'compiler->opts.IsOSR() || ((genInitStkLclCnt > 0) == hasUntrLcl)' in 'Program:M8():S0' during 'Generate code' (IL size 110) +// +// File: /__w/1/s/src/coreclr/jit/codegencommon.cpp Line: 7256 +// + +public class C0 +{ + public int F0; + public ulong F1; + public sbyte F2; +} + +public struct S0 +{ + public int F0; + public S0(int f0): this() + { + } +} + +public class Runtime_64808 +{ + private static IRT s_rt; + public static long[] s_16; + public static bool s_23; + public static int s_result; + public static int Main() + { + s_16 = new long[1]; + s_rt = new C(); + s_result = -1; + M8(); + return s_result; + } + + public static S0 M8() + { + try + { + var vr0 = new ushort[]{0}; + C0[] vr3 = default(C0[]); + return M15(vr0, ref s_23, vr3); + } + finally + { + var vr2 = new S0[]{new S0(0), new S0(0), new S0(0), new S0(0), new S0(0), new S0(0)}; + } + } + + [MethodImpl(MethodImplOptions.NoInlining)] + public static S0 M15(ushort[] arg0, ref bool arg1, C0[] arg2) + { + s_result = 100; + S0 vr5 = default(S0); + return vr5; + } +} + +public interface IRT +{ + void WriteLine(string a, T value); +} + +public class C : IRT +{ + public void WriteLine(string a, T value) + { + System.Console.WriteLine(value); + } +} \ No newline at end of file diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.csproj new file mode 100644 index 00000000000000..8f58ccf6438daa --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_64808/Runtime_64808.csproj @@ -0,0 +1,11 @@ + + + Exe + True + True + + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/andnotcontained.cs b/src/tests/JIT/opt/ForwardSub/andnotcontained.cs new file mode 100644 index 00000000000000..3a9c3934599acf --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/andnotcontained.cs @@ -0,0 +1,42 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Generated by Fuzzlyn v1.5 on 2022-02-04 12:51:20 +// Run on X86 Windows +// Seed: 5821979800164656837 +// Reduced from 60.0 KiB to 0.3 KiB in 00:01:44 +// Debug: Outputs 0 +// Release: Outputs -1 +public class Program +{ + public static IRT s_rt; + public static long s_4; + public static int Main() + { + s_rt = new C(); + int vr3 = (int)(s_4 & ~M7()); + s_rt.WriteLine(vr3); + return vr3 + 100; + } + + public static short M7() + { + ref long var1 = ref s_4; + var1 = 9223372036854775807L; + return 0; + } +} + + +public interface IRT +{ + void WriteLine(T value); +} + +public class C : IRT +{ + public void WriteLine(T value) + { + System.Console.WriteLine(value); + } +} diff --git a/src/tests/JIT/opt/ForwardSub/andnotcontained.csproj b/src/tests/JIT/opt/ForwardSub/andnotcontained.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/andnotcontained.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/callArgInterference2.cs b/src/tests/JIT/opt/ForwardSub/callArgInterference2.cs new file mode 100644 index 00000000000000..729254aa448fa9 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/callArgInterference2.cs @@ -0,0 +1,55 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Generated by Fuzzlyn v1.5 on 2022-02-06 17:06:01 +// Run on X86 Windows +// Seed: 7854701479455767355 +// Reduced from 192.2 KiB to 0.6 KiB in 00:03:51 +// Debug: Outputs 0 +// Release: Outputs 1 +public struct S0 +{ + public uint F0; + public ulong F2; + public int F3; + public ushort F6; + public int F8; + public static int s_result; + + public int[] M35(int arg0, int[] arg1) + { + this.F3 = arg1[0]; + ForwardSubCallArgInterference2.s_rt.WriteLine(arg0); + s_result = arg0 + 100; + return arg1; + } +} + +public class ForwardSubCallArgInterference2 +{ + public static IRT s_rt; + public static int[][] s_28 = new int[][]{new int[]{1}}; + public static int Main() + { + s_rt = new C(); + var vr3 = new S0(); + var vr6 = vr3.F3; + var vr13 = s_28[0]; + var vr12 = vr3.M35(0, vr13); + vr3.M35(vr6, vr12); + return S0.s_result; + } +} + +public interface IRT +{ + void WriteLine(T value); +} + +public class C : IRT +{ + public void WriteLine(T value) + { + System.Console.WriteLine(value); + } +} diff --git a/src/tests/JIT/opt/ForwardSub/callArgInterference2.csproj b/src/tests/JIT/opt/ForwardSub/callArgInterference2.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/callArgInterference2.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/callArgInterference3.cs b/src/tests/JIT/opt/ForwardSub/callArgInterference3.cs new file mode 100644 index 00000000000000..7ecdb58982f156 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/callArgInterference3.cs @@ -0,0 +1,72 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Generated by Fuzzlyn v1.5 on 2022-02-06 16:34:36 +// Run on X86 Windows +// Seed: 15345211054104247945 +// Reduced from 56.7 KiB to 1.1 KiB in 00:00:55 +// Debug: Outputs 0 +// Release: Outputs -1 +public struct S0 +{ + public ulong F1; + public int F2; + public byte F3; + public short F5; + public long F6; + public static int s_result; + public void M4(int arg0, sbyte[] arg1) + { + ForwardSubCallArgInterference3.s_rt.WriteLine(arg0); + s_result = arg0 + 100; + } + + public sbyte[] M6(ref int arg0, bool arg1, ref S0 arg2, ref byte arg3) + { + var vr0 = ForwardSubCallArgInterference3.s_5; + ForwardSubCallArgInterference3.M7(arg2, vr0, ref ForwardSubCallArgInterference3.s_6, ref ForwardSubCallArgInterference3.s_10, arg0); + var vr1 = arg2.F6; + ForwardSubCallArgInterference3.M8(arg2, vr1); + arg0 = this.F2--; + return new sbyte[]{1}; + } +} + +public class ForwardSubCallArgInterference3 +{ + public static IRT s_rt; + public static bool s_2; + public static S0 s_4; + public static uint[] s_5; + public static byte s_6; + public static S0[] s_10; + public static S0[, ] s_20 = new S0[, ]{{new S0()}}; + public static int Main() + { + s_rt = new C(); + S0 vr2 = default(S0); + new S0().M4(vr2.F2, vr2.M6(ref s_4.F2, s_2, ref s_20[0, 0], ref s_4.F3)); + return S0.s_result; + } + + public static void M8(S0 arg0, long arg1) + { + } + + public static void M7(S0 argThis, uint[] arg0, ref byte arg1, ref S0[] arg2, int arg3) + { + } +} + +public interface IRT +{ + void WriteLine(T value); +} + +public class C : IRT +{ + public void WriteLine(T value) + { + System.Console.WriteLine(value); + } +} diff --git a/src/tests/JIT/opt/ForwardSub/callArgInterference3.csproj b/src/tests/JIT/opt/ForwardSub/callArgInterference3.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/callArgInterference3.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.cs b/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.cs new file mode 100644 index 00000000000000..16f09d41a5f249 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.cs @@ -0,0 +1,56 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Generated by Fuzzlyn v1.5 on 2022-02-04 13:20:27 +// Run on X64 Windows +// Seed: 7242107031351932946 +// Reduced from 319.7 KiB to 0.7 KiB in 00:09:00 +// Debug: +// Release: Outputs 0 +public class C0 +{ + public byte F1; +} + +public struct S0 +{ + public C0 F0; + public S0(C0 f0): this() + { + F0 = f0; + } +} + +public class C1 +{ + public long F0; + public C1(long f0) + { + F0 = f0; + } +} + +public class Program +{ + public static S0 s_25 = new S0(new C0()); + public static C1[] s_28; + public static int Main() + { + int result = 100; + s_28 = new C1[]{new C1(0)}; + var vr3 = new C1(-1); + if (vr3.F0 >= (M35(vr3) & 0)) + { + System.Console.WriteLine(vr3.F0); + result = -1; + } + + return result; + } + + public static byte M35(C1 argThis) + { + argThis.F0 = s_28[0].F0; + return s_25.F0.F1; + } +} diff --git a/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.csproj b/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/lowerContainCheckCompare.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/modOpt.cs b/src/tests/JIT/opt/ForwardSub/modOpt.cs new file mode 100644 index 00000000000000..c1c2492715085c --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/modOpt.cs @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Generated by Fuzzlyn v1.5 on 2022-02-08 16:14:33 +// Run on Arm64 Linux +// Seed: 10380378818647712015 +// Reduced from 169.3 KiB to 0.7 KiB in 00:44:43 +// Debug: Outputs 0 +// Release: Outputs 1 +public class C0 +{ +} + +public struct S0 +{ + public uint F2; + public C0 F4; + public uint F5; + public int F7; + public short F9; + public S0(uint f2, int f7): this() + { + F7 = f7; + } + + public int M21(uint arg0) + { + S0[] var0 = new S0[]{new S0(0, 0)}; + var vr1 = new S0(this.F2++, ForwardSubModOpt.M23()); + return ForwardSubModOpt.s_8.F7; + } +} + +public class ForwardSubModOpt +{ + public static IRT s_rt; + public static uint s_2; + public static S0 s_8 = new S0(0, 1); + public static int Main() + { + s_rt = new C(); + S0 vr8 = default(S0); + ushort vr9 = (ushort)(vr8.F2 % (ushort)vr8.M21(s_2)); + s_rt.WriteLine(vr9); + return vr9 == 0 ? 100 : -1; + } + + public static byte M23() + { + return default(byte); + } +} + +public interface IRT +{ + void WriteLine(T value); +} + +public class C : IRT +{ + public void WriteLine(T value) + { + System.Console.WriteLine(value); + } +} diff --git a/src/tests/JIT/opt/ForwardSub/modOpt.csproj b/src/tests/JIT/opt/ForwardSub/modOpt.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/modOpt.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/JIT/opt/ForwardSub/normalizeOnStore.il b/src/tests/JIT/opt/ForwardSub/normalizeOnStore.il index 6416e7492eaea2..8f5caa67d3fd9e 100644 --- a/src/tests/JIT/opt/ForwardSub/normalizeOnStore.il +++ b/src/tests/JIT/opt/ForwardSub/normalizeOnStore.il @@ -57,7 +57,7 @@ IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: ret - } // end of method ForwardSubTests::Problem + } // end of method ForwardSubNormalizeOnStore::Problem .method public hidebysig static int32 Main() cil managed { @@ -65,9 +65,9 @@ // Code size 11 (0xb) .maxstack 8 IL_0000: ldc.i4 0xf0064 - IL_0005: call int32 ForwardSubTests::Problem(int32) + IL_0005: call int32 ForwardSubNormalizeOnStore::Problem(int32) IL_000a: ret - } // end of method ForwardSubTests::Main + } // end of method ForwardSubNormalizeOnStore::Main .method public hidebysig specialname rtspecialname instance void .ctor() cil managed @@ -77,9 +77,9 @@ IL_0000: ldarg.0 IL_0001: call instance void [System.Runtime]System.Object::.ctor() IL_0006: ret - } // end of method ForwardSubTests::.ctor + } // end of method ForwardSubNormalizeOnStore::.ctor -} // end of class ForwardSubTests +} // end of class ForwardSubNormalizeOnStore .class private auto ansi store_ProcessedByFody extends [System.Runtime]System.Object diff --git a/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.cs b/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.cs new file mode 100644 index 00000000000000..fa6e5d0741ec19 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.cs @@ -0,0 +1,106 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// Found by Antigen +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +public class SwitchWithSideEffects +{ + public struct S1 + { + } + public struct S2 + { + public ulong ulong_1; + } + static int s_int_9 = 2; + static long s_long_10 = 5; + static float s_float_12 = -0.9701493f; + static S1 s_s1_17 = new S1(); + static S2 s_s2_18 = new S2(); + short short_24 = 5; + int int_25 = -1; + long long_26 = 5; + S1 s1_33 = new S1(); + S2 s2_34 = new S2(); + public short Method7(S1 p_s1_194, S2 p_s2_195, ref S2 p_s2_196, ref S2 p_s2_197, S1 p_s1_198, out S1 p_s1_199, S2 p_s2_200, S2 p_s2_201) + { + unchecked + { + short short_207 = 2; + int int_208 = 0; + switch (int_208 << int_25 + s_int_9) + { + case 1: + { + break; + } + case 5: + { + break; + } + case 2: + { + break; + } + default: + { + s_s1_17 = s1_33; + break; + } + } + return short_207; + } + } + public short Method12(out S2 p_s2_337, out float p_float_338, ref S2 p_s2_339, uint p_uint_340, S1 p_s1_341, ref long p_long_342, out long p_long_343, S1 p_s1_344, ref S2 p_s2_345) + { + unchecked + { + long long_353 = -2; + p_s2_337 = s2_34; + p_float_338 = s_float_12 /= 15+4; + p_long_343 = long_353 -= s_long_10 |= 15|4; + return (short)(Method7(p_s1_344, s_s2_18, ref s2_34, ref s2_34, s1_33, out s1_33, s2_34, s_s2_18) + 15/4+4); + } + } + public uint Method40(out ulong p_ulong_1015, ref S1 p_s1_1016, ref S2 p_s2_1017, S1 p_s1_1018, ref S1 p_s1_1019, out S2 p_s2_1020, S1 p_s1_1021, out int p_int_1022, S2 p_s2_1023, out S1 p_s1_1024, S2 p_s2_1025) + { + unchecked + { + S2 s2_1041 = new S2(); + p_ulong_1015 = s2_1041.ulong_1 |= 15-4; + p_s2_1020 = p_s2_1023; + p_int_1022 = s_int_9 = 15^4; + return 15|4; + } + } + public void Method0() + { + unchecked + { + int int_2522 = 0; + long long_2523 = 2; + S1 s1_2530 = new S1(); + S2 s2_2531 = new S2(); + short_24 = Method12(out s2_34, out s_float_12, ref s2_34, Method40(out s2_34.ulong_1, ref s_s1_17, ref s2_34, s1_2530, ref s1_2530, out s_s2_18, s1_2530, out int_2522, s2_34, out s1_33, s2_2531), s1_2530, ref long_2523, out long_26, s_s1_17, ref s_s2_18); + return; + } + } + public static int Main(string[] args) + { + new SwitchWithSideEffects().Method0(); + return 100; + } +} +/* +Environment: + +set COMPlus_TieredCompilation=0 +set COMPlus_TailCallLoopOpt=0 +set COMPlus_JitStressRegs=4 + +Assert failure(PID 103568 [0x00019490], Thread: 7492 [0x1d44]): Assertion failed 'gtOper < GT_COUNT' in 'TestClass:Method7(S1,S2,byref,byref,S1,byref,S2,S2):short:this' during 'Assertion prop' (IL size 61) + File: D:\git\dotnet-runtime\src\coreclr\jit\gentree.h Line: 1041 + Image: d:\git\dotnet-runtime\artifacts\tests\coreclr\windows.x64.Checked\tests\Core_Root\CoreRun.exe +*/ diff --git a/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.csproj b/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.csproj new file mode 100644 index 00000000000000..19781e26c20d81 --- /dev/null +++ b/src/tests/JIT/opt/ForwardSub/switchWithSideEffects.csproj @@ -0,0 +1,10 @@ + + + Exe + + True + + + + + diff --git a/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.cs b/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.cs new file mode 100644 index 00000000000000..ae08369177388d --- /dev/null +++ b/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.cs @@ -0,0 +1,81 @@ +// The .NET Foundation licenses this file to you under the MIT license. + +using System; + +// In GH issue 61244 the mono runtime aborted when inflating the default +// interface method because the context used was from the base interface. + +// The OneArgBaseInterface portion of this test handles the original bug +// where the base interface has less generic arguments than the derived +// interface and the runtime aborts. + +// The SecondInterface portion of this test handles an additional scenario +// where the number of generic arguments are the same in the base and +// derived interface contexts, but the order is changed (or different.) +// When this occurs the generic info is incorrect for the inflated method. + +class Program +{ + static int Main(string[] args) + { + return new TestClass().DoTest(); + } +} + +public interface OneArgBaseInterface +{ + int SomeFunc1(T1 someParam1, Type someParam1Type); +} + +public interface TwoArgBaseInterface +{ + int SomeFunc1(T1 someParam1, T2 someParam2, Type someParam1Type, Type someParam2Type); +} + +public interface SecondInterface : OneArgBaseInterface, TwoArgBaseInterface +{ + int OneArgBaseInterface.SomeFunc1(TParam1Type someParam1, Type someParam1Type) + { + if (typeof(TParam1Type) != someParam1Type) + { + Console.WriteLine("Failed => 101"); + return 101; + } + + return 100; + } + + int TwoArgBaseInterface.SomeFunc1(TParam1Type someParam1, TParam2Type someParam2, Type someParam1Type, Type someParam2Type) + { + if (typeof(TParam1Type) != someParam1Type) + { + Console.WriteLine("Failed => 102"); + return 102; + } + + if (typeof(TParam2Type) != someParam2Type) + { + Console.WriteLine("Failed => 103"); + return 103; + } + + return 100; + } +} + +public class TestClass : SecondInterface +{ + public int DoTest () + { + int ret = (this as OneArgBaseInterface).SomeFunc1("test string", typeof(string)); + if (ret != 100) + return ret; + + ret = (this as TwoArgBaseInterface).SomeFunc1("test string", 0, typeof(string), typeof(int)); + if (ret != 100) + return ret; + + Console.WriteLine("Passed => 100"); + return 100; + } +} \ No newline at end of file diff --git a/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.csproj b/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.csproj new file mode 100644 index 00000000000000..42c7a9e8ffc90f --- /dev/null +++ b/src/tests/Loader/classloader/DefaultInterfaceMethods/regressions/github61244.csproj @@ -0,0 +1,9 @@ + + + true + Exe + + + + + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/Generator/Program.cs b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/Generator/Program.cs index 3ece4ed1e8dada..88d718a3432b4e 100644 --- a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/Generator/Program.cs +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/Generator/Program.cs @@ -100,6 +100,7 @@ static void EmitTestGlobalHeader(TextWriter tw) tw.WriteLine(""); tw.WriteLine("// THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator"); tw.WriteLine(".assembly extern System.Console {}"); + tw.WriteLine(".assembly extern xunit.core {}"); tw.WriteLine(".assembly extern mscorlib {}"); tw.WriteLine(".assembly extern System.Runtime {}"); tw.WriteLine(".assembly extern GenericContextCommonCs {}"); @@ -132,6 +133,83 @@ static void EmitCodeForCommonLibrary(TextWriter tw) tw.WriteLine(@"{"); tw.WriteLine(@" .method public newslot virtual abstract static void NormalMethod() {}"); tw.WriteLine(@" .method public newslot virtual abstract static void GenericMethod() {}"); + tw.WriteLine(@"}"); + tw.WriteLine(@""); + tw.WriteLine(@".class interface public abstract auto ansi IFaceNonGenericDefaultImp"); + tw.WriteLine(@"{"); + tw.WriteLine(@" .method public newslot virtual static void NormalMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceNonGenericDefaultImp.NormalMethod"""); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@" .method public newslot virtual static void GenericMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceNonGenericDefaultImp.GenericMethod<"""); + tw.WriteLine(@" ldtoken !!0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">"""); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@"}"); + tw.WriteLine(@""); + tw.WriteLine(@".class interface public abstract auto ansi IFaceGenericDefaultImp`1"); + tw.WriteLine(@"{"); + tw.WriteLine(@" .method public newslot virtual static void NormalMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceGenericDefaultImp`1<"""); + tw.WriteLine(@" ldtoken !0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">.NormalMethod"""); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@" .method public newslot virtual static void GenericMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceGenericDefaultImp`1<"""); + tw.WriteLine(@" ldtoken !0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">.GenericMethod<"""); + tw.WriteLine(@" ldtoken !!0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">"""); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@"}"); + tw.WriteLine(@""); + tw.WriteLine(@".class interface public abstract auto ansi IFaceCuriouslyRecurringGenericDefaultImp`1<(class IFaceCuriouslyRecurringGenericDefaultImp`1) T> "); + tw.WriteLine(@"{"); + tw.WriteLine(@" .method public newslot virtual static void NormalMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceCuriouslyRecurringGenericDefaultImp`1<"""); + tw.WriteLine(@" ldtoken !0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">.NormalMethod"""); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@" .method public newslot virtual static void GenericMethod()"); + tw.WriteLine(@" {"); + tw.WriteLine(@" ldstr ""IFaceCuriouslyRecurringGenericDefaultImp`1<"""); + tw.WriteLine(@" ldtoken !0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">.GenericMethod<"""); + tw.WriteLine(@" ldtoken !!0"); + tw.WriteLine(@" call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle)"); + tw.WriteLine(@" ldstr "">"""); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" call string[System.Runtime] System.String::Concat(string, string, string)"); + tw.WriteLine(@" stsfld string [GenericContextCommonCs]Statics::String"); + tw.WriteLine(@" ret"); + tw.WriteLine(@" }"); + tw.WriteLine(@"}"); tw.WriteLine(@""); tw.WriteLine(@".class public sealed auto ansi GenericStruct`1"); @@ -232,7 +310,7 @@ static void EmitEndMethod(TextWriter tw, MethodDesc md) tw.WriteLine($" }} // end of method {md.Name}"); } - static void GenerateImplementations(TextWriter tw) + static void GenerateImplementations(TextWriter tw, bool testDefaultImplementations, string defaultImpSuffix) { foreach (var constrainedTypeDefinition in (ConstrainedTypeDefinition[])typeof(ConstrainedTypeDefinition).GetEnumValues()) { @@ -259,17 +337,17 @@ static void GenerateImplementations(TextWriter tw) if (constrainedTypeDefinition.ToString().StartsWith("Generic")) { - GenerateImpl(implClass.Name + "", "IFaceNonGeneric", "", false); - GenerateImpl(implClass.Name + "", "IFaceGeneric`1", "", true); - GenerateImpl(implClass.Name + "", "IFaceGeneric`1", "", true); - GenerateImpl(implClass.Name + "", $"IFaceCuriouslyRecurringGeneric`1", $"<{implTypePrefix} {implClass.Name}>", true); + GenerateImpl(implClass.Name + "", $"IFaceNonGeneric{defaultImpSuffix}", "", false); + GenerateImpl(implClass.Name + "", $"IFaceGeneric{defaultImpSuffix}`1", "", true); + GenerateImpl(implClass.Name + "", $"IFaceGeneric{defaultImpSuffix}`1", "", true); + GenerateImpl(implClass.Name + "", $"IFaceCuriouslyRecurringGeneric{defaultImpSuffix}`1", $"<{implTypePrefix} {implClass.Name}>", true); } else { - GenerateImpl(implClass.Name, "IFaceNonGeneric", "", false); - GenerateImpl(implClass.Name, "IFaceGeneric`1", "", true); - GenerateImpl(implClass.Name, "IFaceGeneric`1", "", true); - GenerateImpl(implClass.Name, $"IFaceCuriouslyRecurringGeneric`1", $"<{implTypePrefix} {implClass.Name}>", true); + GenerateImpl(implClass.Name, $"IFaceNonGeneric{defaultImpSuffix}", "", false); + GenerateImpl(implClass.Name, $"IFaceGeneric{defaultImpSuffix}`1", "", true); + GenerateImpl(implClass.Name, $"IFaceGeneric{defaultImpSuffix}`1", "", true); + GenerateImpl(implClass.Name, $"IFaceCuriouslyRecurringGeneric{defaultImpSuffix}`1", $"<{implTypePrefix} {implClass.Name}>", true); } EmitClass(tw, implClass); @@ -291,6 +369,9 @@ void GenerateImpl(string implType, string iface, string ifaceGenericArguments, b { interfacesImplemented.Add(ToILDasmTypeName(iface, ifaceGenericArguments)); + if (testDefaultImplementations) + return; + MethodDesc implMethodDesc = new MethodDesc(); implMethodDesc.Name = $"'{iface}{ifaceGenericArguments}.NormalMethod'"; implMethodDesc.MethodFlags = "public static"; @@ -371,7 +452,6 @@ static string GetConstrainedTypeName(ConstrainedTypeDefinition isStruct, bool wi static string CommonCsAssemblyName = "GenericContextCommonCs"; static string CommonAndImplAssemblyName = "GenericContextCommonAndImplementation"; - static string TestAssemblyName = "GenericContextTest"; static string CommonPrefix = $"[{CommonAndImplAssemblyName}]"; static string CommonCsPrefix = $"[{CommonCsAssemblyName}]"; static string ImplPrefix = $"[{CommonAndImplAssemblyName}]"; @@ -430,281 +510,306 @@ static string AppendSuffixToConstrainedType(TestScenario scenario, string constr static void Main(string[] args) { - using StreamWriter twOutputCommon = new StreamWriter(Path.Combine(args[0], @$"{CommonAndImplAssemblyName}.il")); - using StreamWriter twOutputTest = new StreamWriter(Path.Combine(args[0], @$"{TestAssemblyName}.il")); - - StringWriter swMainMethodBody = new StringWriter(); - StringWriter swTestClassMethods = new StringWriter(); - - EmitTestGlobalHeader(twOutputCommon); - EmitAssemblyRecord(twOutputCommon, CommonAndImplAssemblyName); - EmitCodeForCommonLibrary(twOutputCommon); - GenerateImplementations(twOutputCommon); - - EmitTestGlobalHeader(twOutputTest); - EmitAssemblyExternRecord(twOutputTest, CommonAndImplAssemblyName); - EmitAssemblyRecord(twOutputTest, TestAssemblyName); - - foreach (var scenario in TestScenario.GetScenarios()) + for (int i = 0; i < 3; i++) { - string scenarioName = scenario.ToString(); + string TestAssemblyName = "GenericContextTest"; + bool testDefaultImplementations = (i == 1) ? true : false; + string defaultImpSuffix = ""; - string constrainedType = AppendSuffixToConstrainedType(scenario, GetConstrainedTypeName(scenario.ConstrainedTypeDefinition), out bool skipScenario); - if (skipScenario) - continue; + if (i != 0) + defaultImpSuffix = "DefaultImp"; - string interfaceTypeSansImplPrefix; - string interfaceMethod; - - string constrainedTypePrefix; - if (constrainedType.Contains("Valuetype")) - constrainedTypePrefix = $"valuetype "; - else - constrainedTypePrefix = $"class "; - - switch (scenario.InterfaceType) - { - case InterfaceType.NonGeneric: - interfaceTypeSansImplPrefix = "IFaceNonGeneric"; - break; - case InterfaceType.GenericOverString: - if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) - interfaceTypeSansImplPrefix = "IFaceGeneric`1"; - else - interfaceTypeSansImplPrefix = "IFaceGeneric`1"; - break; - case InterfaceType.GenericOverObject: - if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) - interfaceTypeSansImplPrefix = "IFaceGeneric`1"; - else - interfaceTypeSansImplPrefix = "IFaceGeneric`1"; - break; - case InterfaceType.CuriouslyRecurringGeneric: - interfaceTypeSansImplPrefix = $"IFaceCuriouslyRecurringGeneric`1<{constrainedTypePrefix}{constrainedType}>"; - break; - default: - throw new Exception("Unexpected value"); - } - - string interfaceMethodRoot; - string interfaceMethodInstantiation = ""; - - switch (scenario.MethodType) + TestAssemblyName = TestAssemblyName + defaultImpSuffix; + if (testDefaultImplementations) { - case MethodType.NormalMethod: - interfaceMethodRoot = "NormalMethod"; - break; - - case MethodType.GenericMethodOverInt: - interfaceMethodRoot = "GenericMethod"; - interfaceMethodInstantiation = ""; - break; - - case MethodType.GenericMethodOverString: - interfaceMethodRoot = "GenericMethod"; - interfaceMethodInstantiation = ""; - break; - - case MethodType.GenericMethodOverTypeParameter: - interfaceMethodRoot = "GenericMethod"; - if (scenario.CallerScenario == CallerMethodScenario.NonGeneric) - continue; - interfaceMethodInstantiation = ""; - break; - - default: - throw new Exception("Unexpected"); + TestAssemblyName = TestAssemblyName + "CallDefaultImp"; } - interfaceMethod = interfaceMethodRoot + interfaceMethodInstantiation; + string outputDir = Path.Combine(args[0], TestAssemblyName); + Directory.CreateDirectory(outputDir); - TextWriter twIL; + using StreamWriter twOutputCommon = new StreamWriter(Path.Combine(outputDir, @$"{CommonAndImplAssemblyName}.il")); + using StreamWriter twOutputTest = new StreamWriter(Path.Combine(outputDir, @$"{TestAssemblyName}.il")); - MethodDesc mdIndividualTestMethod = new MethodDesc(); - string basicTestMethodName = $"Test_{scenarioName}"; - mdIndividualTestMethod.Name = basicTestMethodName; - mdIndividualTestMethod.HasBody = true; - mdIndividualTestMethod.MethodFlags = "public static"; - mdIndividualTestMethod.MethodImpls = null; - mdIndividualTestMethod.ReturnType = "void"; - mdIndividualTestMethod.Arguments = ""; + StringWriter swMainMethodBody = new StringWriter(); + StringWriter swTestClassMethods = new StringWriter(); + EmitTestGlobalHeader(twOutputCommon); + EmitAssemblyRecord(twOutputCommon, CommonAndImplAssemblyName); + EmitCodeForCommonLibrary(twOutputCommon); + GenerateImplementations(twOutputCommon, testDefaultImplementations, defaultImpSuffix); - string expectedString = constrainedTypePrefix + AppendSuffixToConstrainedType(scenario, GetConstrainedTypeName(scenario.ConstrainedTypeDefinition, withImplPrefix: false), out _) + "'" + interfaceTypeSansImplPrefix + "." + interfaceMethodRoot + "'" + interfaceMethodInstantiation; - expectedString = expectedString.Replace(ImplPrefix, ""); + EmitTestGlobalHeader(twOutputTest); + EmitAssemblyExternRecord(twOutputTest, CommonAndImplAssemblyName); + EmitAssemblyRecord(twOutputTest, TestAssemblyName); - if (scenario.CallerScenario == CallerMethodScenario.NonGeneric) - { - EmitTestMethod(); - CallTestEntrypoint($" call void TestEntrypoint::{mdIndividualTestMethod.Name}()"); - } - else + foreach (var scenario in TestScenario.GetScenarios()) { - string methodInstantiation; - switch (scenario.CallerScenario) - { - case CallerMethodScenario.GenericOverInt32: - case CallerMethodScenario.GenericOverString: + string scenarioName = scenario.ToString(); + + string constrainedType = AppendSuffixToConstrainedType(scenario, GetConstrainedTypeName(scenario.ConstrainedTypeDefinition), out bool skipScenario); + if (skipScenario) + continue; - mdIndividualTestMethod.Name = mdIndividualTestMethod.Name + ""; - methodInstantiation = "string"; - if (scenario.CallerScenario == CallerMethodScenario.GenericOverInt32) - methodInstantiation = "int32"; + string interfaceTypeSansImplPrefix; + string interfaceMethod; - expectedString = expectedString.Replace("!!0", $"{methodInstantiation}"); - expectedString = expectedString.Replace(ImplPrefix, ""); - EmitTestMethod(); + string constrainedTypePrefix; + if (constrainedType.Contains("Valuetype")) + constrainedTypePrefix = $"valuetype "; + else + constrainedTypePrefix = $"class "; - CallTestEntrypoint($" call void TestEntrypoint::{basicTestMethodName}<{methodInstantiation}>()"); + switch (scenario.InterfaceType) + { + case InterfaceType.NonGeneric: + interfaceTypeSansImplPrefix = $"IFaceNonGeneric{defaultImpSuffix}"; + break; + case InterfaceType.GenericOverString: + if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) + interfaceTypeSansImplPrefix = $"IFaceGeneric{defaultImpSuffix}`1"; + else + interfaceTypeSansImplPrefix = $"IFaceGeneric{defaultImpSuffix}`1"; break; + case InterfaceType.GenericOverObject: + if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) + interfaceTypeSansImplPrefix = $"IFaceGeneric{defaultImpSuffix}`1"; + else + interfaceTypeSansImplPrefix = $"IFaceGeneric{defaultImpSuffix}`1"; + break; + case InterfaceType.CuriouslyRecurringGeneric: + interfaceTypeSansImplPrefix = $"IFaceCuriouslyRecurringGeneric{defaultImpSuffix}`1<{constrainedTypePrefix}{constrainedType}>"; + break; + default: + throw new Exception("Unexpected value"); + } - case CallerMethodScenario.GenericOverConstrainedType: - mdIndividualTestMethod.Name = $"{mdIndividualTestMethod.Name}<({(interfaceTypeSansImplPrefix.Contains("`") ? "class " : "")}{CommonPrefix}{interfaceTypeSansImplPrefix}) T,U>"; + string interfaceMethodRoot; + string interfaceMethodInstantiation = ""; - expectedString = expectedString.Replace("!!0", $"{constrainedTypePrefix}{constrainedType}"); - expectedString = expectedString.Replace(ImplPrefix, ""); + switch (scenario.MethodType) + { + case MethodType.NormalMethod: + interfaceMethodRoot = "NormalMethod"; + break; - EmitTestMethod(); + case MethodType.GenericMethodOverInt: + interfaceMethodRoot = "GenericMethod"; + interfaceMethodInstantiation = ""; + break; - string callCommand = GetSetBangBang1IfNeeded("string") + $" call void TestEntrypoint::{basicTestMethodName}<{constrainedTypePrefix}{constrainedType},string>()"; - if (scenario.InterfaceType == InterfaceType.GenericOverObject) - callCommand = callCommand + Environment.NewLine + GetSetBangBang1IfNeeded("object") + $" call void TestEntrypoint::{basicTestMethodName}<{constrainedTypePrefix}{constrainedType},object>()"; - CallTestEntrypoint(callCommand); + case MethodType.GenericMethodOverString: + interfaceMethodRoot = "GenericMethod"; + interfaceMethodInstantiation = ""; + break; - string GetSetBangBang1IfNeeded(string bangBang1Expected) - { - if (expectedString.Contains("!!1")) - { - return $" ldstr \"{bangBang1Expected}\"" + Environment.NewLine + " stsfld string [GenericContextCommonCs]Statics::BangBang1Param" + Environment.NewLine; - } - else - { - return ""; - } - } + case MethodType.GenericMethodOverTypeParameter: + interfaceMethodRoot = "GenericMethod"; + if (scenario.CallerScenario == CallerMethodScenario.NonGeneric) + continue; + interfaceMethodInstantiation = ""; break; + default: - throw new Exception("AACLL"); + throw new Exception("Unexpected"); } - } - void CallTestEntrypoint(string callCommand) - { - swMainMethodBody.WriteLine(" .try {"); - swMainMethodBody.WriteLine(callCommand); - swMainMethodBody.WriteLine($" leave.s {scenarioName}Done"); - swMainMethodBody.WriteLine(" } catch [System.Runtime]System.Exception {"); - swMainMethodBody.WriteLine($" stloc.0"); - swMainMethodBody.WriteLine($" ldstr \"{scenarioName}\""); - swMainMethodBody.WriteLine($" ldstr \"{expectedString}\""); - swMainMethodBody.WriteLine($" ldloc.0"); - swMainMethodBody.WriteLine($" callvirt instance string [System.Runtime]System.Object::ToString()"); - swMainMethodBody.WriteLine($" call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string)"); - swMainMethodBody.WriteLine($" leave.s {scenarioName}Done"); - swMainMethodBody.WriteLine(" }"); - swMainMethodBody.WriteLine($"{scenarioName}Done: nop"); - } + interfaceMethod = interfaceMethodRoot + interfaceMethodInstantiation; - // If test scenario requires generic class caller, Create Caller class and make a global method method which calls it - // If test scenario requires generic method caller, create global generic method as required and non-generic test method - // If test scenario requires non-generic method caller, just make global method as caller - // Call callee - // - // Create Callee class - // With callee method that implements scenario - // fill expected value static with string computed based on scenario + exact type of calle class/generic args of callee method - // compute expected result string - - void EmitTestMethod() - { - EmitMethod(swTestClassMethods, mdIndividualTestMethod); - EmitILToCallActualMethod(swTestClassMethods); - swTestClassMethods.WriteLine($" ldstr \"{scenario.ToString()}\""); - swTestClassMethods.WriteLine($" ldstr \"{expectedString}\""); - if (expectedString.Contains("!!1")) + TextWriter twIL; + + MethodDesc mdIndividualTestMethod = new MethodDesc(); + string basicTestMethodName = $"Test_{scenarioName}"; + mdIndividualTestMethod.Name = basicTestMethodName; + mdIndividualTestMethod.HasBody = true; + mdIndividualTestMethod.MethodFlags = "public static"; + mdIndividualTestMethod.MethodImpls = null; + mdIndividualTestMethod.ReturnType = "void"; + mdIndividualTestMethod.Arguments = ""; + + + string expectedString = constrainedTypePrefix + AppendSuffixToConstrainedType(scenario, GetConstrainedTypeName(scenario.ConstrainedTypeDefinition, withImplPrefix: false), out _) + "'" + interfaceTypeSansImplPrefix + "." + interfaceMethodRoot + "'" + interfaceMethodInstantiation; + expectedString = expectedString.Replace(ImplPrefix, ""); + + if (testDefaultImplementations) + expectedString = (interfaceTypeSansImplPrefix + "." + interfaceMethodRoot + interfaceMethodInstantiation).Replace(ImplPrefix, ""); + + if (scenario.CallerScenario == CallerMethodScenario.NonGeneric) { - swTestClassMethods.WriteLine(" ldstr \"!!1\""); - swTestClassMethods.WriteLine(" ldsfld string [GenericContextCommonCs]Statics::BangBang1Param"); - swTestClassMethods.WriteLine(" call instance string [System.Runtime]System.String::Replace(string, string)"); + EmitTestMethod(); + CallTestEntrypoint($" call void TestEntrypoint::{mdIndividualTestMethod.Name}()"); } - swTestClassMethods.WriteLine($" call void {CommonCsPrefix}Statics::CheckForFailure(string,string)"); - swTestClassMethods.WriteLine($" ret"); - twIL = swTestClassMethods; - EmitEndMethod(swTestClassMethods, mdIndividualTestMethod); - } - void EmitILToCallActualMethod(TextWriter twActualIL) - { - // Emit the IL to call the actual method - switch (scenario.Operation) + else { - case OperationTested.Call: - EmitConstrainedPrefix(); - twActualIL.WriteLine($" call void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); - break; + string methodInstantiation; + switch (scenario.CallerScenario) + { + case CallerMethodScenario.GenericOverInt32: + case CallerMethodScenario.GenericOverString: - case OperationTested.Ldftn: - EmitConstrainedPrefix(); - twActualIL.WriteLine($" ldftn void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); - twActualIL.WriteLine($" volatile."); - twActualIL.WriteLine($" stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::FtnHolder"); - twActualIL.WriteLine($" volatile."); - twActualIL.WriteLine($" ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::FtnHolder"); - twActualIL.WriteLine($" calli void()"); - break; + mdIndividualTestMethod.Name = mdIndividualTestMethod.Name + ""; + methodInstantiation = "string"; + if (scenario.CallerScenario == CallerMethodScenario.GenericOverInt32) + methodInstantiation = "int32"; - case OperationTested.CreateDelegate: - twActualIL.WriteLine(" ldnull"); - EmitConstrainedPrefix(); - twActualIL.WriteLine($" ldftn void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); - twActualIL.WriteLine($" newobj instance void [System.Runtime]System.Action::.ctor(object,"); - twActualIL.WriteLine($" native int)"); - twActualIL.WriteLine($" volatile."); - twActualIL.WriteLine($" stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::ActionHolder"); - twActualIL.WriteLine($" volatile."); - twActualIL.WriteLine($" ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::ActionHolder"); - twActualIL.WriteLine($" callvirt instance void[System.Runtime] System.Action::Invoke()"); - break; + expectedString = expectedString.Replace("!!0", $"{methodInstantiation}"); + expectedString = expectedString.Replace(ImplPrefix, ""); + EmitTestMethod(); - default: - throw new Exception(); + CallTestEntrypoint($" call void TestEntrypoint::{basicTestMethodName}<{methodInstantiation}>()"); + break; + + case CallerMethodScenario.GenericOverConstrainedType: + mdIndividualTestMethod.Name = $"{mdIndividualTestMethod.Name}<({(interfaceTypeSansImplPrefix.Contains("`") ? "class " : "")}{CommonPrefix}{interfaceTypeSansImplPrefix}) T,U>"; + + expectedString = expectedString.Replace("!!0", $"{constrainedTypePrefix}{constrainedType}"); + expectedString = expectedString.Replace(ImplPrefix, ""); + + EmitTestMethod(); + + string callCommand = GetSetBangBang1IfNeeded("string") + $" call void TestEntrypoint::{basicTestMethodName}<{constrainedTypePrefix}{constrainedType},string>()"; + if (scenario.InterfaceType == InterfaceType.GenericOverObject) + callCommand = callCommand + Environment.NewLine + GetSetBangBang1IfNeeded("object") + $" call void TestEntrypoint::{basicTestMethodName}<{constrainedTypePrefix}{constrainedType},object>()"; + CallTestEntrypoint(callCommand); + + string GetSetBangBang1IfNeeded(string bangBang1Expected) + { + if (expectedString.Contains("!!1")) + { + return $" ldstr \"{bangBang1Expected}\"" + Environment.NewLine + " stsfld string [GenericContextCommonCs]Statics::BangBang1Param" + Environment.NewLine; + } + else + { + return ""; + } + } + break; + default: + throw new Exception("AACLL"); + } + } + + void CallTestEntrypoint(string callCommand) + { + swMainMethodBody.WriteLine(" .try {"); + swMainMethodBody.WriteLine(callCommand); + swMainMethodBody.WriteLine($" leave.s {scenarioName}Done"); + swMainMethodBody.WriteLine(" } catch [System.Runtime]System.Exception {"); + swMainMethodBody.WriteLine($" stloc.0"); + swMainMethodBody.WriteLine($" ldstr \"{scenarioName}\""); + swMainMethodBody.WriteLine($" ldstr \"{expectedString}\""); + swMainMethodBody.WriteLine($" ldloc.0"); + swMainMethodBody.WriteLine($" callvirt instance string [System.Runtime]System.Object::ToString()"); + swMainMethodBody.WriteLine($" call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string)"); + swMainMethodBody.WriteLine($" leave.s {scenarioName}Done"); + swMainMethodBody.WriteLine(" }"); + swMainMethodBody.WriteLine($"{scenarioName}Done: nop"); } - void EmitConstrainedPrefix() + // If test scenario requires generic class caller, Create Caller class and make a global method method which calls it + // If test scenario requires generic method caller, create global generic method as required and non-generic test method + // If test scenario requires non-generic method caller, just make global method as caller + // Call callee + // + // Create Callee class + // With callee method that implements scenario + // fill expected value static with string computed based on scenario + exact type of calle class/generic args of callee method + // compute expected result string + + void EmitTestMethod() { - if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) - twActualIL.WriteLine($" constrained. !!0"); - else - twActualIL.WriteLine($" constrained. {constrainedTypePrefix}{constrainedType}"); + EmitMethod(swTestClassMethods, mdIndividualTestMethod); + EmitILToCallActualMethod(swTestClassMethods); + swTestClassMethods.WriteLine($" ldstr \"{scenario.ToString()}\""); + swTestClassMethods.WriteLine($" ldstr \"{expectedString}\""); + if (expectedString.Contains("!!1")) + { + swTestClassMethods.WriteLine(" ldstr \"!!1\""); + swTestClassMethods.WriteLine(" ldsfld string [GenericContextCommonCs]Statics::BangBang1Param"); + swTestClassMethods.WriteLine(" call instance string [System.Runtime]System.String::Replace(string, string)"); + } + swTestClassMethods.WriteLine($" call void {CommonCsPrefix}Statics::CheckForFailure(string,string)"); + swTestClassMethods.WriteLine($" ret"); + twIL = swTestClassMethods; + EmitEndMethod(swTestClassMethods, mdIndividualTestMethod); + } + void EmitILToCallActualMethod(TextWriter twActualIL) + { + // Emit the IL to call the actual method + switch (scenario.Operation) + { + case OperationTested.Call: + EmitConstrainedPrefix(); + twActualIL.WriteLine($" call void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); + break; + + case OperationTested.Ldftn: + EmitConstrainedPrefix(); + twActualIL.WriteLine($" ldftn void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); + twActualIL.WriteLine($" volatile."); + twActualIL.WriteLine($" stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::FtnHolder"); + twActualIL.WriteLine($" volatile."); + twActualIL.WriteLine($" ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::FtnHolder"); + twActualIL.WriteLine($" calli void()"); + break; + + case OperationTested.CreateDelegate: + twActualIL.WriteLine(" ldnull"); + EmitConstrainedPrefix(); + twActualIL.WriteLine($" ldftn void class {ImplPrefix}{interfaceTypeSansImplPrefix}::{interfaceMethod}()"); + twActualIL.WriteLine($" newobj instance void [System.Runtime]System.Action::.ctor(object,"); + twActualIL.WriteLine($" native int)"); + twActualIL.WriteLine($" volatile."); + twActualIL.WriteLine($" stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::ActionHolder"); + twActualIL.WriteLine($" volatile."); + twActualIL.WriteLine($" ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) {CommonCsPrefix}Statics::ActionHolder"); + twActualIL.WriteLine($" callvirt instance void[System.Runtime] System.Action::Invoke()"); + break; + + default: + throw new Exception(); + } + + void EmitConstrainedPrefix() + { + if (scenario.CallerScenario == CallerMethodScenario.GenericOverConstrainedType) + twActualIL.WriteLine($" constrained. !!0"); + else + twActualIL.WriteLine($" constrained. {constrainedTypePrefix}{constrainedType}"); + } } } + + ClassDesc mainClass = new ClassDesc(); + mainClass.BaseType = "[System.Runtime]System.Object"; + mainClass.ClassFlags = "public auto ansi"; + mainClass.Name = "TestEntrypoint"; + + EmitClass(twOutputTest, mainClass); + + twOutputTest.Write(swTestClassMethods.ToString()); + + MethodDesc mainMethod = new MethodDesc(); + mainMethod.Name = "Main"; + mainMethod.Arguments = ""; + mainMethod.ReturnType = "int32"; + mainMethod.MethodImpls = null; + mainMethod.HasBody = true; + mainMethod.MethodFlags = "public static"; + + EmitMethod(twOutputTest, mainMethod); + twOutputTest.WriteLine(" .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ("); + twOutputTest.WriteLine(" 01 00 00 00"); + twOutputTest.WriteLine(" )"); + twOutputTest.WriteLine(" .entrypoint"); + twOutputTest.WriteLine(" .locals init (class [System.Runtime]System.Exception V_0)"); + twOutputTest.Write(swMainMethodBody.ToString()); + twOutputTest.WriteLine($" call int32 { CommonCsPrefix}Statics::ReportResults()"); + twOutputTest.WriteLine(" ret"); + + EmitEndMethod(twOutputTest, mainMethod); + EmitEndClass(twOutputTest, mainClass); } - - ClassDesc mainClass = new ClassDesc(); - mainClass.BaseType = "[System.Runtime]System.Object"; - mainClass.ClassFlags = "public auto ansi"; - mainClass.Name = "TestEntrypoint"; - - EmitClass(twOutputTest, mainClass); - - twOutputTest.Write(swTestClassMethods.ToString()); - - MethodDesc mainMethod = new MethodDesc(); - mainMethod.Name = "Main"; - mainMethod.Arguments = ""; - mainMethod.ReturnType = "int32"; - mainMethod.MethodImpls = null; - mainMethod.HasBody = true; - mainMethod.MethodFlags = "public static"; - - EmitMethod(twOutputTest, mainMethod); - twOutputTest.WriteLine(" .entrypoint"); - twOutputTest.WriteLine(" .locals init (class [System.Runtime]System.Exception V_0)"); - twOutputTest.Write(swMainMethodBody.ToString()); - twOutputTest.WriteLine($" call int32 { CommonCsPrefix}Statics::ReportResults()"); - twOutputTest.WriteLine(" ret"); - - EmitEndMethod(twOutputTest, mainMethod); - EmitEndClass(twOutputTest, mainClass); } } } diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextCommonAndImplementation.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextCommonAndImplementation.il similarity index 89% rename from src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextCommonAndImplementation.il rename to src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextCommonAndImplementation.il index 4f4466bd4be71a..2ea6c3e49f2b33 100644 --- a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextCommonAndImplementation.il +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextCommonAndImplementation.il @@ -3,6 +3,7 @@ // THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator .assembly extern System.Console {} +.assembly extern xunit.core {} .assembly extern mscorlib {} .assembly extern System.Runtime {} .assembly extern GenericContextCommonCs {} @@ -25,6 +26,82 @@ .method public newslot virtual abstract static void GenericMethod() {} } +.class interface public abstract auto ansi IFaceNonGenericDefaultImp +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceNonGenericDefaultImp.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceGenericDefaultImp`1 +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceCuriouslyRecurringGenericDefaultImp`1<(class IFaceCuriouslyRecurringGenericDefaultImp`1) T> +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + .class public sealed auto ansi GenericStruct`1 extends[System.Runtime] System.ValueType { diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextCommonAndImplementation.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextCommonAndImplementation.ilproj similarity index 100% rename from src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextCommonAndImplementation.ilproj rename to src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextCommonAndImplementation.ilproj diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextTest.il similarity index 100% rename from src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest.il rename to src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextTest.il diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextTest.ilproj similarity index 83% rename from src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest.ilproj rename to src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextTest.ilproj index 6a22098df49860..e76e7e6e8ea0c5 100644 --- a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest.ilproj +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTest/GenericContextTest.ilproj @@ -7,7 +7,7 @@ - + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.il new file mode 100644 index 00000000000000..a9e9cf4bc0ca81 --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.il @@ -0,0 +1,576 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator +.assembly extern System.Console {} +.assembly extern xunit.core {} +.assembly extern mscorlib {} +.assembly extern System.Runtime {} +.assembly extern GenericContextCommonCs {} +.assembly GenericContextCommonAndImplementation {} +.class interface public abstract auto ansi IFaceNonGeneric +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceGeneric`1 +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceCuriouslyRecurringGeneric`1<(class IFaceCuriouslyRecurringGeneric`1) T> +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceNonGenericDefaultImp +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceNonGenericDefaultImp.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceGenericDefaultImp`1 +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceCuriouslyRecurringGenericDefaultImp`1<(class IFaceCuriouslyRecurringGenericDefaultImp`1) T> +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class public sealed auto ansi GenericStruct`1 + extends[System.Runtime] System.ValueType +{ +} +.class public auto ansi NonGenericClass + extends [System.Runtime]System.Object + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1 +{ + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [System.Runtime]System.Object::.ctor() + IL_0006: ret + } + .method public static void 'IFaceNonGenericDefaultImp.NormalMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.NormalMethod' + .method public static void 'IFaceNonGenericDefaultImp.GenericMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod<[1]>() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken class NonGenericClass + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod' + +} // end of class NonGenericClass +.class public auto ansi sealed NonGenericValuetype + extends [System.Runtime]System.ValueType + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1 +{ + .method public static void 'IFaceNonGenericDefaultImp.NormalMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.NormalMethod' + .method public static void 'IFaceNonGenericDefaultImp.GenericMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod<[1]>() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken valuetype NonGenericValuetype + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod' + +} // end of class NonGenericValuetype +.class public auto ansi GenericClass`1 + extends [System.Runtime]System.Object + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1> +{ + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [System.Runtime]System.Object::.ctor() + IL_0006: ret + } + .method public static void 'IFaceNonGenericDefaultImp.NormalMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.NormalMethod' + .method public static void 'IFaceNonGenericDefaultImp.GenericMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod<[1]>() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldstr "!0" + ldtoken !0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + call instance string [System.Runtime]System.String::Replace(string, string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod<[1]>() + ldtoken class GenericClass`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldstr "!0" + ldtoken !0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + call instance string [System.Runtime]System.String::Replace(string, string) + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod' + +} // end of class GenericClass`1 +.class public auto ansi sealed GenericValuetype`1 + extends [System.Runtime]System.ValueType + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1> +{ + .method public static void 'IFaceNonGenericDefaultImp.NormalMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.NormalMethod' + .method public static void 'IFaceNonGenericDefaultImp.GenericMethod'() cil managed noinlining + { + .override method void [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod<[1]>() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceNonGenericDefaultImp.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceNonGenericDefaultImp.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceGenericDefaultImp`1.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.NormalMethod'" + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.NormalMethod' + .method public static void 'IFaceGenericDefaultImp`1.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod<[1]>() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceGenericDefaultImp`1.GenericMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldstr "!0" + ldtoken !0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + call instance string [System.Runtime]System.String::Replace(string, string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod' + .method public static void 'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'() cil managed noinlining + { + .override method void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod<[1]>() + ldtoken valuetype GenericValuetype`1 + call string [GenericContextCommonCs]Statics::MakeName(valuetype [System.Runtime]System.RuntimeTypeHandle) + ldstr "'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldstr "!0" + ldtoken !0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + call instance string [System.Runtime]System.String::Replace(string, string) + ldstr "<" + ldtoken !!0 + call string [GenericContextCommonCs]Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string,string) + call string[System.Runtime] System.String::Concat(string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } // end of method 'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod' + +} // end of class GenericValuetype`1 diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.ilproj new file mode 100644 index 00000000000000..8f17e9188e06af --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextCommonAndImplementation.ilproj @@ -0,0 +1,13 @@ + + + Library + BuildOnly + false + + + Full + + + + + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.il new file mode 100644 index 00000000000000..ea63d39150b4b4 --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.il @@ -0,0 +1,39513 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator +.assembly extern System.Console {} +.assembly extern xunit.core {} +.assembly extern mscorlib {} +.assembly extern System.Runtime {} +.assembly extern GenericContextCommonCs {} +.assembly extern GenericContextCommonAndImplementation {} +.assembly GenericContextTestDefaultImp {} +.class public auto ansi TestEntrypoint + extends [System.Runtime]System.Object +{ + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static int32 Main() cil managed noinlining + { + .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( + 01 00 00 00 + ) + .entrypoint + .locals init (class [System.Runtime]System.Exception V_0) + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class NonGenericClass'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype NonGenericValuetype'IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1>'IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceNonGenericDefaultImp.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceGenericDefaultImp`1.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "class GenericClass`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "valuetype GenericValuetype`1'IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod'" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + call int32 [GenericContextCommonCs]Statics::ReportResults() + ret + } // end of method Main +} // end of class TestEntrypoint diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.ilproj new file mode 100644 index 00000000000000..a5b82d46b130d6 --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImp/GenericContextTestDefaultImp.ilproj @@ -0,0 +1,13 @@ + + + Exe + + + Full + + + + + + + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.il new file mode 100644 index 00000000000000..d1ef8895883362 --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.il @@ -0,0 +1,160 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator +.assembly extern System.Console {} +.assembly extern xunit.core {} +.assembly extern mscorlib {} +.assembly extern System.Runtime {} +.assembly extern GenericContextCommonCs {} +.assembly GenericContextCommonAndImplementation {} +.class interface public abstract auto ansi IFaceNonGeneric +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceGeneric`1 +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceCuriouslyRecurringGeneric`1<(class IFaceCuriouslyRecurringGeneric`1) T> +{ + .method public newslot virtual abstract static void NormalMethod() {} + .method public newslot virtual abstract static void GenericMethod() {} +} + +.class interface public abstract auto ansi IFaceNonGenericDefaultImp +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceNonGenericDefaultImp.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceGenericDefaultImp`1 +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class interface public abstract auto ansi IFaceCuriouslyRecurringGenericDefaultImp`1<(class IFaceCuriouslyRecurringGenericDefaultImp`1) T> +{ + .method public newslot virtual static void NormalMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.NormalMethod" + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } + .method public newslot virtual static void GenericMethod() + { + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1<" + ldtoken !0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">.GenericMethod<" + ldtoken !!0 + call string[GenericContextCommonCs] Statics::MakeName(valuetype[System.Runtime]System.RuntimeTypeHandle) + ldstr ">" + call string[System.Runtime] System.String::Concat(string, string, string) + call string[System.Runtime] System.String::Concat(string, string, string) + stsfld string [GenericContextCommonCs]Statics::String + ret + } +} + +.class public sealed auto ansi GenericStruct`1 + extends[System.Runtime] System.ValueType +{ +} +.class public auto ansi NonGenericClass + extends [System.Runtime]System.Object + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1 +{ + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [System.Runtime]System.Object::.ctor() + IL_0006: ret + } + +} // end of class NonGenericClass +.class public auto ansi sealed NonGenericValuetype + extends [System.Runtime]System.ValueType + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1 +{ + +} // end of class NonGenericValuetype +.class public auto ansi GenericClass`1 + extends [System.Runtime]System.Object + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1> +{ + .method public hidebysig specialname rtspecialname + instance void .ctor() cil managed + { + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [System.Runtime]System.Object::.ctor() + IL_0006: ret + } + +} // end of class GenericClass`1 +.class public auto ansi sealed GenericValuetype`1 + extends [System.Runtime]System.ValueType + implements IFaceNonGenericDefaultImp, + class IFaceGenericDefaultImp`1, + class IFaceGenericDefaultImp`1, + class IFaceCuriouslyRecurringGenericDefaultImp`1> +{ + +} // end of class GenericValuetype`1 diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.ilproj new file mode 100644 index 00000000000000..8f17e9188e06af --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextCommonAndImplementation.ilproj @@ -0,0 +1,13 @@ + + + Library + BuildOnly + false + + + Full + + + + + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.il b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.il new file mode 100644 index 00000000000000..c4bc38234b6849 --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.il @@ -0,0 +1,39513 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// THIS FILE IS AUTOGENERATED EDIT Generator/Program.cs instead and rerun the generator +.assembly extern System.Console {} +.assembly extern xunit.core {} +.assembly extern mscorlib {} +.assembly extern System.Runtime {} +.assembly extern GenericContextCommonCs {} +.assembly extern GenericContextCommonAndImplementation {} +.assembly GenericContextTestDefaultImpCallDefaultImp {} +.class public auto ansi TestEntrypoint + extends [System.Runtime]System.Object +{ + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]NonGenericClass + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]NonGenericValuetype + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1> + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter<([GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldstr "!!1" + ldsfld string [GenericContextCommonCs]Statics::BangBang1Param + call instance string [System.Runtime]System.String::Replace(string, string) + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U>() cil managed noinlining + { + ldnull + constrained. !!0 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter<(class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>) T,U> + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceNonGenericDefaultImp::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceGenericDefaultImp`1::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::NormalMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString + .method public static void Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. class [GenericContextCommonAndImplementation]GenericClass`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + call void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + volatile. + stsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + volatile. + ldsfld native int modreq([System.Runtime]System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::FtnHolder + calli void() + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static void Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() cil managed noinlining + { + ldnull + constrained. valuetype [GenericContextCommonAndImplementation]GenericValuetype`1 + ldftn void class [GenericContextCommonAndImplementation]IFaceCuriouslyRecurringGenericDefaultImp`1>::GenericMethod() + newobj instance void [System.Runtime]System.Action::.ctor(object, + native int) + volatile. + stsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + volatile. + ldsfld class [System.Runtime] System.Action modreq([System.Runtime] System.Runtime.CompilerServices.IsVolatile) [GenericContextCommonCs]Statics::ActionHolder + callvirt instance void[System.Runtime] System.Action::Invoke() + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string) + ret + } // end of method Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter + .method public static int32 Main() cil managed noinlining + { + .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( + 01 00 00 00 + ) + .entrypoint + .locals init (class [System.Runtime]System.Exception V_0) + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_NonGenericNonGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverStructGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverGenericStructOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_NonGeneric_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_NormalMethodDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverIntDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverStringDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + ldstr "string" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,string>() + ldstr "object" + stsfld string [GenericContextCommonCs]Statics::BangBang1Param + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter,object>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericClass_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter,string>() + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod>" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverReferenceType_ClassAGenericValuetype_GenericOverConstrainedType_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverInt32_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethod" + ldstr "IFaceNonGenericDefaultImp.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverInt" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverString" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceNonGenericDefaultImp.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_NonGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverString_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethod" + ldstr "IFaceGenericDefaultImp`1.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverInt" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverString" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameter" + ldstr "IFaceGenericDefaultImp`1.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_GenericOverObject_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethod" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.NormalMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_NormalMethodDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverInt" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverIntDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverString" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverStringDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericClass_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Call_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +Ldftn_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + .try { + call void TestEntrypoint::Test_CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter() + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } catch [System.Runtime]System.Exception { + stloc.0 + ldstr "CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameter" + ldstr "IFaceCuriouslyRecurringGenericDefaultImp`1>.GenericMethod" + ldloc.0 + callvirt instance string [System.Runtime]System.Object::ToString() + call void [GenericContextCommonCs]Statics::CheckForFailure(string,string,string) + leave.s CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone + } +CreateDelegate_GenericOverTypeParameterGenericValuetype_GenericOverString_CuriouslyRecurringGeneric_GenericMethodOverTypeParameterDone: nop + call int32 [GenericContextCommonCs]Statics::ReportResults() + ret + } // end of method Main +} // end of class TestEntrypoint diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.ilproj b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.ilproj new file mode 100644 index 00000000000000..d75af9b8dafdfb --- /dev/null +++ b/src/tests/Loader/classloader/StaticVirtualMethods/GenericContext/GenericContextTestDefaultImpCallDefaultImp/GenericContextTestDefaultImpCallDefaultImp.ilproj @@ -0,0 +1,13 @@ + + + Exe + + + Full + + + + + + + diff --git a/src/tests/Loader/classloader/StaticVirtualMethods/NegativeTestCases/MethodFlags.il b/src/tests/Loader/classloader/StaticVirtualMethods/NegativeTestCases/MethodFlags.il index 67b60d75bbee28..7311321ff063e9 100644 --- a/src/tests/Loader/classloader/StaticVirtualMethods/NegativeTestCases/MethodFlags.il +++ b/src/tests/Loader/classloader/StaticVirtualMethods/NegativeTestCases/MethodFlags.il @@ -31,17 +31,6 @@ } // end of method Method } // end of class BaseScenario2 -.class interface public abstract auto ansi InterfaceScenario3 -{ - // Default implementation not allowed - .method public newslot virtual static int32 Method() cil managed noinlining - { - ldc.i4.0 - ret - } // end of method Method -} // end of class InterfaceScenario1 - - .class public auto ansi TestEntrypoint extends [System.Runtime]System.Object { @@ -59,13 +48,6 @@ ret } // end of method Test_Scenario1 - .method public static void Test_Scenario3() cil managed noinlining - { - ldtoken InterfaceScenario3 - pop - ret - } // end of method Test_Scenario1 - .method public static int32 Main() cil managed noinlining { .custom instance void [xunit.core]Xunit.FactAttribute::.ctor() = ( @@ -111,25 +93,6 @@ VirtualFlagOnClassStaticDone: nop } AbstractFlagOnClassStaticDone: nop - .try { - call void TestEntrypoint::Test_Scenario3() - ldstr "Default implementation of static virtual interface method" - ldstr "TypeLoadException" - ldstr "Did not throw exception" - call void [TypeHierarchyCommonCs]Statics::CheckForFailure(string,string,string) - leave.s DefaultImplementationProhibitedDone - } catch [System.Runtime]System.Exception { - stloc.0 - ldstr "Default implementation of static virtual interface method" - ldstr "TypeLoadException" - ldloc.0 - callvirt instance class [System.Runtime]System.Type [System.Runtime]System.Exception::GetType() - callvirt instance string [System.Runtime]System.Reflection.MemberInfo::get_Name() - call void [TypeHierarchyCommonCs]Statics::CheckForFailure(string,string,string) - leave.s DefaultImplementationProhibitedDone - } -DefaultImplementationProhibitedDone: nop - call int32 [TypeHierarchyCommonCs]Statics::ReportResults() ret } // end of method Main } // end of class TestEntrypoint diff --git a/src/tests/build.cmd b/src/tests/build.cmd index c5ac3aec889083..c8df0dc64cc9ff 100644 --- a/src/tests/build.cmd +++ b/src/tests/build.cmd @@ -117,6 +117,7 @@ if /i "%1" == "-priority" (set __Priority=%2&shift&set processedArgs if /i "%1" == "allTargets" (set "__BuildNeedTargetArg=/p:CLRTestBuildAllTargets=%1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if /i "%1" == "-excludemonofailures" (set __Mono=1&set processedArgs=!processedArgs!&shift&goto Arg_Loop) if /i "%1" == "-mono" (set __Mono=1&set processedArgs=!processedArgs!&shift&goto Arg_Loop) +if /i "%1" == "mono" (set __Mono=1&set processedArgs=!processedArgs!&shift&goto Arg_Loop) if /i "%1" == "--" (set processedArgs=!processedArgs! %1&shift&goto Arg_Loop) if [!processedArgs!]==[] ( diff --git a/src/tests/build.proj b/src/tests/build.proj index 66bfd1755ac3ef..3c6ebde8225012 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -197,6 +197,8 @@ $(BuildDir)\apk $(XUnitTestBinBase)$(CategoryWithSlash)\$(Category).apk False + diagnostics_tracing + 127.0.0.1:9000,nosuspend,listen True $(ArtifactsBinDir)microsoft.netcore.app.runtime.android-$(TargetArchitecture)\$(Configuration)\runtimes\android-$(TargetArchitecture)\ arm64-v8a @@ -244,6 +246,8 @@ RuntimeIdentifier="$(RuntimeIdentifier)" ProjectName="$(Category)" MonoRuntimeHeaders="$(MicrosoftNetCoreAppRuntimePackDir)/native/include/mono-2.0" + RuntimeComponents="$(RuntimeComponents)" + DiagnosticPorts="$(DiagnosticPorts)" StripDebugSymbols="$(StripDebugSymbols)" ForceInterpreter="$(MonoInterp)" AppDir="$(BuildDir)" @@ -386,13 +390,15 @@ + + @(MergedAssemblyMarkerPaths->'%(RootDir)%(Directory)AppBundle/**/*.$(TestScriptExtension)') - + @@ -442,7 +448,7 @@ DependsOnTargets="BuildManagedTestGroups" Condition="'$(__BuildTestWrappersOnly)' != '1' and '$(__GenerateLayoutOnly)' != '1' and '$(__SkipManaged)' != '1' and !$(MonoAot) and !$(MonoFullAot)" /> - + @@ -477,6 +483,9 @@ $(GroupBuildCmd) /nodeReuse:false $(GroupBuildCmd) /maxcpucount $(GroupBuildCmd) /bl:$(ArtifactsDir)/log/$(Configuration)/InnerManagedTestBuild.$(__TestGroupToBuild).binlog + $(GroupBuildCmd) "/p:DefaultBuildAllTarget=BuildNativeAot" + $(GroupBuildCmd) "/p:IlcMultiModule=true" + $(GroupBuildCmd) "/p:BuildNativeAotFrameworkObjects=true" @@ -557,14 +566,20 @@ AfterTargets="ManagedBuild" Condition="'$(__BuildTestWrappersOnly)' != '1' and '$(__GenerateLayoutOnly)' != '1' and '$(__CopyNativeTestBinaries)' != '1' and ($(MonoAot) or $(MonoFullAot))" /> - - - - <_OptimizeFlagValue Condition="'$(Configuration)' == 'Checked' or '$(Configuration)' == 'Release'">true - - + + + + + + + + + + + + Properties="@(CreateLibProperty)" /> - diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 49579ecd10dbc7..484f1e6d6db960 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -189,6 +189,9 @@ TraceEvent can't parse unaligned floats on arm32 + + https://github.com/dotnet/runtime/issues/64986 + TraceEvent can't parse unaligned floats on arm32 @@ -3394,6 +3397,53 @@ needs triage + + + System.Threading.Thread.UnsafeStart not supported + + + System.Threading.Thread.UnsafeStart not supported + + + System.Threading.Thread.UnsafeStart not supported + + + System.Threading.Thread.UnsafeStart not supported + + + System.Threading.Thread.UnsafeStart not supported + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient and system.diagnostics.process not supported + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient and system.diagnostics.process not supported + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient and system.diagnostics.process not supported + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + + + Could not load legacy Microsoft.Diagnostics.Tools.RuntimeClient + @@ -3559,14 +3609,11 @@ https://github.com/dotnet/runtime/issues/54906 - - https://github.com/dotnet/runtime/issues/52763 - https://github.com/dotnet/runtime/issues/54974 - - needs triage + + Need to update with Microsoft.Diagnostics.NETCore.Client port https://github.com/dotnet/runtime/pull/64358 https://github.com/dotnet/runtime/issues/53077 diff --git a/src/tests/nativeaot/Directory.Build.props b/src/tests/nativeaot/Directory.Build.props index fc766c7ca3ad4a..c80fd3b623f2f2 100644 --- a/src/tests/nativeaot/Directory.Build.props +++ b/src/tests/nativeaot/Directory.Build.props @@ -1,7 +1,7 @@ - true + link diff --git a/src/tests/nativeaot/SmokeTests/Dataflow/Dataflow.csproj b/src/tests/nativeaot/SmokeTests/Dataflow/Dataflow.csproj index a2f7c8a0639046..7f97c2260b4f9d 100644 --- a/src/tests/nativeaot/SmokeTests/Dataflow/Dataflow.csproj +++ b/src/tests/nativeaot/SmokeTests/Dataflow/Dataflow.csproj @@ -6,7 +6,7 @@ true - true + true diff --git a/src/tests/nativeaot/SmokeTests/DeadCodeElimination/DeadCodeElimination.csproj b/src/tests/nativeaot/SmokeTests/DeadCodeElimination/DeadCodeElimination.csproj index 52b5172db82453..9efd44e913184c 100644 --- a/src/tests/nativeaot/SmokeTests/DeadCodeElimination/DeadCodeElimination.csproj +++ b/src/tests/nativeaot/SmokeTests/DeadCodeElimination/DeadCodeElimination.csproj @@ -6,7 +6,7 @@ true - true + true diff --git a/src/tests/nativeaot/SmokeTests/DynamicGenerics/DynamicGenerics.csproj b/src/tests/nativeaot/SmokeTests/DynamicGenerics/DynamicGenerics.csproj index a1f95483ed6ef9..fb40cdf7cd10cb 100644 --- a/src/tests/nativeaot/SmokeTests/DynamicGenerics/DynamicGenerics.csproj +++ b/src/tests/nativeaot/SmokeTests/DynamicGenerics/DynamicGenerics.csproj @@ -4,22 +4,14 @@ BuildAndRun 0 true - true - portable - true + true - - - - ]]> - - @@ -29,9 +21,5 @@ - - - PreserveNewest - diff --git a/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj b/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj index 22911d34a257e8..15bfab87f5776d 100644 --- a/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj +++ b/src/tests/nativeaot/SmokeTests/FrameworkStrings/UseSystemResourceKeys.csproj @@ -6,18 +6,12 @@ $(DefineConstants);RESOURCE_KEYS - true + true - - - - ]]> - - diff --git a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/X64Baseline.csproj b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/X64Baseline.csproj index c08324ae84ec64..e49eb84629044d 100644 --- a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/X64Baseline.csproj +++ b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/X64Baseline.csproj @@ -5,7 +5,6 @@ 0 true true - true $(DefineConstants);BASELINE_INTRINSICS diff --git a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64NonVex.csproj b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64NonVex.csproj index 76a1896a961ec0..9c6dfc29a3b918 100644 --- a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64NonVex.csproj +++ b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64NonVex.csproj @@ -5,19 +5,12 @@ 0 true true - true $(DefineConstants);NON_VEX_INTRINSICS - - - - ]]> - - diff --git a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64Vex.csproj b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64Vex.csproj index b3a7e88134f8ed..8ef7fb3a0b7b2b 100644 --- a/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64Vex.csproj +++ b/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/x64Vex.csproj @@ -5,19 +5,12 @@ 0 true true - true $(DefineConstants);VEX_INTRINSICS - - - - ]]> - - + // It's important we only use one canonical method and that method is not used from the consumption EXE. + if (GenericClass.IsArrayOfT(null)) + return false; + if (!GenericClass.IsArrayOfT(new string[0])) + return false; + + // Force the existence of a generic dictionary for GenericClass> + // Here we test a canonical method that will be used from the consumption EXE too. + if (!GenericClass>.IsT(new GenericStruct())) + return false; + + return true; + } + + public class GenericClass + { + [MethodImpl(MethodImplOptions.NoInlining)] + public static bool IsT(object o) => o is T; + [MethodImpl(MethodImplOptions.NoInlining)] + public static bool IsArrayOfT(object o) => o is T[]; + [MethodImpl(MethodImplOptions.NoInlining)] + public static bool IsMdArrayOfT(object o) => o is T[,]; + } + + public struct GenericStruct + { + public T Value; + } + + public class GenericClassWithTLS + { + [ThreadStatic] + public static int ThreadStaticInt; + } + + public static bool MethodThatUsesGenericWithTLS() + { + GenericClassWithTLS.ThreadStaticInt += 1; + return GenericClassWithTLS.ThreadStaticInt == 1; + } + + public enum MyEnum + { + One, Two + } +} diff --git a/src/tests/nativeaot/SmokeTests/MultiModule/Library.csproj b/src/tests/nativeaot/SmokeTests/MultiModule/Library.csproj new file mode 100644 index 00000000000000..96480bc3e86593 --- /dev/null +++ b/src/tests/nativeaot/SmokeTests/MultiModule/Library.csproj @@ -0,0 +1,10 @@ + + + Library + SharedLibrary + true + + + + + diff --git a/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.cs b/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.cs new file mode 100644 index 00000000000000..22b37c36dd5979 --- /dev/null +++ b/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.cs @@ -0,0 +1,90 @@ +// 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.Globalization; +using System.Reflection; +using System.Runtime.CompilerServices; + +public class ReflectionTest +{ + const int Pass = 100; + const int Fail = -1; + + public static int Main() + { + if (TestStaticBases() == Fail) + return Fail; + + if (TestSharedGenerics() == Fail) + return Fail; + + if (TestGenericTLS() == Fail) + return Fail; + + if (TestInjectedEnumMethods() == Fail) + return Fail; + + return Pass; + } + + public static int TestStaticBases() + { + Console.WriteLine("Testing static bases in library code are available.."); + MultiModuleLibrary.ReturnValue = 50; + MultiModuleLibrary.ThreadStaticInt = 50; + + MultiModuleLibrary.StaticString = MultiModuleLibrary.ReturnValue.ToString() + MultiModuleLibrary.ThreadStaticInt.ToString(); + if (MultiModuleLibrary.StaticString != "5050") + return Fail; + + if (MultiModuleLibrary.ReturnValue + MultiModuleLibrary.ThreadStaticInt != 100) + return Fail; + + return Pass; + } + + public static int TestSharedGenerics() + { + Console.WriteLine("Testing generic dictionaries can be folded properly.."); + + // Use a generic dictionary that also exists in the library + if (!MultiModuleLibrary.GenericClass.IsT("Hello")) + return Fail; + if (!MultiModuleLibrary.GenericClass.IsMdArrayOfT(new string[0, 0])) + return Fail; + + if (!MultiModuleLibrary.GenericClass>.IsArrayOfT(new MultiModuleLibrary.GenericStruct[0])) + return Fail; + if (!MultiModuleLibrary.GenericClass>.IsT(new MultiModuleLibrary.GenericStruct())) + return Fail; + + if (!MultiModuleLibrary.MethodThatUsesGenerics()) + return Fail; + + return Pass; + } + + public static int TestGenericTLS() + { + Console.WriteLine("Testing thread statics on generic types shared between modules are shared properly.."); + + if (!MultiModuleLibrary.MethodThatUsesGenericWithTLS()) + return Fail; + + MultiModuleLibrary.GenericClassWithTLS.ThreadStaticInt += 1; + if (MultiModuleLibrary.GenericClassWithTLS.ThreadStaticInt != 2) + return Fail; + + return Pass; + } + + public static int TestInjectedEnumMethods() + { + Console.WriteLine("Testing context-injected methods on enums.."); + if (!MultiModuleLibrary.MyEnum.One.Equals(MultiModuleLibrary.MyEnum.One)) + return Fail; + + return Pass; + } +} diff --git a/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.csproj b/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.csproj new file mode 100644 index 00000000000000..7ab77cd0c702ec --- /dev/null +++ b/src/tests/nativeaot/SmokeTests/MultiModule/MultiModule.csproj @@ -0,0 +1,33 @@ + + + Exe + BuildAndRun + 0 + true + + + true + true + + + + + + + + + + + + + + + <_ResolvedProjectReferencePaths Remove="@(ObjFiles)" /> + + + diff --git a/src/tests/nativeaot/SmokeTests/PInvoke/PInvoke.csproj b/src/tests/nativeaot/SmokeTests/PInvoke/PInvoke.csproj index 3d7e77f5e9b5ed..0179e0d922c0d9 100644 --- a/src/tests/nativeaot/SmokeTests/PInvoke/PInvoke.csproj +++ b/src/tests/nativeaot/SmokeTests/PInvoke/PInvoke.csproj @@ -4,7 +4,7 @@ true - true + true diff --git a/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.csproj b/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.csproj index df0f69f5374c15..f0f876b0bb4ad5 100644 --- a/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.csproj +++ b/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.csproj @@ -4,18 +4,12 @@ BuildAndRun 0 true - true + true - - - - ]]> - - diff --git a/src/tests/nativeaot/SmokeTests/Reflection/Reflection.csproj b/src/tests/nativeaot/SmokeTests/Reflection/Reflection.csproj index 1523073f7f9d71..f4c607f5d4dbdc 100644 --- a/src/tests/nativeaot/SmokeTests/Reflection/Reflection.csproj +++ b/src/tests/nativeaot/SmokeTests/Reflection/Reflection.csproj @@ -7,7 +7,7 @@ $(DefineConstants);REFLECTION_FROM_USAGE - true + true diff --git a/src/tests/nativeaot/SmokeTests/Reflection/Reflection_ReflectedOnly.csproj b/src/tests/nativeaot/SmokeTests/Reflection/Reflection_ReflectedOnly.csproj index 82c15f11dda895..48c56315c08b84 100644 --- a/src/tests/nativeaot/SmokeTests/Reflection/Reflection_ReflectedOnly.csproj +++ b/src/tests/nativeaot/SmokeTests/Reflection/Reflection_ReflectedOnly.csproj @@ -6,19 +6,13 @@ true - true + true - - - - ]]> - - diff --git a/src/tests/nativeaot/SmokeTests/SharedLibrary/SharedLibrary.csproj b/src/tests/nativeaot/SmokeTests/SharedLibrary/SharedLibrary.csproj index 04616906f4f9f6..84d04824fe8a6b 100644 --- a/src/tests/nativeaot/SmokeTests/SharedLibrary/SharedLibrary.csproj +++ b/src/tests/nativeaot/SmokeTests/SharedLibrary/SharedLibrary.csproj @@ -4,18 +4,10 @@ BuildAndRun 0 true - - - - - - Library Shared - ]]> - + nul diff --git a/src/tests/run.cmd b/src/tests/run.cmd index 156ee282284dbc..05af04071ea42d 100644 --- a/src/tests/run.cmd +++ b/src/tests/run.cmd @@ -61,8 +61,6 @@ if /i "%1" == "ilasmroundtrip" (set __IlasmRoundTrip=1& if /i "%1" == "printlastresultsonly" (set __PrintLastResultsOnly=1&shift&goto Arg_Loop) if /i "%1" == "runcrossgen2tests" (set RunCrossGen2=true&shift&goto Arg_Loop) -if /i "%1" == "runnativeaottests" (set RunNativeAot=true&shift&goto Arg_Loop) -if /i "%1" == "nativeaotmultimodule" (set NativeAotMultimodule=true&shift&goto Arg_Loop) REM This test feature is currently intentionally undocumented if /i "%1" == "runlargeversionbubblecrossgen2tests" (set RunCrossGen2=true&set CrossgenLargeVersionBubble=true&shift&goto Arg_Loop) if /i "%1" == "link" (set DoLink=true&set ILLINK=%2&shift&shift&goto Arg_Loop) @@ -74,6 +72,7 @@ if /i "%1" == "gcstresslevel" (set COMPlus_GCStress=%2 if /i "%1" == "runincontext" (set RunInUnloadableContext=1&shift&goto Arg_Loop) if /i "%1" == "tieringtest" (set TieringTest=1&shift&goto Arg_Loop) +if /i "%1" == "runnativeaottests" (set RunNativeAot=1&shift&goto Arg_Loop) if /i not "%1" == "msbuildargs" goto SkipMsbuildArgs :: All the rest of the args will be collected and passed directly to msbuild. @@ -141,14 +140,6 @@ if defined CrossgenLargeVersionBubble ( set __RuntestPyArgs=%__RuntestPyArgs% --large_version_bubble ) -if defined RunNativeAot ( - set __RuntestPyArgs=%__RuntestPyArgs% --run_nativeaot_tests -) - -if defined NativeAotMultimodule ( - set __RuntestPyArgs=%__RuntestPyArgs% --nativeaot_multimodule -) - if defined __PrintLastResultsOnly ( set __RuntestPyArgs=%__RuntestPyArgs% --analyze_results_only ) @@ -161,6 +152,10 @@ if defined TieringTest ( set __RuntestPyArgs=%__RuntestPyArgs% --tiering_test ) +if defined RunNativeAot ( + set __RuntestPyArgs=%__RuntestPyArgs% --run_nativeaot_tests +) + REM Find python and set it to the variable PYTHON set _C=-c "import sys; sys.stdout.write(sys.executable)" (py -3 %_C% || py -2 %_C% || python3 %_C% || python2 %_C% || python %_C%) > %TEMP%\pythonlocation.txt 2> NUL diff --git a/src/tests/run.py b/src/tests/run.py index d0275baca9297f..aab137bafa08f7 100755 --- a/src/tests/run.py +++ b/src/tests/run.py @@ -92,8 +92,6 @@ parser.add_argument("--gcsimulator", dest="gcsimulator", action="store_true", default=False) parser.add_argument("--ilasmroundtrip", dest="ilasmroundtrip", action="store_true", default=False) parser.add_argument("--run_crossgen2_tests", dest="run_crossgen2_tests", action="store_true", default=False) -parser.add_argument("--run_nativeaot_tests", dest="run_nativeaot_tests", action="store_true", default=False) -parser.add_argument("--nativeaot_multimodule", dest="nativeaot_multimodule", action="store_true", default=False) parser.add_argument("--large_version_bubble", dest="large_version_bubble", action="store_true", default=False) parser.add_argument("--skip_test_run", dest="skip_test_run", action="store_true", default=False, help="Does not run tests.") parser.add_argument("--sequential", dest="sequential", action="store_true", default=False) @@ -103,6 +101,7 @@ parser.add_argument("--limited_core_dumps", dest="limited_core_dumps", action="store_true", default=False) parser.add_argument("--run_in_context", dest="run_in_context", action="store_true", default=False) parser.add_argument("--tiering_test", dest="tiering_test", action="store_true", default=False) +parser.add_argument("--run_nativeaot_tests", dest="run_nativeaot_tests", action="store_true", default=False) ################################################################################ # Globals @@ -871,16 +870,6 @@ def run_tests(args, print("Setting RunCrossGen2=true") os.environ["RunCrossGen2"] = "true" - if args.run_nativeaot_tests: - print("Running tests Native AOT") - print("Setting RunNativeAot=true") - os.environ["RunNativeAot"] = "true" - - if args.nativeaot_multimodule: - print("Native AOT will be compiled in multimodule mode") - print("Setting NativeAotMultimodule=true") - os.environ["NativeAotMultimodule"] = "true" - if args.large_version_bubble: print("Large Version Bubble enabled") os.environ["LargeVersionBubble"] = "true" @@ -902,6 +891,10 @@ def run_tests(args, print("Running test repeatedly to promote methods to tier1") os.environ["CLRCustomTestLauncher"] = args.tieringtest_script_path + if args.run_nativeaot_tests: + print("Running tests NativeAOT") + os.environ["CLRCustomTestLauncher"] = args.nativeaottest_script_path + # Set __TestTimeout environment variable, which is the per-test timeout in milliseconds. # This is read by the test wrapper invoker, in src\tests\Common\Coreclr.TestWrapper\CoreclrTestWrapperLib.cs. print("Setting __TestTimeout=%s" % str(per_test_timeout)) @@ -1003,16 +996,6 @@ def setup_args(args): lambda unused: True, "Error setting run_crossgen2_tests") - coreclr_setup_args.verify(args, - "run_nativeaot_tests", - lambda unused: True, - "Error setting run_nativeaot_tests") - - coreclr_setup_args.verify(args, - "nativeaot_multimodule", - lambda unused: True, - "Error setting nativeaot_multimodule") - coreclr_setup_args.verify(args, "skip_test_run", lambda arg: True, @@ -1043,6 +1026,12 @@ def setup_args(args): lambda arg: True, "Error setting tiering_test") + coreclr_setup_args.verify(args, + "run_nativeaot_tests", + lambda arg: True, + "Error setting run_nativeaot_tests") + + print("host_os : %s" % coreclr_setup_args.host_os) print("arch : %s" % coreclr_setup_args.arch) print("build_type : %s" % coreclr_setup_args.build_type) @@ -1056,6 +1045,7 @@ def setup_args(args): coreclr_setup_args.coreclr_tests_src_dir = os.path.join(coreclr_setup_args.runtime_repo_location, "src", "tests") coreclr_setup_args.runincontext_script_path = os.path.join(coreclr_setup_args.coreclr_tests_src_dir, "Common", "scripts", "runincontext%s" % (".cmd" if coreclr_setup_args.host_os == "windows" else ".sh")) coreclr_setup_args.tieringtest_script_path = os.path.join(coreclr_setup_args.coreclr_tests_src_dir, "Common", "scripts", "tieringtest%s" % (".cmd" if coreclr_setup_args.host_os == "windows" else ".sh")) + coreclr_setup_args.nativeaottest_script_path = os.path.join(coreclr_setup_args.coreclr_tests_src_dir, "Common", "scripts", "nativeaottest%s" % (".cmd" if coreclr_setup_args.host_os == "windows" else ".sh")) coreclr_setup_args.logs_dir = os.path.join(coreclr_setup_args.artifacts_location, "log") return coreclr_setup_args diff --git a/src/tests/run.sh b/src/tests/run.sh index a920fc580b5cae..15663e66e5e50f 100755 --- a/src/tests/run.sh +++ b/src/tests/run.sh @@ -18,7 +18,6 @@ function print_usage { echo ' --disableEventLogging : Disable the events logged by both VM and Managed Code' echo ' --sequential : Run tests sequentially (default is to run in parallel).' echo ' --runcrossgen2tests : Runs the ReadyToRun tests compiled with Crossgen2' - echo ' --runnativeaottests : Runs the ready to run tests compiled with Native AOT' echo ' --jitstress= : Runs the tests with COMPlus_JitStress=n' echo ' --jitstressregs= : Runs the tests with COMPlus_JitStressRegs=n' echo ' --jitminopts : Runs the tests with COMPlus_JITMinOpts=1' @@ -36,6 +35,7 @@ function print_usage { echo ' --printLastResultsOnly : Print the results of the last run' echo ' --runincontext : Run each tests in an unloadable AssemblyLoadContext' echo ' --tieringtest : Run each test to encourage tier1 rejitting' + echo ' --runnativeaottests : Run NativeAOT compiled tests' echo ' --limitedDumpGeneration : ' } @@ -99,6 +99,7 @@ printLastResultsOnly= runSequential=0 runincontext=0 tieringtest=0 +nativeaottest=0 for i in "$@" do @@ -168,9 +169,6 @@ do --runcrossgen2tests) export RunCrossGen2=1 ;; - --runnativeaottests) - export RunNativeAot=1 - ;; --sequential) runSequential=1 ;; @@ -201,6 +199,9 @@ do --tieringtest) tieringtest=1 ;; + --runnativeaottests) + nativeaottest=1 + ;; *) echo "Unknown switch: $i" print_usage @@ -285,10 +286,6 @@ if [[ -n "$RunCrossGen2" ]]; then runtestPyArguments+=("--run_crossgen2_tests") fi -if [[ -n "$RunNativeAot" ]]; then - runtestPyArguments+=("--run_nativeaot_tests") -fi - if [[ "$limitedCoreDumps" == "ON" ]]; then runtestPyArguments+=("--limited_core_dumps") fi @@ -303,6 +300,11 @@ if [[ "$tieringtest" -ne 0 ]]; then runtestPyArguments+=("--tieringtest") fi +if [[ "$nativeaottest" -ne 0 ]]; then + echo "Running NativeAOT compiled tests" + runtestPyArguments+=("--run_nativeaot_tests") +fi + # Default to python3 if it is installed __Python=python if command -v python3 &>/dev/null; then diff --git a/src/tests/tracing/eventpipe/common/IpcUtils.cs b/src/tests/tracing/eventpipe/common/IpcUtils.cs index b3448f704f238b..0640e7e898c31a 100644 --- a/src/tests/tracing/eventpipe/common/IpcUtils.cs +++ b/src/tests/tracing/eventpipe/common/IpcUtils.cs @@ -446,6 +446,11 @@ public static Stream GetStandardTransport(int processId) namedPipe.Connect(3); return namedPipe; } + else if (OperatingSystem.IsAndroid()) + { + TcpClient client = new TcpClient("127.0.0.1", 9000); + return client.GetStream(); + } else { string ipcPort; diff --git a/src/tests/xunit-wrappers.targets b/src/tests/xunit-wrappers.targets index 476fd05078ef15..8ff171228859b2 100644 --- a/src/tests/xunit-wrappers.targets +++ b/src/tests/xunit-wrappers.targets @@ -259,6 +259,7 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). +